• 締切済み

プログラミング 配列 最小値

プログラミング 配列 最小値 要素数が5の配列にキーボードから整数を入力し、最小値を表示する というプログラムのソースについてなんですが #include <stdio.h> int main(void) { int 1; int min, vc[5]; for(i = 0; i < 5; i++) vc(i) = i+1; ここまで自分で考えたんですが間違ってるでしょうか? 最小値を表示させる文がよくわからないのですが教えていただけないでしょうか

みんなの回答

  • ninoue
  • ベストアンサー率52% (1288/2437)
回答No.3

昨日の質問に回答しましたが、自分でC言語入門のサイト等を参考に基礎から一歩一歩理解を進めていって下さい。 自分で努力しないと実際の力は付きませんよ。 http://okwave.jp/qa/q8699054.html 回答No.3   例えば "猫でもわかるプログラミング " のサイトですが、名前に似合わず真面目に基礎から解説されているので調べてみて下さい。

回答No.2

これだけ見ればOKな気がします。 http://www1.cts.ne.jp/~clab/hsample/Flow/Flow01.html http://www.c-lang.org/if.html 配列使う必要ないと思います。 minを定義。初期値32767とか。 5回ループする。 ループ内  ・標準入出力から入力を受け付ける。  ・受け付けた数値 < min なら、minの値を受け付けた数値に変更。 minの値を標準入出力へ出力。 という次元ですよね。 必要であれば入力チェック(数値, int範囲)も行えばいいでしょう。

  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.1

>要素数が5の配列にキーボードから整数を入力し 別の質問でもツッコミの回答ありますが… 「C言語でキーボードから入力させる」という方法はありません。 『標準入力から』であればありますが。 とは言え…初心者向けだと標準入力からというのをキーボードからと説明される場合がある。というのもありますが。 # 個人的にはツッコミどころがアレなので、そういう説明されていると引きますかねぇ。後からフォローああるのならかまいませんが。 >int 1; たぶん文法エラーです。 >int min, vc[5]; >for(i = 0; i < 5; i++) >vc(i) = i+1; なんで"+"が全角なんでしょう? 他でもツッコミあったと思いますが。 半角に直してもおそらく文法エラーでしょう。 >vc(i) 括弧"(i)"ではなく、中括弧"[i]"じゃないですか? ついでに初期値として代入はしているでしょうが、 「標準入力から整数を入力」にはなっていないですよね? 質問されている内容自体はよくあるパターンですのでWebで検索すればすぐ見つかるんじゃないですかねぇ……。

