tig33 の回答履歴

全37件中21~37件表示
  • バブルソートについて質問です。

    キーボード入力で10個好きな数字を入れてもらい入力した数字を小さい順に並び替えさらに入力した数を合計して小さい順の入力値と合計値を表示させ0は表示させないというプログラムを作りたいのですが途中から意味が分からなくなってしまいました。 ここを直したらいいなどのアドバイスをお願いします。 #include <stdio.h> void swap (int *,int *); void printdata(int *); main() { int a[10]; int n=10; int i,j; for(i=0;i<=9;i++) scanf("%d\n",a[i]); int kekka; kekka=a+a[1]+a[2]+a[3]+a[4]+a[5]+a[6]+a[7]+a[8]+a[9]; return kekka; printdata(a); for(j=n-1;j>=0;j--){ for(i=0;i<j;i++){ if(a[i]>a[i+1]){ swap(a+i,a+i+1); printf("[%d]と[%d]を入れ替え\n",i,i+1); printdata(a); } } } } void swap(int *y,int *z) { int t; t= *y; *y=*z; *z=t; } void printdata(int *a) { int i; for(i=0;i<=9;i++) printf("%4d",a[i]); printf("\n"); }

    • noname#58788
    • 回答数8
  • C++の勉強を始めたいと思っています。

    C++の勉強を始めたいと思っています。 C言語の経験はあるので、そのあたりから始められるとっつきやすい参考書でお勧めはないでしょうか。 この本の途中からがいいよというのでもかまいません。

  • 非整数を入力したらエラーを表示させたいのですが・・・

    入力値をnに格納し非整数を検出したときにエラー表示させたいのですが、処理に困っています。 if( (double)n || (char)n) printf("error\n"); だともちろん整数のときも無理になってしまいますし・・・。 小数点を検出したときはどのようにしたらよいのでしょうか?

    • chan-fu
    • 回答数3
  • 8桁の2進数を10進数に変換する方法を教えてください。

    キーボードから2進数を入力した値を10進数に変換し、変換結果を出力する方法が解りません。作成するにあたり仕様があり、私一人では解決できないので相談させていただきました。 <仕様は以下の通りです> (1)このプログラム(8桁の2進数を10進数に変換)をする際は、最後に出力する時(printf)以外は関数を使ってはいけません。 (2)キーボードから2進数を入力させる。 (3)空白(ブランク)が入力されても変換可能にする。 (4)入力された2進数は8桁にし、8桁以上の場合はエラーを出す。 (5)2進数の「0」と「1」以外の文字が入力された場合はエラーを出す。 (6)バイナリ変換をし、変換結果を出力する。 以上になります。 まだ、C言語を勉強を習い始めの初心者です。どうか、ご回答のほど宜しくお願いします。

  • 8桁の2進数を10進数に変換する方法を教えてください。

    キーボードから2進数を入力した値を10進数に変換し、変換結果を出力する方法が解りません。作成するにあたり仕様があり、私一人では解決できないので相談させていただきました。 <仕様は以下の通りです> (1)このプログラム(8桁の2進数を10進数に変換)をする際は、最後に出力する時(printf)以外は関数を使ってはいけません。 (2)キーボードから2進数を入力させる。 (3)空白(ブランク)が入力されても変換可能にする。 (4)入力された2進数は8桁にし、8桁以上の場合はエラーを出す。 (5)2進数の「0」と「1」以外の文字が入力された場合はエラーを出す。 (6)バイナリ変換をし、変換結果を出力する。 以上になります。 まだ、C言語を勉強を習い始めの初心者です。どうか、ご回答のほど宜しくお願いします。

  • C言語の問題が解けません

    C言語の問題ができなくて困っています。 これが問題文です。 与えられた表の縦・横の値の平均/合計をそれぞれの行・列ごとに求め出力するプログラムを作成しなさい。ただし、縦・横のデータ数は10個未満とし、それぞれの数字は整数とする。また、出力は右詰め6桁で出力することとし、平均における小数点以下は1桁まで表示する。平均行/列および合計行/列がぶつかる個所は、表全体の平均と合計を計算した結果を表示する。 補足として入力された行列数が10未満であることは、プログラム内でチェックすること。 例:20,3→再入力となる(行が9未満でない)  :2,-5→再入力となる(行が負の値) 実行結果例はこんな感じらしいです。 行数(最大9),列数(最大9)をカンマ区切りで入力(行,列):4,4 データをカンマ区切りで行ごとに入力[4行 4列] 52,96,15,20 86,22,35,45 45,78,54,36 16,86,74,55  52 96 15 20 45.8 183  86 22 35 45 47.0 188  45 78 54 36 53.3 213  16 86 74 55 57.8 231 49.8  70.5 44.5 39.0 50.9 - 199 282 178 156 - 815 自分はここまで自力でやったのですがここからが試行錯誤してもできません。このあとどのようにプログラムを書いていけばいいのですか? よろしくお願いします。 #include <stdio.h> int main(){ int gyou,retu,Loop1=0,Loop2=0; int kazu[8][8]; printf("行数(最大9行)、列数(最大9列)をカンマで区切って入力 (行,列):"); scanf("%d,%d",&gyou,&retu); if((gyou<=9)&&(retu<=9)){ printf("データをカンマ区切りで行ごとに入力 [%d行,%d列]\n",gyou,retu); for(Loop2=0;Loop2<gyou;Loop2++){ for(Loop1=0;Loop1<retu;Loop1++){ scanf("%d\n",&kazu[gyou--][retu--]);

  • C言語の問題が解けません

    C言語の問題ができなくて困っています。 これが問題文です。 与えられた表の縦・横の値の平均/合計をそれぞれの行・列ごとに求め出力するプログラムを作成しなさい。ただし、縦・横のデータ数は10個未満とし、それぞれの数字は整数とする。また、出力は右詰め6桁で出力することとし、平均における小数点以下は1桁まで表示する。平均行/列および合計行/列がぶつかる個所は、表全体の平均と合計を計算した結果を表示する。 補足として入力された行列数が10未満であることは、プログラム内でチェックすること。 例:20,3→再入力となる(行が9未満でない)  :2,-5→再入力となる(行が負の値) 実行結果例はこんな感じらしいです。 行数(最大9),列数(最大9)をカンマ区切りで入力(行,列):4,4 データをカンマ区切りで行ごとに入力[4行 4列] 52,96,15,20 86,22,35,45 45,78,54,36 16,86,74,55  52 96 15 20 45.8 183  86 22 35 45 47.0 188  45 78 54 36 53.3 213  16 86 74 55 57.8 231 49.8  70.5 44.5 39.0 50.9 - 199 282 178 156 - 815 自分はここまで自力でやったのですがここからが試行錯誤してもできません。このあとどのようにプログラムを書いていけばいいのですか? よろしくお願いします。 #include <stdio.h> int main(){ int gyou,retu,Loop1=0,Loop2=0; int kazu[8][8]; printf("行数(最大9行)、列数(最大9列)をカンマで区切って入力 (行,列):"); scanf("%d,%d",&gyou,&retu); if((gyou<=9)&&(retu<=9)){ printf("データをカンマ区切りで行ごとに入力 [%d行,%d列]\n",gyou,retu); for(Loop2=0;Loop2<gyou;Loop2++){ for(Loop1=0;Loop1<retu;Loop1++){ scanf("%d\n",&kazu[gyou--][retu--]);

  • C言語の問題が解けません

    C言語の問題ができなくて困っています。 これが問題文です。 与えられた表の縦・横の値の平均/合計をそれぞれの行・列ごとに求め出力するプログラムを作成しなさい。ただし、縦・横のデータ数は10個未満とし、それぞれの数字は整数とする。また、出力は右詰め6桁で出力することとし、平均における小数点以下は1桁まで表示する。平均行/列および合計行/列がぶつかる個所は、表全体の平均と合計を計算した結果を表示する。 補足として入力された行列数が10未満であることは、プログラム内でチェックすること。 例:20,3→再入力となる(行が9未満でない)  :2,-5→再入力となる(行が負の値) 実行結果例はこんな感じらしいです。 行数(最大9),列数(最大9)をカンマ区切りで入力(行,列):4,4 データをカンマ区切りで行ごとに入力[4行 4列] 52,96,15,20 86,22,35,45 45,78,54,36 16,86,74,55  52 96 15 20 45.8 183  86 22 35 45 47.0 188  45 78 54 36 53.3 213  16 86 74 55 57.8 231 49.8  70.5 44.5 39.0 50.9 - 199 282 178 156 - 815 自分はここまで自力でやったのですがここからが試行錯誤してもできません。このあとどのようにプログラムを書いていけばいいのですか? よろしくお願いします。 #include <stdio.h> int main(){ int gyou,retu,Loop1=0,Loop2=0; int kazu[8][8]; printf("行数(最大9行)、列数(最大9列)をカンマで区切って入力 (行,列):"); scanf("%d,%d",&gyou,&retu); if((gyou<=9)&&(retu<=9)){ printf("データをカンマ区切りで行ごとに入力 [%d行,%d列]\n",gyou,retu); for(Loop2=0;Loop2<gyou;Loop2++){ for(Loop1=0;Loop1<retu;Loop1++){ scanf("%d\n",&kazu[gyou--][retu--]);

  • C言語の問題が解けません

    C言語の問題ができなくて困っています。 これが問題文です。 与えられた表の縦・横の値の平均/合計をそれぞれの行・列ごとに求め出力するプログラムを作成しなさい。ただし、縦・横のデータ数は10個未満とし、それぞれの数字は整数とする。また、出力は右詰め6桁で出力することとし、平均における小数点以下は1桁まで表示する。平均行/列および合計行/列がぶつかる個所は、表全体の平均と合計を計算した結果を表示する。 補足として入力された行列数が10未満であることは、プログラム内でチェックすること。 例:20,3→再入力となる(行が9未満でない)  :2,-5→再入力となる(行が負の値) 実行結果例はこんな感じらしいです。 行数(最大9),列数(最大9)をカンマ区切りで入力(行,列):4,4 データをカンマ区切りで行ごとに入力[4行 4列] 52,96,15,20 86,22,35,45 45,78,54,36 16,86,74,55  52 96 15 20 45.8 183  86 22 35 45 47.0 188  45 78 54 36 53.3 213  16 86 74 55 57.8 231 49.8  70.5 44.5 39.0 50.9 - 199 282 178 156 - 815 自分はここまで自力でやったのですがここからが試行錯誤してもできません。このあとどのようにプログラムを書いていけばいいのですか? よろしくお願いします。 #include <stdio.h> int main(){ int gyou,retu,Loop1=0,Loop2=0; int kazu[8][8]; printf("行数(最大9行)、列数(最大9列)をカンマで区切って入力 (行,列):"); scanf("%d,%d",&gyou,&retu); if((gyou<=9)&&(retu<=9)){ printf("データをカンマ区切りで行ごとに入力 [%d行,%d列]\n",gyou,retu); for(Loop2=0;Loop2<gyou;Loop2++){ for(Loop1=0;Loop1<retu;Loop1++){ scanf("%d\n",&kazu[gyou--][retu--]);

  • C言語の問題が解けません

    C言語の問題ができなくて困っています。 これが問題文です。 与えられた表の縦・横の値の平均/合計をそれぞれの行・列ごとに求め出力するプログラムを作成しなさい。ただし、縦・横のデータ数は10個未満とし、それぞれの数字は整数とする。また、出力は右詰め6桁で出力することとし、平均における小数点以下は1桁まで表示する。平均行/列および合計行/列がぶつかる個所は、表全体の平均と合計を計算した結果を表示する。 補足として入力された行列数が10未満であることは、プログラム内でチェックすること。 例:20,3→再入力となる(行が9未満でない)  :2,-5→再入力となる(行が負の値) 実行結果例はこんな感じらしいです。 行数(最大9),列数(最大9)をカンマ区切りで入力(行,列):4,4 データをカンマ区切りで行ごとに入力[4行 4列] 52,96,15,20 86,22,35,45 45,78,54,36 16,86,74,55  52 96 15 20 45.8 183  86 22 35 45 47.0 188  45 78 54 36 53.3 213  16 86 74 55 57.8 231 49.8  70.5 44.5 39.0 50.9 - 199 282 178 156 - 815 自分はここまで自力でやったのですがここからが試行錯誤してもできません。このあとどのようにプログラムを書いていけばいいのですか? よろしくお願いします。 #include <stdio.h> int main(){ int gyou,retu,Loop1=0,Loop2=0; int kazu[8][8]; printf("行数(最大9行)、列数(最大9列)をカンマで区切って入力 (行,列):"); scanf("%d,%d",&gyou,&retu); if((gyou<=9)&&(retu<=9)){ printf("データをカンマ区切りで行ごとに入力 [%d行,%d列]\n",gyou,retu); for(Loop2=0;Loop2<gyou;Loop2++){ for(Loop1=0;Loop1<retu;Loop1++){ scanf("%d\n",&kazu[gyou--][retu--]);

  • このプログラム課題を完成させるヒントを下さい。

    以下のようなプログラム課題があるのですが、イマイチ問題のとっかかりがわかりません。 というかどのようなプログラムを書けばいいのかイメージが全然つかめません… %cってそもそもなんなのでしょうか?明解C言語にも載ってませんし… 正直、お手上げ状態ですのでどなたかご教授してくる方いましたらお願いします…。 print の %d と同じ出力を %c だけ使って実現しなさい. ヒント: 剰余演算子 % をつかいます. 502 % 100 = 2 #include <stdio.h> int main(void) { int d ; int i ; d = 502 ; for (i = 0 ; ??? ; ???) { printf("%c", ???) ; } ; return(0) ; } ;

  • 要素数を100個にしろといわれたのですが

    要素数を100個にしろといわれたのですが int main(void){ char str="100"; printf("文字列を入力してください:"); scanf_s("%s",str); put_string(str); putchar('n'); return (0); } この『char str="100";』の部分を『char str[100];』にしたらいいんでしょうか? 教科書をみてやってみたのですがイマイチ理解できずお手上げ状態です 因みにC++です

    • 6Gou
    • 回答数2
  • C言語のソートの問題なんですが

    値を入力する→値を入力する度に昇順に表示する これを不の値を入力するまで続けるという プログラムを作ろうと思っているのですが #include<stdio.h> swap(int *a,int *b) { int t; t=*a; *a=*b; *b=t; } main() { int i,j,k,a[100]; for(i=0;;++i)  {   scanf("%d",&a[i]);   if(a[i] < 0)    break;   for(j=i+1;;++j)    if(a[i] > a[j])     swap(&a[i],&a[j]);   for(k=0;k <= i;++k)    printf("%d ",a[k]);  }  return 0; } のように書いたのですがjを使った繰り返しの部分でa[j]に 値が無いから動かないと思うのですが どのように直せばいいか分かりません どなたか分かる方御教授お願いします

    • noname#107977
    • 回答数6
  • C言語のソートの問題なんですが

    値を入力する→値を入力する度に昇順に表示する これを不の値を入力するまで続けるという プログラムを作ろうと思っているのですが #include<stdio.h> swap(int *a,int *b) { int t; t=*a; *a=*b; *b=t; } main() { int i,j,k,a[100]; for(i=0;;++i)  {   scanf("%d",&a[i]);   if(a[i] < 0)    break;   for(j=i+1;;++j)    if(a[i] > a[j])     swap(&a[i],&a[j]);   for(k=0;k <= i;++k)    printf("%d ",a[k]);  }  return 0; } のように書いたのですがjを使った繰り返しの部分でa[j]に 値が無いから動かないと思うのですが どのように直せばいいか分かりません どなたか分かる方御教授お願いします

    • noname#107977
    • 回答数6
  • 改行コード

    いつもお世話になります。 あるバッファからsprintf()でバッファに格納したデータを ファイルにfprintf()で書き込むと、改行コードが混入します。 char b[5][128]; for( int p=0; p<i;p++ ){ sprintf(b[p]"TEST_CODE,%s,NAME\n", data[p]); fprintf(fp, "%s", b[p]); } ファイルには、 TEST_CODE,123 ,NAME TEST_CODE,456 ,NAME と%sの後に改行コードが入ります。 TEST_CODE,123,NAME TEST_CODE,456,NAME のようにしたいです。 何か方法はありますでしょうか? 環境がLinux環境のため、sedコマンドで行う方法も 考えましたが、コマンド自体イマイチわかりません。 関数またはコマンドでの方法がありましたら よろしくお願い致します。

    • the-ai
    • 回答数5
  • 構造体メンバへの代入

    とても初歩的なことなのですが、 typedef struct _X{ int x; }X[50]; と構造体を定義して X[0].x = 0; と0を代入しようとすると、「宣言が正しく終了していない」とエラーが出てしまいます。 これはなぜでしょうか? ちなみにMicrosoft Visual C++ 2005 Express Editionを使っています。

    • mine135
    • 回答数4
  • C言語の構造体の配列の扱い方

    #include <stdio.h> struct record { char name[10]; float height; float weight; }; /* 各データを、長さ 5 の record 構造体の配列に代入 */ struct record records[5] = { { "yasuo", 170.5, 70.5 }, { "hideaki", 176.5, 65.8 }, { "nobu", 166.5, 58.2 }, { "yuichi", 168.0, 65.4 }, { "nori", 152.7, 68.6 } }; float std_weight(struct record r){ /* 標準体重 = (身長 - 100) * 0.9 */ return (r.height - 100.0) * 0.9; } float std_weight(struct record r); となっている時に、メイン関数にて、5人の身長をもとめる方法と適正標準体重を求める方法を教えてください。構造体の配列を一括で扱うコードがいまいちわかりません。おねがいします。