Я написал программу, которая должна взять массив чисел и найти индекс массива наименьшего числа. Однако, когда я набираю числа с пробелами между ними и затем нажимаю Enter, программа продолжает работать. Что может быть причиной? Вот код:программа, которая не завершается
#include<stdio.h>
//read numbers to an array
//find minimum
//print the index of minimum
double findMinimum(int size,double array[]){
int n;
int minIndex=0;
for(n=1;n<size;size++){
if(array[n]<array[n-1]){
minIndex=n;
}
}
return minIndex;
}
int main(){
setvbuf(stdout,NULL,_IONBF,0);
int size=0;
double inArray[size];
printf("Enter an array of numbers:");
int k=0;
char c;
while(c!='\n'){
c=getchar();
if(c=='\n'){
break;
}
scanf("%lf",&inArray[k]);
k++;
size++;
};
int minIndex=0;
minIndex=findMinimum(size,inArray);
printf("The index of minimum number is %i",minIndex);
return 0;
}
Я также взял на себя часть кода, который сканирует числа в массив. Я попытался изменить цикл while и использовал оператор break, но вывод дал все числа в массиве, кроме первого. Вот код:
#include<stdio.h>
//read numbers to an array
int main(){
setvbuf(stdout,NULL,_IONBF,0);
int size=0;
double inArray[size];
printf("Enter an array of numbers ending with question mark:\n");
int k=0;
char c;
while(1){
c=getchar();
if(c=='?'){
break;
}
scanf("%lf",&inArray[k]);
k++;
size++;
};
int n;
for(n=0;n<size;n++){
printf("%f\n",inArray[n]);
}
return 0;
}
Благодарим за помощь!
Условие должно быть 'if (array [n]
mangusta
Спасибо, теперь цикл завершается. Однако выход программы неверен. Я попытался напечатать числа, которые хранятся в массиве, и они оказались либо 0.000000, либо случайным числом (мусором). В чем проблема? Это в цикле while? – baur
@mangusta вы правы, –