Ahoj,
zacinam s Cckem a mam problem ohlednene nasledujicho kodu. Jedna se o program pro nacitani cisel, ktery vyhodnucuje minimalni a maximalni cislo ze zadanych a dale arit. prumer zadavanych cisel.
#include <stdio.h>
#include <conio.h>
int main(){
double pole[100]; /* pole celych cisel (maximalne 100) */
int i,a;
int pocet = 0;
float d,souc,max,min;
double cislo;
printf("**********PROGRAM NA HLEDANI MINIMA A MAXIMA VYPOCET d**********\n\n");
while(1){
souc = 0;
printf("Kolik cisel chtet zadat?\n(maximalne vsak %d):" , 100);
a = scanf("%d", &pocet);
if(a == 1){
printf("Vzdy zadejte cislo a nasledne stiknete enter.%d\n\n",pocet);
for(i=0; i<pocet; i++){
scanf("%lf",&pole[i]);
souc=souc+pole[i]; //nacitani cisel, pro pozdejsi vypocet prumeru
//printf("Bylo nacteno cislo %d\n",pole[i]);
}
printf("\n\n******Pole obsahuje prvky:******\n\n");
for(i=0; i<pocet; i++){
printf("Cislo c.[%d] je %.2f\n",i,pole[i]);
}
max=pole[0];
min=pole[0];
for(i=1; i<pocet; i++){
if (pole[i]>max){
max=pole[i];
}
if (pole[i]<min){
min=pole[i];
}
}
// Vypocet prumeru (nacitany pri zadavani)
d = souc/pocet;
printf("\n********************************\nMaximalni zadane cislo je: %.2f\n",max);
printf("Minimalni zadane cislo je: %.2f",min);
printf("\nAritmeticky prumer zadanych cisel je: %.2f",d);
}
else{
printf("\nZadal jsi spatne hodnotu.Zkus to znova!");
}
printf("\n********************************\nPro dalsi vypocet stikni mezernik(pro ukonceni,cokoli):\n\n");
//if (scanf("%lf",&cislo)==EOF)break;
if(getch()!=' ')break;
}
}
Problem spociva v radku:
printf("Kolik cisel chtet zadat?\n(maximalne vsak %d):" , 100);
a = scanf("%d", &pocet);
Pri behu progamu: pokud zadam spravne pocet cisel, tak vse probhne jak ma a pokud stisknu mezernik program se opakuje a vse o5 funguje. Bohuzel pokud zadam spatne pocet cisel (napisu treba nejaky text) , sice mi zafunguje podminka a vypise mi to, ze jsem zadal spatne at to zkusim znovu, ale bohuzel kdyz dam mezernik a chci znovu, tak uz mi nefuguje prave to scanf a nemuzu tam zadne cislo zadat.
Prosim nevite jak to opravit? Nemuzu na to vubec prijit.
Dekuji