5つの数値を入力(繰り返し入力)し、小さい順に表示しなさい。入力したすべての値が0の場合に処理を中止します。
とゆう問題ができません><
どなたかご協力お願いします。
C言語 並び替え
Re: C言語 並び替え
できません、というのは、
コードが全く書けないと
いうことでしょうか。
それとも、書きかけの
コードはある、ということでしょうか。
コードが全く書けないと
いうことでしょうか。
それとも、書きかけの
コードはある、ということでしょうか。
Re: C言語 並び替え
返信ありがとうございます><
以下のプログラムを一応書いたのですが繰り返しになりません><
#include <stdio.h>
int main(void){
int i, j, n[5], min, temp;
for(i=0; i<5; i++){
printf("%2d番目の数値?", i+1);
while(scanf("%d",&n)==n)
}
for(i=0; i<5; i++){
min = i;
for(j = i + 1; j < 5; j++){
if(n[min] > n[j]) min = j;
}
temp = n[min];
n[min] = n;
n = temp;
}
printf("並べ替え後は\n");
for(j=0; j<5; j++){
printf("%2d番目\t%d\n", j+1, n[j]);
}
return 0;
}
以下のプログラムを一応書いたのですが繰り返しになりません><
#include <stdio.h>
int main(void){
int i, j, n[5], min, temp;
for(i=0; i<5; i++){
printf("%2d番目の数値?", i+1);
while(scanf("%d",&n)==n)
}
for(i=0; i<5; i++){
min = i;
for(j = i + 1; j < 5; j++){
if(n[min] > n[j]) min = j;
}
temp = n[min];
n[min] = n;
n = temp;
}
printf("並べ替え後は\n");
for(j=0; j<5; j++){
printf("%2d番目\t%d\n", j+1, n[j]);
}
return 0;
}
Re: C言語 並び替え
データ入力時の
while文で何をしようと
しているかが
よくわかりません。
for文でもって、
繰り返しの目的は
達成できているの
ではないでしょうか。
while文で何をしようと
しているかが
よくわかりません。
for文でもって、
繰り返しの目的は
達成できているの
ではないでしょうか。
最後に編集したユーザー 初級者 on 2014年2月01日(土) 12:21 [ 編集 1 回目 ]
Re: C言語 並び替え
すみません;;
ミスです。
書き直しました。
#include <stdio.h>
int main(void){
int i, j, n[5], min, temp;
for(i=0; i<5; i++){
printf("%2d番目の数値?", i+1);
scanf("%d",&n);
}
for(i=0; i<5; i++){
min = i;
for(j = i + 1; j < 5; j++){
if(n[min] > n[j]) min = j;
}
temp = n[min];
n[min] = n;
n = temp;
}
printf("並べ替え後は\n");
for(j=0; j<5; j++){
printf("%2d番目\t%d\n", j+1, n[j]);
}
return 0;
}
ミスです。
書き直しました。
#include <stdio.h>
int main(void){
int i, j, n[5], min, temp;
for(i=0; i<5; i++){
printf("%2d番目の数値?", i+1);
scanf("%d",&n);
}
for(i=0; i<5; i++){
min = i;
for(j = i + 1; j < 5; j++){
if(n[min] > n[j]) min = j;
}
temp = n[min];
n[min] = n;
n = temp;
}
printf("並べ替え後は\n");
for(j=0; j<5; j++){
printf("%2d番目\t%d\n", j+1, n[j]);
}
return 0;
}
Re: C言語 並び替え
めんどくさいやり方なら一応できたんですけど・・・これをさらにコンパクトにしたくて・・・
#include<stdio.h>
void sori(int &x,int &y)
{ int temp;
if(x>y) {
temp=x; x=y;
y=temp;
}
return;
}
int main(void)
{ int a,b,c,d,e;
while(scanf("%d,%d,%d,%d,%d",&a,&b,&c,&d,&e)==5) {
if(a==0&&b==0&&c==0&&d==0&&e==0) break;
sori(a,b);
sori(a,c);
sori(a,d);
sori(a,e);
sori(b,c);
sori(b,d);
sori(b,e);
sori(c,d);
sori(c,e);
sori(d,e);
printf("小さい順に→%d,%d,%d,%d,%d",a,b,c,d,e);
}
return(0);
}
#include<stdio.h>
void sori(int &x,int &y)
{ int temp;
if(x>y) {
temp=x; x=y;
y=temp;
}
return;
}
int main(void)
{ int a,b,c,d,e;
while(scanf("%d,%d,%d,%d,%d",&a,&b,&c,&d,&e)==5) {
if(a==0&&b==0&&c==0&&d==0&&e==0) break;
sori(a,b);
sori(a,c);
sori(a,d);
sori(a,e);
sori(b,c);
sori(b,d);
sori(b,e);
sori(c,d);
sori(c,e);
sori(d,e);
printf("小さい順に→%d,%d,%d,%d,%d",a,b,c,d,e);
}
return(0);
}
Re: C言語 並び替え
12時21分のコードの方が
マシな気がします。ちゃんと動くのならば。
最後のコードは、ダメダメです。
そもそも、ビルドできますか?
データが5個なら、sort()の呼び出しが15行
10個なら55行。20個なら210行。
そんなにズラ〜っと書くのは
ナンセンスです。
12時21分の方がマシと書いたのは、
少なくともループで制御している分だけ
マシ、という意味です。
マシな気がします。ちゃんと動くのならば。
最後のコードは、ダメダメです。
そもそも、ビルドできますか?
データが5個なら、sort()の呼び出しが15行
10個なら55行。20個なら210行。
そんなにズラ〜っと書くのは
ナンセンスです。
12時21分の方がマシと書いたのは、
少なくともループで制御している分だけ
マシ、という意味です。
Re: C言語 並び替え
12時21分のコードに
5個のデータが全部0ならば、プログラムを終了する
というロジックを加えることはむずかしいですか?
5個のデータが全部0ならば、プログラムを終了する
というロジックを加えることはむずかしいですか?
Re: C言語 並び替え
コードを提示するときはBBcodeを有効にした状態でcodeタグで囲み、
かつ適切なインデントをしていただけると、見やすくて助かります。
かつ適切なインデントをしていただけると、見やすくて助かります。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: C言語 並び替え
これはC言語ではなくC++ですね。タイトルに合っていません。崖っぷち さんが書きました:めんどくさいやり方なら一応できたんですけど・・・これをさらにコンパクトにしたくて・・・
#include<stdio.h>
void sori(int &x,int &y)
{ int temp;
if(x>y) {
temp=x; x=y;
y=temp;
}
return;
}
int main(void)
{ int a,b,c,d,e;
while(scanf("%d,%d,%d,%d,%d",&a,&b,&c,&d,&e)==5) {
if(a==0&&b==0&&c==0&&d==0&&e==0) break;
sori(a,b);
sori(a,c);
sori(a,d);
sori(a,e);
sori(b,c);
sori(b,d);
sori(b,e);
sori(c,d);
sori(c,e);
sori(d,e);
printf("小さい順に→%d,%d,%d,%d,%d",a,b,c,d,e);
}
return(0);
}
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)