掲示板ランキング  ハーフパンツ  オーバーオール  スカート  ジャンパースカート  ワンピース


掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板1

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧

No.6822

配列
投稿者---su-(2006/11/28 18:01:25)


質問です。

10人までの任意の人数の身長を入力した後に,入力した順番にその身長を全て出力するプログラムをつくっています。

<実行結果>
何人分の身長を入力しますか(10まで)?3
1人目の身長を入力してください:134
2人目の身長を入力してください:123
3人目の身長を入力してください:145
1人目:134
2人目:123
3人目:145

こんなプログラムをつくりたいんです。
私は作ったのは、

#include <stdio.h>
main(){
int n; //人数//
int z; //最後のひと//
int height[10]; //身長の配列//

printf("何人分の身長を入力しますか(10まで)?");
scanf("%d",&n);
printf("1人目の身長を入力してください:");
scanf("%d",&height[n]);
for(z=2;z<=n;z++){
printf("%d人目の身長を入力してください:",z);
scanf("%d",&height[n]);
}
for(n=0;n<z;n++){
printf("%d人目:%d\n",n,height[n]);
}
return 0;
}

です。しかし、実行結果がうまくいきません。
0人目:1073826712
1人目:0
2人目:-1073743984
3人目:145

という風にでます。
どこを直せばいいんしょうか??誰か教えてください。
お願いします。


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:配列 6824 επιστημη 2006/11/28 18:06:24
<子記事> Re:配列 6826 2006/11/28 18:19:07


No.6824

Re:配列
投稿者---επιστημη(2006/11/28 18:06:24)
http://blogs.wankuma.com/episteme/


> printf("1人目の身長を入力してください:");
> scanf("%d",&height[n]); ← ぉぃぉぃ
> for(z=2;z<=n;z++){
> printf("%d人目の身長を入力してください:",z);
> scanf("%d",&height[n]); ← ぉぃぉぃ
> }

... なんで1人目/z人目の身長が height[n] なんですか?



この投稿にコメントする

削除パスワード

No.6825

Re:配列
投稿者---su-(2006/11/28 18:14:46)


はい。
1人目とz人目の身長の配列の箱の書きかたが分かりません。
教えてもらえませんか?


この投稿にコメントする

削除パスワード

No.6826

Re:配列
投稿者---・(2006/11/28 18:19:07)


#include <stdio.h>

int main(void)
{
    int n, i;
    int height[10];
    
    printf("何人分の身長を入力しますか(10まで)?");
    scanf("%d", &n);
    
    for (i = 0; i < 10 && i < n; i++) {
        printf("%d人目の身長を入力してください:", i + 1);
        scanf("%d", &height[i]);
    }
    
    for (i = 0; i < 10 && i < n; i++)
        printf("%d人目:%d\n", i + 1, height[i]);
    return 0;
}





この投稿にコメントする

削除パスワード

No.6827

Re:配列
投稿者---su-(2006/11/28 18:26:26)


できました。
ありがとうございます。

私は、1人目は絶対あるから、別にやってたんですけど、
こんな風にi+1とやれば、別々にやらなくていいんですね。


この投稿にコメントする

削除パスワード

No.6828

Re:配列
投稿者---su-(2006/11/28 20:13:44)


追加質問です。

ファイルの入出力の質問です。

以下のようなプログラムをつくりました。

#include <stdio.h>
void shinchou(double height[]);
void output_to_file(double height[]);
int main(void){
double height[10];

shinchou(height);
output_to_file(height);

return 0;
}

void shinchou(double height[]){
int n,i;

printf("何人分の身長を入力しますか(10まで)?");
scanf("%d", &n);

for(i=0;i<10 && i<n;i++) {
printf("%d人目の身長を入力してください:",i+1);
scanf("%lf", &height[i]);
}
}



void output_to_file(double height[]){
char output_file_name[100],n,i;
FILE *fpout;
printf("Output file name:");
scanf("%s",output_file_name);
fpout=fopen(output_file_name,"w");
if(fpout==NULL){
printf("file open error <%s>\n",output_file_name);
exit(0);
}

for(i=0;i<10 && i<n;i++){
fprintf(fpout,"%d人目: %.2lf\n",i+1,height[i]);
}
fclose(fpout);
}

実行結果です。
何人分の身長を入力しますか(10まで)?3
1人目の身長を入力してください:45
2人目の身長を入力してください:34
3人目の身長を入力してください:24
Output file name:height.txt
[06mi008@kc221-121-221-2 Program2]$ cat height.txt
1人目: 45.00
2人目: 34.00
3人目: 24.00
4人目: 2.09
5人目: 0.00
6人目: 0.00
7人目: -2.00
8人目: 0.00
9人目: 0.00
10人目: 5.35

です。3人と指定しているのに、4ー10まででてしまいます。どうすればいいでしょか??教えてください。


この投稿にコメントする

削除パスワード

No.6829

Re:配列
投稿者---・(2006/11/28 20:35:25)


いろんな方法がありますけど…。

#include <stdio.h>
#include <stdlib.h>

int shinchou(double *height);
void output_to_file(double *height, int n);

int main(void) {
    double height[10];
    int n;
    
    n = shinchou(height);
    output_to_file(height, n);
    return 0;
}

int shinchou(double *height)
{
    int n, i;
    
    printf("何人分の身長を入力しますか(10まで)?");
    scanf("%d", &n);
    
    for (i = 0; i < 10 && i < n; i++) {
        printf("%d人目の身長を入力してください:", i + 1);
        scanf("%lf", &height[i]);
    }
    return n;
}

void output_to_file(double *height, int n)
{
    char output_file_name[100];
    int i;
    FILE *fpout;
    
    printf("Output file name:");
    scanf("%s", output_file_name);
    fpout = fopen(output_file_name, "w");
    if (fpout == NULL) {
        printf("file open error <%s>\n", output_file_name);
        exit(1);
    }
    
    for (i = 0; i < 10 && i < n; i++)
        fprintf(fpout, "%d人目: %.2f\n", i + 1, height[i]);
    fclose(fpout);
}




この投稿にコメントする

削除パスワード

No.6830

Re:配列
投稿者---su-(2006/11/28 20:38:49)


私のは、何がいけなかったんでしょうか??


この投稿にコメントする

削除パスワード

No.6831

Re:配列
投稿者---・(2006/11/28 20:47:56)


shinchou関数で入力した「何人分」の値(n)が、output_to_file関数に渡っていないことです。


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧





掲示板提供:(有)リアル・インテグリティ