Dwa zadania w C

Fristajler
Użytkownik
Użytkownik
Posty: 45
Rejestracja: 9 sty 2008, o 12:22
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 4 razy

Dwa zadania w C

Post autor: Fristajler »

Witam. Oto treść zadania:


Napisz funkcję, która dla n należącego do liczb naturalnych zwróci sumę szeregu:

\(\displaystyle{ s(n)= \frac{1}{1!} +\frac{2}{2!}+\frac{3}{3!}+...+\frac{n}{n!}}\)


A oto moje rozwiązanie (błędne niestety). Będę wdzięczny za poprawienie:

Zadanie 1:

Kod: Zaznacz cały

#include<stdio.h>
int silnia(int liczba)
{
int c,sil=1;
for(c=1;c<=liczba;c++)
sil=sil*c;
return sil;
}
int main(void)
{
int n,a=1;
float s=0.0;
printf("Wprowadz liczbe n: ");
scanf("%d",n);
while (a<=n)
{
s=s+(a/silnia(a));
a++;
}
printf("Suma liczb wynosi: %f
",s);
return 0;
}
Drugie zrobione, to nie dyktuje.
blv
Użytkownik
Użytkownik
Posty: 3
Rejestracja: 19 gru 2007, o 01:14
Płeć: Mężczyzna
Lokalizacja: Krosno
Pomógł: 1 raz

Dwa zadania w C

Post autor: blv »

powinno być scanf("%d",&n);
Fristajler
Użytkownik
Użytkownik
Posty: 45
Rejestracja: 9 sty 2008, o 12:22
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 4 razy

Dwa zadania w C

Post autor: Fristajler »

blv pisze:powinno być scanf("%d",&n);
Poprawiem, ale to i tak daje mi zy wynik, bo jak wprowadzam na przykad 5, to odpowied jest 2 ;/
Awatar użytkownika
Szemek
Użytkownik
Użytkownik
Posty: 4819
Rejestracja: 10 paź 2006, o 23:03
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Podziękował: 43 razy
Pomógł: 1407 razy

Dwa zadania w C

Post autor: Szemek »

moja propozycja:

Kod: Zaznacz cały

#include<stdio.h>
float silnia(float liczba)
{
	float c,sil=1;
	for(c=1;c<=liczba;c++)
	sil=sil*c;
	return sil;
}
int main()
{
	float n,a=1.0;
	float s=0.0;
	printf("Wprowadz liczbe n: ");
	scanf("%f",&n);
	while (a<=n)
	{
		s=s+(a/silnia(a));
		a++;
	}
	printf("Suma liczb wynosi: %f
",s);
	return 0;
}
Fristajler
Użytkownik
Użytkownik
Posty: 45
Rejestracja: 9 sty 2008, o 12:22
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 4 razy

Dwa zadania w C

Post autor: Fristajler »

Mistrzu. Dzieki !
Xitami

Dwa zadania w C

Post autor: Xitami »

a tak nie zgrabniej?

Kod: Zaznacz cały

    int i; float s,u;

    if (n>20) n=20;
    u=1.0; s= 0.0;
    for (i=1; i<=n; i++) {
        s+= u;
        u/= i;
    }
    printf("%f
", s);
ODPOWIEDZ