- ベストアンサー
C言語で数列の0だけの部分の個数を数えるプログラムを作成する方法【サンプルコード付き】
- C言語で、数列の中に現れる0だけの部分の個数を数えるプログラムを作成する方法を解説します。
- 特定の数(この場合は100)が2個連続して現れるまでの間に現れる0だけで構成される数列の0の個数をそれぞれ数えて、結果をファイルに出力します。
- サンプルコードを使ってプログラムの作成手順を詳しく説明します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ここは、質問サイトであり、 プログラム作成サイトではありません。 プログラムを作る際、何かわからないことを質問するなら ここで良いですが、丸投げは受け付けられません。 それに、これは「宿題」でしょ? 学校の先生に聞いてください。
その他の回答 (1)
- f272
- ベストアンサー率46% (8467/18126)
a.csv に書いてある数値を読むことは出来るのか?
お礼
#include<stdio.h> #include<stdlib.h> #include <string.h> #include<limits.h> #define M 1000000 #define N 40 // int main(void){ int i=0; int zero=0; int a=0; int b=0; int let; float data[M]; //データの値 FILE *fp1; //読み込みファイル FILE *fp2; //出力ファイル //読み込みファイルをオープン fp1 = fopen("a.csv","r"); if(fp1 == NULL){ printf("ファイルをオープンできませんでした.\n"); return 0; } /*ファイル読み込み************************************************/ while(( let = fscanf( fp1 , "%f" , &data[i] )) != EOF ) { i++; } fclose(fp1); /**************************************************************/ //出力ファイルをオープン fp2 = fopen("b.txt","w"); if(fp2 == NULL){ printf("ファイルをオープンできませんでした.\n"); return 0; } for(i=0;i<M;i++){ if(data[i]==100 && data[i+1]==100){//100が2個連続で出てきた場合 a = 1; b = 0; zero = 0; i = i + 2; } else if(data[i]==0 && data[i+1]==0){ zero++; } else if(data[i]==0 && data[i]!=100){ zero++; b++; fprintf(fp2,"%d-%d,%d",a,b,zero); fprintf(fp2,"\n"); } } } のプログラムで, a.csv 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.14 0.27 0.41 0.53 0.67 0.81 0.94 1.08 1.2 1.34 1.47 1.61 1.73 1.88 2 2.14 2.27 2.41 2.53 2.67 2.81 2.94 3.08 3.2 3.34 3.47 3.61 3.73 3.88 4 4.14 4.27 4.41 4.53 4.67 0 0 0.14 0.27 0.41 0.53 0.67 0.8 0.94 1.06 1.2 1.33 1.47 1.59 1.74 1.88 2 2.14 2.27 2.41 2.53 2.67 2.8 2.94 3.06 3.2 3.33 3.47 3.59 3.73 3.88 4 4.14 4.27 4.41 4.53 4.67 4.8 0 0 0 0 0 100 100 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.14 0.27 0.41 0.53 0.67 0.81 0.94 1.08 1.2 1.34 1.47 1.61 1.73 1.88 2 2.14 2.27 2.41 2.53 2.67 2.81 2.94 3.08 3.2 3.34 3.47 3.61 3.73 3.88 4 4.14 4.27 4.41 4.53 4.67 0 0 0.14 0.27 0.41 0.53 0.67 0.8 0.94 1.06 1.2 1.33 1.47 1.59 1.74 1.88 2 2.14 2.27 2.41 2.53 2.67 2.8 2.94 3.06 3.2 3.33 3.47 3.59 3.73 3.88 4 4.14 4.27 4.41 4.53 4.67 4.8 0 0 0 0 0 100 100 実行結果 0-1,24 0-2,26 0-3,31 1-1,996263 1-2,996266 1-3,996316 1-4,996318 1-5,996324 1-6,996326 1-7,996328 1-8,996332 になっちゃいました....
補足
今,自分なりに作っています. もう無理となったら,助けてください. 作ったところまでのソースを貼りますので
お礼
なんとか出来ました.これからは丸投げしないようにします
補足
すいません