Witam mam problem z następującym programem:
"Napisz program, który oblicza sume 1,2,3, i tak dalej (aż do pewnej granicy) wyrazów następujących ciągów:
-
1.0/2.0 + 1.0/3.0 + 1.0/4.0 + ...
-
-1.0/2.0 + 1.0/3.0 -1.0/4.0 + ...
Maksymalna liczba wyrazów powinna być określana przez użytkownika."
Niestety mój program omija całkiem drugą pętlę while. Nie wiem czemu skoro wpisanie wartości nie będącej liczbą jest warunkiem na wyjście z pętli i powinien on po prostu przejść do następnej. Proszę o wyjaśnienie :)
(Dodam, że programowania uczę się od niedawna, więc proszę o wyrozumiałość.)
#include <stdio.h>
int main() {
int Awyraz,Bwyraz,i;
float presuma,suma;
printf("Obliczmy sume wyrazow dwoch ciagow:\n "
"\na(n)= 1/2 , 1/3 , 1/4, ...\n "
"\nb(n)= -1/2 , 1/3 , -1/4, ...\n");
printf("\n\nPodaj nr ostatniego wyrazu ciagu a(n): ");
while ( (scanf("%d", &Awyraz)==1) && (Awyraz>0) )
{
suma=presuma=0;
for (i=1;i<=Awyraz;i++){
float f = i;
presuma= (1.0/(f + 1.0));
suma+=presuma;
}
printf("\nSuma %d wyrazow ciagu a(n) wynosi: %f\n\n",Awyraz,suma);
printf("Podaj nowy numer lub przejdz do drugiego ciagu wpisujac znak nie bedacy liczba: ");
}
printf("Podaj nr ostatniego wyrazu ciagu b(n): ");
while ( (scanf("%d", &Bwyraz)==1) && (Bwyraz>0) ) // nie chce czytac tej pętli
{
suma=presuma=0;
for (i=1;i<=Bwyraz;i++){
float f = i;
presuma=(((-1.0)*(f)*(1.0))/(f + 1.0));
suma+=presuma;
}
printf("\nSuma %d wyrazow ciagu b(n) wynosi: %f\n\n",Bwyraz,suma);
printf("Podaj nowy numer lub wyjdz z programu wpisujac znak nie bedacy liczba: ");
}
printf("blebleble"); // to juz przeczyta
return 0;
}