プロが教えるわが家の防犯対策術!

C言語についてです。
整数の 1 次元配列とその要素数を引数として、配列の要素を昇順に並び替える関数 void sort_asc(int data[], int n) を作成し、(main関数で)キーボードから高々32個の非 負整数の入力を考える。入力の終了は32個の非負整数が入力されるか、途中で1つの負の整数が入力された時とし、負の整数はデータに含めない。入力データを関数sort_asc()に渡し、昇順に並んだデータを表示するプログラムを作成せよ、という問題を教えてほしいです。お願いいたします。

A 回答 (2件)

一応作ってみました。

機能もしっかりしているみたいです。
ただし私はプログラマーではなく、単なる事務員ですので、コードが雑ですので、コードの綺麗さを求めるならばあしからず。

あと、スペースは自分で入れて。

#include<stdio.h>

void sort_asc(int data[], int n);

int main(void)
{
int check;
int times = 0;
int listing[32];

do
{
printf("\nEnter the number.\n\tNumber %d = ",times + 1);
scanf("%d",&check);

if(check < 0)break;

listing[times] = check;
times += 1;
} while(times < 32);

int sort_listing[times];
sort_asc(listing,times);
}

void sort_asc(int data[], int n)
{

for(int i=0;i<n;i++)
{
for(int j=0;j<n-i;j++)
{
if(data[i] > data[i+j])
{
int tempb = data[i];
int temps = data[i+j];

data[i] = temps;
data[i+j] = tempb;
}
}
}

for(int k=0;k<n;k++)
{
printf("%d\n",data[k]);
}
}
    • good
    • 0
この回答へのお礼

ありがとうございます!参考にさせていただきます!

お礼日時:2021/06/23 17:41

質問者様は恐らくC言語の文法がわからないのでは無く、問題に示された入力から出力を得るための処理手順がわからないのでしょう。


つまりはソースコードを書くコーディングではなく日常使用している言語で考える設計ですね。
箇条書きでもよおいですし、何らかのチャート図の書き方を習っておられるのならそれを使って処理手順を考えましょう。
そこからであり、そこがプログラミング技術の習得で一番重要なことです。

ちなみにそれが出来るようにならないと違う問題を出されたらまた「???」となります。

参考まで。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!