a[10],b[10],c[20]をint型の配列とする。a[/url],b[/url]にそれぞれ10個ずつの整数を昇順に入力し、それらを併合した結果をc[/url]に格納し、出力するプログラムを作成。
わかる限り、書いてみたのですが、どうもうまくいきません。
どなたか、解説していていただけますでしょうか?
#include<stdio.h>
#include<math.h>
#define N20
int main(void)
{
int a[10];
int b[10];
int c[20];
int i,j,n,l,m,w;
int temp1;
n=10;
printf("aに10個のデータを入力\n");
for(i=0;i<9;i++)
{
printf("aにデータを入力\n",i+1);
scanf("%d",&a);
}
for(i=0;i<9;i++)
{
for(n=i+1;n<10;n++)
{
if(a[n]>a)
{
temp1=a[n];
a[n]=a;
a=temp1;
}
}
}
printf("ソート結果\n");
for(i=0;i<10;i++)
{
printf("%d\n",a);
c=a;
}
for(j=0;j<9;j++)
{
for(l=j+1;l<10;l++)
{
if(b[[/url]>b[j])
{
temp1=b[[/url];
b[[/url]=b[j];
b[j]=temp1;
}
}
}
printf("ソート結果\n");
for(j=0;j<10;j++)
{
printf("%d/n",a[j]);
c[10+j]=b[j];
}
for(m=0;m<19;m++)
{
for(w=m+1;w<20;w++)
{
if(c[m]>c[w])
{
temp1=c[m];
c[m]=c[w];
b[w]=temp1;
}
}
}
printf("ソート結果\n");
for(w=0;w<20;w++)
{
printf("%d\n",a[m]);
}
return 0;
}
学校の課題
-
管理人
Re:学校の課題
まず、プログラムコードを投稿するときはプレタグを使ってください。
詳しくは規約をご覧ください。
投稿された元データを見ましたが、字下げがぐちゃぐちゃでした。
まず綺麗に括弧と括弧を同じ位置に字下げし、プログラムをみやすくしましょう。
Emacsなどならタブを押していけば字下げできます。
それから昇順に入力するんじゃなくて入力した数値を昇順に並び替えるプログラムじゃないですか?
また、せっかくdefineで定義を使っているのならそれを使ってあげましょう。
何も考えずに綺麗に書き換えました。
bの値が未定ですし、正しい実行結果は得られません。
推測するに、
aに適当に入力したものを昇順にして表示し、
bに適当に入力したものを昇順にして表示し、
さらにそれらをくっつけて、昇順にしてcに格納し、表示するプログラムをかけという問題なのではないでしょうか?
また、n=10を最初にいれているのはなぜでしょう?
まず、問題を明確にすること。
そして全部いっぺんに作ろうと思わず、
入力を受け付ける部分
ソートする部分
表示する部分
と段階的に少しずつ作っていきましょう。
いっぺんに作るのが困難でもひとつだけ作ればできることもあります。
詳しくは規約をご覧ください。
投稿された元データを見ましたが、字下げがぐちゃぐちゃでした。
まず綺麗に括弧と括弧を同じ位置に字下げし、プログラムをみやすくしましょう。
Emacsなどならタブを押していけば字下げできます。
それから昇順に入力するんじゃなくて入力した数値を昇順に並び替えるプログラムじゃないですか?
また、せっかくdefineで定義を使っているのならそれを使ってあげましょう。
何も考えずに綺麗に書き換えました。
bの値が未定ですし、正しい実行結果は得られません。
推測するに、
aに適当に入力したものを昇順にして表示し、
bに適当に入力したものを昇順にして表示し、
さらにそれらをくっつけて、昇順にしてcに格納し、表示するプログラムをかけという問題なのではないでしょうか?
また、n=10を最初にいれているのはなぜでしょう?
まず、問題を明確にすること。
そして全部いっぺんに作ろうと思わず、
入力を受け付ける部分
ソートする部分
表示する部分
と段階的に少しずつ作っていきましょう。
いっぺんに作るのが困難でもひとつだけ作ればできることもあります。
#include<stdio.h>
#include<math.h>
#define N1 10
#define N2 20
int main(void){
int a[N1],b[N1],c[N2];
int i,j,n,l,m,w,temp1;
n=10;
printf("aに%d個のデータを入力\n",N1);
for(i=0;i<N1;i++){
printf("%d個目: aにデータを入力\n",i+1);
scanf("%d",&a);
}
for(i=0;i<N1-1;i++){
for(n=i+1;n<N1;n++){
if(a[n]>a){
temp1=a[n];
a[n]=a;
a=temp1;
}
}
}
printf("ソート結果\na: ");
for(i=0;i<N1;i++){
printf("%d ",a);
c=a;
}
printf("\n");
for(j=0;j<N1-1;j++){
for(l=j+1;l<N1;l++){
if(b[[/url]>b[j]){
temp1=b[[/url];
b[[/url]=b[j];
b[j]=temp1;
}
}
}
printf("ソート結果\na: ");
for(j=0;j<10;j++){
printf("%d/n",a[j]);
c[10+j]=b[j];
}
printf("\n");
for(m=0;m<N2-1;m++){
for(w=m+1;w<N2;w++){
if(c[m]>c[w]){
temp1=c[m];
c[m]=c[w];
b[w]=temp1;
}
}
}
printf("ソート結果\na: ");
for(w=0;w<N2;w++){
printf("%d\n",a[m]);
}
printf("\n");
return 0;
}