質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Q&A

1回答

1893閲覧

偶数をうまくカウントできない

退会済みユーザー

退会済みユーザー

総合スコア0

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

0グッド

0クリップ

投稿2020/05/26 10:59

編集2020/05/26 12:08

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
C言語でプログラムを作っています。
1~100までの整数を奇数と偶数に分ける処理をしています。

発生している問題・エラーメッセージ

奇数は正しくカウントされるけれど、偶数が正しくカウントされません。

該当のソースコード

C言語

1#include<stdio.h> 2 3#define DATA_CNT 10 4 5void gu_ki_indct(int dt[], int cnt); 6void error_indct(int dt[], int cnt); 7 8int main(void) 9{ 10 11 int num=0; // 入力された数値を格納する変数 12 int gu_cnt=0; // 偶数の値の数をカウントする変数 13 int ki_cnt=0; // 奇数の値の数をカウントする変数 14 int error_cnt=0; // エラーの値の数をカウントする変数 15 int gusu[DATA_CNT]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; // 偶数の値を格納する配列変数 16 int kisu[DATA_CNT]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; // 奇数の値を格納する配列変数 17 int error[DATA_CNT]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; // エラーの値を格納する配列変数 18 19 setbuf(stdout, NULL); 20 21 printf("数値を10個入力してください:"); 22 23 int i; 24 int ki; 25 int gu; 26 int er; 27 for(i=0; i<DATA_CNT; i++) 28 { 29 scanf("%d", &num); 30 if(0>num || num>=100) 31 { 32 error[er]=num; 33 error_cnt++; er++; 34 } 35 36 if(num % 2 == 0) 37 { 38 gusu[gu]=num; 39 gu_cnt++; gu++; 40 } 41 else 42 { 43 kisu[ki]=num; 44 ki_cnt++; ki++; 45 } 46 } 47 printf("奇数:\n"); 48 gu_ki_indct(kisu, ki_cnt); 49 50 printf("偶数:\n"); 51 gu_ki_indct(gusu, gu_cnt); 52 53 54 printf("奇数の数=%d\n", ki_cnt); 55 56 printf("偶数の数=%d\n", gu_cnt); 57 58 if(error_cnt!=0) 59 { 60 printf("エラー:\n"); 61 error_indct(error, error_cnt); 62 } 63 64} 65 66void gu_ki_indct(int dt[], int cnt) 67{ 68 int i=0; 69 while(i<cnt) 70 { 71 printf("%02d\n", dt[i]); 72 i++; 73 } 74} 75 76void error_indct(int dt[], int cnt) 77{ 78 int i=0; 79 while(i<cnt) 80 { 81 printf("%02d\n", dt[i]); 82 i++; 83 } 84} 85

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

SHOMI

2020/05/26 11:05

ソースコードが途切れてます。 if(0>num || num>=100)でエラーとしてカウントした値も後続の偶数奇数判定にも流れてしまっています。
kazuma-s

2020/05/26 11:19

質問を編集して、コンパイルエラーがなく実行可能なソースコードにしてください。 実行結果の値も書いてください。
thkana

2020/05/26 11:20

正しくカウントされずにどうなるのですか? (エスパーするなら初期化忘れ)
SHOMI

2020/05/26 11:54

>1~100までの整数を奇数と偶数に分ける処理をしています。 >if(0>num || num>=100) 0はエラーになっておらず、100はエラーになっています。
SHOMI

2020/05/26 12:12

処理の問題はコメントで指摘済みですが… 「偶数が正しくカウントされません」を確認した入力値と結果を書いてください。
pepperleaf

2020/05/26 12:17

> (エスパーするなら初期化忘れ) みたいですね。 ki, gu, er これらを宣言時に、0設定する。だけか?
guest

回答1

0

c

1int ki; 2int gu; 3int er;

とりあえずカウント用変数の初期化をしましょう。

投稿2020/05/26 12:19

編集2020/05/26 12:21
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/05/26 12:21

すみません、一緒にコピペしてましたね。ご指摘ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問