関連するQ&A

  • プログラミング 配列 合計

    配列の要素に値を読み込んで表示させるプログラムは 1#include <stdio.h> 2 3int main(void) 4{ 5 6 int i; 7 int vc[5]; 8 9 for (i = 0; i < 5; i++) 10 vc[i] =i + 1; 11 12 for(i = 0; i < 5; i++) 13 printf("vc[%d] = %d\n", i, vc[i]); 14 15 return (0); }でこれを書きなおして配列の値を合計するプログラムはどういうプログラムになるか教えていただけませんか?

  • プログラミング 配列

    配列の各要素に先頭から順に1,2,3,4,5を代入して表示という指示なのですが #include <stdio.h> #include <stdio.h> int main(void) { int vc[5]; vc[0] = 1; vc[1] = 2; vc[2] = 3; vc[3] = 4; vc[4] = 5; printf("vc[0] = %d\n", vc[0]); printf("vc[1] = %d\n", vc[1]); printf("vc[2] = %d\n", vc[2]); printf("vc[3] = %d\n", vc[3]); printf("vc[4] = %d\n", vc[4]); return (0); }で実行したら vc[0] = 2 vc[1] = 3 vc[2] = 4 vc[3] = 5 vc[4] = 5 っていうに出てしまったのですが、上の文の何が間違っていたんでしょうか? 本来なら vc[0] = 1 vc[1] = 2 vc[2] = 3 vc[3] = 4 vc[4] = 5 と表示されるはずなんですが・・

  • 最小の整数が,何番目に入力されたものかを出力したい

    先日、 「一つの整数をキーボードから入力する。これをn とする。続いてn 個の整数をキーボードから入力する(値は100 以下と仮定してよい)。その後、n 個の整数の中で最小のものを出力したい」 という質問をした者です。 今度は出力された最小の整数が,何番目に入力されたものか を出力したいのですが、どうすればいいですか? 困ってるんでお願いします。 ちなみに、前回の質問の答えはこうなりました。↓ #include <stdio.h> int main(void) { int n, i, t, min=0; scanf("%d",&n); for (i=0; i < n; i++){ scanf("%d",&t); if (i==0){ min=t; } if (min > t) { min=t; } } printf("\n最小:%d", min); return (0); }

  • プログラミング(C言語)についての質問です

    3つの整数の入力を受け付け、最大と最小を求める関数を作成し得られた結果を表示するプログラミングを作成したつもりなのですが、うまく作動しません。(コンパイルはできますが、結果が無茶苦茶になります。) ご教授宜しくお願いします。 それと、課題文にはポインタを使って最大値と最小値を同時に求めるようにと書いてあったのですが、それもよくわからないです。 今回初めてポインタと配列の受け渡しについて習ったのでよくわかっていない部分も多いと思うのですが、何卒宜しくお願いします。 ちなみに関数の形自体は void minmax(int data[],int *min,int *max){} で決まっています。 #include <stdio.h> void minmax(int data[],int *min,int *max){ int i; *min=*max=data[0]; printf("1st intenger:"); scanf("%d",&data[0]); printf("2st intenger:"); scanf("%d",&data[1]); printf("3st intenger:"); scanf("%d",&data[2]); for(i=1;i<3;i++){ if(*max<data[i]){ *max=data[i]; } if(*min>data[i]){ *min=data[i]; } } } int main(void){ int data[3],min,max; minmax(data,&min,&max); printf("最小値は%dで最大値は%dです",min,max); return 0; }

  • 入力した整数のうち、最小のものを出力したい

    一つの整数をキーボードから入力する。これをn とする。続いてn 個の整数をキーボードから入力する(値は100 以下と仮定してよい)。その後、n 個の整数の中で最小のものを出力したいのですが… 一応途中まではやってみました。↓ #include <stdio.h> int main(void) { int n, i, t; scanf("%d",&n); for (i=0; i < n; i++){ scanf("%d",&t); } return (0); } この後、どうしたらいいですか?

  • ポインタ配列

    配列をポインタでとって、配列要素を足していこうと思ったのですが、 #include <stdio.h> int main (void) { int p[11]={11,23,43,66,54,67,51,88,22,43,-1}; int *e=p; int x=0; int i=0; while( *e!=-1 ) { x + = ( * (e+i) ); i++; } printf("%d\n",x); return 0; } x = ( * ( e+i ) ); ↑この部分がなぜだめなのか理解できません どなたか教えてくださるとありがたいです

  • 配列で最大・最小値を求める

    import java.io.*; class Prog10_2 { public static void main(String args[])throws IOException { System.out.println("10個の整数を入力してください。"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int num[] = new int[10]; for(int i=0; i<num.length; i++){ String str = br.readLine(); int tmp = Integer.parseInt(str); num[i] = tmp; } int max = 0; int min = 0; for(int i=0; i<num.length; i++){ if(max < num[i]){ max = num[i]; } if(min > num[i]){ min = num[i]; } } System.out.println("最大値は"+max+"で、最小値は"+min+"です。"); } }   というコマンドを実行すると、最大値はちゃんと表示されるのですが、 最小値はいつも"0"しか表示されません。どこを修正すればいいのでしょうか? どなたか分かる方いらっしゃいましたら、よろしくお願いします。

    • ベストアンサー
    • Java
  • C言語の穴埋め問題です

    配列に初期化されたデータの中から最小値を求めるプログラムなのですが、■■■を教えて頂けないでしょうか? #include <stdio.h> #define N 5 //関数のプロトタイプ宣言 int min(int *p , int n); int main(void) { int data[N] = {15,34,28,12,33}; printf("最小値は%d\n" , ■■■); } int min(int *p , int n) { int min; //最小値 int i; //カウンタ min = *p; for(i = 1 , ■■■; i < n; i++ , ■■■){ if (min >■■■ ){ min =■■■ ; } } return ■■■; }

  • C言語 最大値と最小値を求めて表示するプログラム

    はじめまして。 C言語を学習中です。 下記の問題演習の解答として記載されているプログラムがどうしても理解できません。 特にプログラムの最後の方のwhile文で最大値と最小値の判定をしているのかと思いますが、どのような計算をして判定しているのでしょうか。 while (array[i] != -1) { if (array[i] > *max) *max = array[i]; if (array[i] < *min) *min = array[i]; i++; 具体的に教えてください。 よろしくお願い致します。 ●問題 0~100の範囲で入力された複数の数値の中から、 最大値と最小値を求めて表示するプログラムを作成せよ。 -1が入力された場合は入力の終わりと判定する。 ただし、最大値と最小値はmain関数以外の一つの関数の中で求める。 また、入力された数値を記憶する配列の要素数は10とし、 それ以上入力された場合はエラーが起きても仕方ないこととする。 ヒント:配列の中に -1 があればデータの終わりだと判断できる。 ヒント:最小値を探すには、最大値を記憶した変数との比較を繰り返せば良い。 ●解答 #include <stdio.h> void maxmin(int array[],int *max,int *min); int main(void) { int i = 0,array[10],max,min; do { printf("%d 番目の数:",i + 1); scanf("%d",&array[i]); i++; } while (array[i - 1] != -1); maxmin(array,&max,&min); printf("最大値 %d : 最小値 %d\n",max,min); return 0; } void maxmin(int array[],int *max,int *min) { int i = 0; *max = 0; *min = 100; while (array[i] != -1) { if (array[i] > *max) *max = array[i]; if (array[i] < *min) *min = array[i]; i++; } }

  • プログラミング

    C++で、五個の配列を確保し、それらを関数を使って逆順にしたいのですが、別の配列にコピーして逆順にしたいです。下記のプログラムを作ったのですが、どこがいけないのでしょうか? #include "stdafx.h" #include <stdio.h> void reverse (int z[],int w[]); int main(void) { int p[5]={1,2,3,4,5},u[5]; reverse(p,u); printf("逆順=%d\n",p); return 0; } void reverse(int z[],int w[]) { int i; for(i=0;i<=5;i++){ w[i]=z[i-1]; } }

専門家に質問してみよう