さて、私はこの単純なコードを持っています。ユーザーに保存したい数字の数を尋ね、次に数字を尋ねます。ユーザーが数字を書くたびに、プログラムは彼がすでに書いた数字を出力し、数字を最小から順に並べ替えます最高。
問題は、ユーザーがプログラムに 9 つ以上の数字を保存するように指示すると、プログラムが停止することです。ユーザーが 8 つ以下の数字を保存することを選択した場合、プログラムは完全に機能します。何が起こっているのかわかりません、あなたの助けに感謝します
変数およびその他の用語は、私の言語であるスペイン語に基づいています。ここにいくつかの翻訳があります。
関数guardaNum: 数値を配列に保存します
関数 ordena: 配列の番号を並べ替える
関数 imprime: 配列を出力します
contador: カウンターです
cant: ユーザーが節約したい数です。
ご協力いただきありがとうございます!
#include <stdio.h>
int guardaNum(int *pnum,int lista[],int *pcontador);
int ordena(int lista[],int *pcontador);
void imprime(int lista[],int *pcant);
int main(void)
{
int cant, num, *pnum, lista[cant], i,contador,*pcontador ;
printf("Ingrese la cantidad de numeros que desea agregar a la lista: \n");
scanf("%d", &cant);
for(i=0;i<cant;i++)
{
lista[i]=-99;
}
for(i=0;i<cant;i++)
{
printf("Ingrese un Numero: ");
scanf("%d",&num);
pnum=#
contador=i;
pcontador=&contador;
guardaNum(pnum,lista,pcontador);
ordena(lista,pcontador);
imprime(lista,pcontador);
}
}
int guardaNum(int *pnum,int lista[],int *pcontador)
{
lista[*pcontador]=*pnum;
return 0;
}
int ordena(int lista[], int *pcontador)
{
int i,j, temp;
for(j=0;j<*pcontador;j++)
{
for(i=0;i<*pcontador;i++)
{
if(lista[i]>lista[i+1])
{
temp=lista[i+1];
lista[i+1]=lista[i];
lista[i]=temp;
}
}
}
}
void imprime(int lista[],int *pcontador)
{
int i;
for(i=0;i<=*pcontador;i++)
{
printf("%d\n",lista[i]);
}
}