#1
by frontriver » 6年前
大学の課題で、関数とポインタを使い次の問題をプログラミングする問題が出ました。
キーボードから入力した整数を指定した配列に読み込む関数 int readArray(int *a, int size) と指定した整数配列の先頭からn個の要素を画面に表示する関数 void printArray(int *a, int n) を作りなさい。ここでsizeは配列aの大きさを示しており、readArray(a, size) はsizeの値を超えて整数を読み込まないようにしなさい。
そして自分が作った答えがこちらです。
/*mysort.c*/
#include<stdio.h>
int readArray(int*,int);
void printArray(int*,int);
void mysort(int *,int);
#define swap(x,y) {int t; t=(x); (x)=(y); (y)=t;}
int main()
{
int a[100],n;
n = readArray(a, 100);
printArray(a, n);
mysort(a, n);
printArray(a, n);
return 0;
}
int readArray(int *a,int size)
{
int n;
/*配列aにデータを読む*/
n = 0;
printf("data = ");
while(scanf("%d",&a[n]) != EOF){
n++;
if(n>size) break;
printf("data = ");
}
return 0;
}
void mysort(int d[], int n)
{
int i,last,b,t;
b=0;
t=n-1;
while(t>b){
last=b;
for(i=b;i<t;i++)
if(d>d[i+1]){
swap(d,d[i+1]);
last = i;
}
t = last;
}
}
void printArray(int *a,int n)
{
/*配列a要素を表示する*/
int i;
for(i=0;i<n;i++) printf("a = %d\n",a);
}
コンパイル結果がこちらです。
[@peodbm02-( ~/C )-510]gcc mysort.c -o mysort
[@peodbm02-( ~/C )-511]./mysort
data = 11
data = 2
data = 3
data = [@peodbm02-( ~/C )-512]
答えすら出ずにどこが誤っているのかもわからない状態です。
かれこれ5日は考えていますが、期限が今週の木曜日23:59までなのでどうにかならないかと、この掲示板に投稿させていただきました。
ご教授の程、よろしくお願いします。
大学の課題で、関数とポインタを使い次の問題をプログラミングする問題が出ました。
キーボードから入力した整数を指定した配列に読み込む関数 int readArray(int *a, int size) と指定した整数配列の先頭からn個の要素を画面に表示する関数 void printArray(int *a, int n) を作りなさい。ここでsizeは配列aの大きさを示しており、readArray(a, size) はsizeの値を超えて整数を読み込まないようにしなさい。
そして自分が作った答えがこちらです。
/*mysort.c*/
#include<stdio.h>
int readArray(int*,int);
void printArray(int*,int);
void mysort(int *,int);
#define swap(x,y) {int t; t=(x); (x)=(y); (y)=t;}
int main()
{
int a[100],n;
n = readArray(a, 100);
printArray(a, n);
mysort(a, n);
printArray(a, n);
return 0;
}
int readArray(int *a,int size)
{
int n;
/*配列aにデータを読む*/
n = 0;
printf("data = ");
while(scanf("%d",&a[n]) != EOF){
n++;
if(n>size) break;
printf("data = ");
}
return 0;
}
void mysort(int d[], int n)
{
int i,last,b,t;
b=0;
t=n-1;
while(t>b){
last=b;
for(i=b;i<t;i++)
if(d[i]>d[i+1]){
swap(d[i],d[i+1]);
last = i;
}
t = last;
}
}
void printArray(int *a,int n)
{
/*配列a要素を表示する*/
int i;
for(i=0;i<n;i++) printf("a = %d\n",a[i]);
}
コンパイル結果がこちらです。
[@peodbm02-( ~/C )-510]gcc mysort.c -o mysort
[@peodbm02-( ~/C )-511]./mysort
data = 11
data = 2
data = 3
data = [@peodbm02-( ~/C )-512]
答えすら出ずにどこが誤っているのかもわからない状態です。
かれこれ5日は考えていますが、期限が今週の木曜日23:59までなのでどうにかならないかと、この掲示板に投稿させていただきました。
ご教授の程、よろしくお願いします。