switch文に入れることは可能ですか

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
グラードン

switch文に入れることは可能ですか

#1

投稿記事 by グラードン » 10年前

#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つ以上でお願いします。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: switch文に入れることは可能ですか

#2

投稿記事 by みけCAT » 10年前

・コードは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文に入れることは可能ですか

#3

投稿記事 by softya(ソフト屋) » 10年前

炎王龍さん。名前を偽ることは、この掲示板では禁止させて頂いております。
継続的に同じ名前で投稿をお願いします。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
Dixq (管理人)
管理人
記事: 1662
登録日時: 14年前
住所: 北海道札幌市
連絡を取る:

Re: switch文に入れることは可能ですか

#4

投稿記事 by Dixq (管理人) » 10年前

フォーラムルールを守ってくださいということで、今後守って頂けることを前提に回答します。

ここは丸投げ課題に対して答えを教える場ではないので、自力で答えにたどり着けるようお手伝いをしたいと思います。

自作関数を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に渡してやり、resultのアドレスを渡して、ポインタで受け取り、
ポインタに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文に入れることは可能ですか

#6

投稿記事 by Dixq (管理人) » 10年前

もう戻ってこないのですかね・・、なんとか自力で解けるように導いてあげたいのですが・・。

アバター
夢幻ノ月夜
記事: 143
登録日時: 10年前
住所: Stens;Gate世界線

Re: switch文に入れることは可能ですか

#7

投稿記事 by 夢幻ノ月夜 » 10年前

状況がめちゃくちゃじゃねぇか…
毎回ゲーム作ろうとするたびに壁にぶち当たる

閉鎖

“C言語何でも質問掲示板” へ戻る