#include <stdio.h>
#include <stdlib.h>
void main( )
{
char c[128],c1[128],op;
int x=0,y=0,z=0,i=0,j;
printf("\n電卓(Ver.1.0)\n");
printf("\n計算式: "); gets(c);
for( j=0; c>='0' && c<='9'; i++ )
{ c1[j]=c; j++; }
c1[j]='\0'; x=atoi(c1);
op=c; i++;
for( j=0; c>='0' && c<='9'; i++ )
{ c1[j]=c; j++; }
c1[j]='\0'; y=atoi(c1);
switch( op )
{
case '+': z=x+y; break;
case '-': z=x-y; break;
case '*': z=x*y; break;
case '/': z=x/y; break;
case '%': z=x%y; break;
default : printf("\a");
}
printf("\n答: %d\n",z)
このプログラムに、構造体、2次元配列、ポインタ、ファイル処理のどれかを入れてプログラムを作ることは可能ですか?
関数2つ以上でお願いします。
switch文に入れることは可能ですか
Re: switch文に入れることは可能ですか
・コードはBBcodeを有効にした状態でcodeタグで囲み、かつ適切なインデントをしていただけると、見やすくてありがたいです。
・炎王龍さんの質問と内容が似ているようです。もしも同一人物であれば、名前の統一をお願いします。別人ならすみません。
・炎王龍さんの質問と内容が似ているようです。もしも同一人物であれば、名前の統一をお願いします。別人ならすみません。
可能です。以下に例を示します。グラードン さんが書きました:このプログラムに、構造体、2次元配列、ポインタ、ファイル処理のどれかを入れてプログラムを作ることは可能ですか?
関数2つ以上でお願いします。
#include <stdio.h>
#include <stdlib.h>
void call_program(void);
int main(void)
{
call_program();
return 0;
}
void main_program( )
{
struct
{
char c[2][128],op;
int x,y,z,i,j;
} k;
char *pointer=k.c[0];
char *pointer1=k.c[1];
char *pointer_for_op=&k.op;
int *pointer_for_x=&k.x;
int *pointer_for_y=&k.y;
int *pointer_for_z=&k.z;
int *pointer_for_i=&k.i;
int *pointer_for_j=&k.j;
*pointer_for_x=*pointer_for_y=*pointer_for_z=*pointer_for_i=0;
printf("\n電卓(Ver.1.0)\n");
printf("\n計算式: "); gets(pointer);
for( *pointer_for_j=0; *(pointer+*pointer_for_i)>='0' && *(pointer+*pointer_for_i)<='9'; (*pointer_for_i)++ )
{ *(pointer1+*pointer_for_j)=*(pointer+*pointer_for_i); (*pointer_for_j)++; }
*(pointer1+*pointer_for_j)='\0'; *pointer_for_x=atoi(pointer1);
*pointer_for_op=*(pointer+*pointer_for_i); (*pointer_for_i)++;
for( *pointer_for_j=0; *(pointer+*pointer_for_i)>='0' && *(pointer+*pointer_for_i)<='9'; (*pointer_for_i)++ )
{ *(pointer1+*pointer_for_j)=*(pointer+*pointer_for_i); (*pointer_for_j)++; }
*(pointer1+*pointer_for_j)='\0'; *pointer_for_y=atoi(pointer1);
switch( *pointer_for_op )
{
case '+': *pointer_for_z=*pointer_for_x+*pointer_for_y; break;
case '-': *pointer_for_z=*pointer_for_x-*pointer_for_y; break;
case '*': *pointer_for_z=*pointer_for_x**pointer_for_y; break;
case '/': *pointer_for_z=*pointer_for_x/(*pointer_for_y); break;
case '%': *pointer_for_z=*pointer_for_x%*pointer_for_y; break;
default : printf("\a");
}
printf("\n答: %d\n",*pointer_for_z)
;}void call_program(void)
{
main_program();
}
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: switch文に入れることは可能ですか
炎王龍さん。名前を偽ることは、この掲示板では禁止させて頂いております。
継続的に同じ名前で投稿をお願いします。
継続的に同じ名前で投稿をお願いします。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- Dixq (管理人)
- 管理人
- 記事: 1662
- 登録日時: 14年前
- 住所: 北海道札幌市
- 連絡を取る:
Re: switch文に入れることは可能ですか
フォーラムルールを守ってくださいということで、今後守って頂けることを前提に回答します。
ここは丸投げ課題に対して答えを教える場ではないので、自力で答えにたどり着けるようお手伝いをしたいと思います。
自作関数を4つ作り、ポインタを使うのが一番分かりやすそうです。
xとyに値が入っているとして、足し算の結果を表示するプログラムが以下です。
xとyを自作関数addに渡してやり、resultのアドレスを渡して、ポインタで受け取り、
ポインタにxとyの値を代入していますから、addの計算結果がmainに反映されます。
まぁポインタなんか使わずに普通はこっちが自然ですけどね・・。
では、引き算をする関数を作ってみて下さい。できたら乗算、除算も作ってみて下さい。
徐々に作っていけばできますよ。
ここは丸投げ課題に対して答えを教える場ではないので、自力で答えにたどり着けるようお手伝いをしたいと思います。
自作関数を4つ作り、ポインタを使うのが一番分かりやすそうです。
xとyに値が入っているとして、足し算の結果を表示するプログラムが以下です。
#include <stdio.h>
void add(int x, int y, int *result){
*result = x + y;
}
int main(){
int x = 10, y = 20, result = 0;
add(x, y, &result);
printf("%d", result);
return 0;
}
ポインタにxとyの値を代入していますから、addの計算結果がmainに反映されます。
まぁポインタなんか使わずに普通はこっちが自然ですけどね・・。
#include <stdio.h>
int add(int x, int y){
return x+y;
}
int main(){
int x = 10, y = 20;
printf("%d", add(x, y));
return 0;
}
徐々に作っていけばできますよ。
- Dixq (管理人)
- 管理人
- 記事: 1662
- 登録日時: 14年前
- 住所: 北海道札幌市
- 連絡を取る:
Re: switch文に入れることは可能ですか
もう戻ってこないのですかね・・、なんとか自力で解けるように導いてあげたいのですが・・。