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

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

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

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

Q&A

解決済

3回答

1199閲覧

配列の表示について。

morimoriservice

総合スコア23

C

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

0グッド

0クリップ

投稿2017/07/12 11:33

下記のコードを実行したところ、配列Aは701番目から999番目までしか表示されませんでした。これはコード上に間違いがあるのでしょうか?わかる方がいらっしゃったら回答をお願いします

c言語

1#include <stdio.h> 2#include<stdlib.h> 3int main(void) 4{ 5 int i,j; 6 double A[1000],B[1000],a; 7 for(i=0;i<1000;i++){ 8 A[i]=(double)(rand()%100001)/100000; 9 } 10 for(i=0;i<1000;i++){ 11 a=A[i]; 12 for(j=0;j<1000;j++){ 13 if(a<A[j]){ 14 B[i]=a; 15 } 16 } 17 } 18 for(i=0;i<1000;i++){ 19 printf("%d:%f\n",i,A[i]); 20 } 21 return 0; 22}

補足ですが、このプログラムは配列Aに0以上1以下の乱数を1000個格納して配列Bにそれを小さい順に入れるという内容です。

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

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

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

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

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

LouiS0616

2017/07/12 12:02

私の環境ではすべて表示されました。いちおう、単に見切れているだけでないかチェックしてみてください。
guest

回答3

0

ベストアンサー

推測ですがWindowsのコマンドプロンプトや同様のターミナルソフト(CUI端末)を使っておられて、その画面バッファーサイズの高さ(行数)の設定が300行だったのだと思います。

プログラム終了後に端末をスクロールして「あれれ701番目以降しか出力されてない!」と勘違いされたのではないでしょうか?


ご質問内容からははずれますがコードに指摘があります。Bには意図通りの内容にはならない(ソートされた結果が格納されない)です。例えば同じ論理でAが1000要素ではなく2要素で、要素の値が順に0.1, 0.2だった場合の結果を想像してみてください。B[1]には何も設定されないままソートが終わってしまいますよね?

投稿2017/07/12 12:27

KSwordOfHaste

総合スコア18394

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

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

0

foo.exe > foo.txt

(foo.exe という実行ファイルとしてコンパイルしたとして)上記のようにしてfoo.txtの中身を見てみては?

投稿2017/07/13 02:03

WoodenHamlet

総合スコア306

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

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

0

小さい順にならべてみました。

c

1#include<stdio.h> 2#include<stdlib.h> 3int main(void) 4{ 5 int i,j,k; 6 double A[1000],a; 7 double B[1000]={'\0'}; 8 for(i=0;i<1000;i++){ 9 A[i]=(double)(rand()%100001)/100000; 10 } 11 for(i=0;i<1000;i++){ 12 a=A[i]; 13 for(j=k=0;j<1000;j++){ 14 if(a>A[j]) k++; 15 } 16 B[k]=a; 17 } 18 for(i=0;i<1000;i++){ 19 if (B[i] == 0 && i!=0){ 20 printf("%d:%f\n",i,a); 21 }else{ 22 printf("%d:%f\n",i,B[i]); 23 a=B[i]; 24 } 25 } 26 return 0; 27}

投稿2017/07/12 12:27

編集2017/07/12 13:23
A.Ichi

総合スコア4070

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問