Strona 1 z 2
[C] Obliczanie silni liczb
: 18 mar 2014, o 22:15
autor: kuna12345
Program ma wyświetlać 11 liczb naturalnych liczący ich silnie i wyświetlać wynik na konsoli. Zrobiłam (źle) za pomocą pętli, czy ktoś wie jak zrobić to poprawnie ?
Należy stworzyć program, który pobierze od użytkownika 11 liczb naturalnych i zapisze je w tablicy. Następnie dla każdej z tych liczb należy obliczyć wartość silni. Obliczanie silni ma być zaimplementowane z użyciem funkcji. Oblicz one wartości silni mają zostać wyświetlone na konsoli.
Jeżeli temat się powtarza to najmocniej przepraszam.
[C] Obliczanie silni liczb
: 18 mar 2014, o 22:22
autor: Kacperdev
Pokaż co zrobiłaś.
[C] Obliczanie silni liczb
: 18 mar 2014, o 22:27
autor: kuna12345
Kod: Zaznacz cały
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int n=11;
int tab[n];
int silnia;
printf ("Podaj 11 liczb naturalnych:
");
scanf ("%d",&n);
for (n=0;n<=tab[11];n++)
{
silnia=silnia*n;
}
printf ("Silnia liczby %d wynosi %d:
",n,silnia);
return 0;
}
[C] Obliczanie silni liczb
: 18 mar 2014, o 22:32
autor: matinf
Pomijając masę błędów w kodzie, domyślam się pewnie, że chodzi o rekurencyjną funkcję silni. Acz wydajniejsze pamięciowo jest iteracyjne;
Kod: Zaznacz cały
int silnia(int n)
if(i==1) return 1;
else return n * slinia(n-1)
[C] Obliczanie silni liczb
: 18 mar 2014, o 22:35
autor: Althorion
Warto pamiętać, że nawet najdłuższy typ całkowity,
unsigned long long int
, gwarantuje tylko 64-bitową zmienną, a już
\(\displaystyle{ 21! > 2^{64}-1}\). Jeśli musisz pisać w standardzie C sprzed 1999 roku (bo wtedy ten typ został wprowadzony), to najdłuższym typem całkowitym będzie co najmniej 32-bitowy
unsigned long int
, gdzie limit jest jeszcze ostrzejszy:
\(\displaystyle{ 13! > 2^{32}-1}\).
Można oczywiście skorzystać z biblioteki dużych liczb (np.
), ale to pewnie wykracza poza zakres ćwiczenia.
[C] Obliczanie silni liczb
: 18 mar 2014, o 22:46
autor: Kacperdev
Właściwie ze swieca szukać co w tym kodzie jest ok . Wydaje mi się, że go w ogóle nie rozumiesz.
1.
tak niewolno. Jezli nie deklarujesz dynamicznej tablicy rozmiar musi byc jednoznacznie okreslony tzn.
np.
2.
zastanow sie nad senem warunku.
Na razie tyle.
[C] Obliczanie silni liczb
: 18 mar 2014, o 22:55
autor: Althorion
Kacperdev, od 1999 roku już można deklarować tablice o rozmiarze zadanym zmienną. To rozszerzenie nosi nazwę .
[C] Obliczanie silni liczb
: 18 mar 2014, o 22:58
autor: Kacperdev
Hm... dziwne, bo uczono mnie inaczej i VS 2012 krzyczy jak tak próbuje.
[C] Obliczanie silni liczb
: 18 mar 2014, o 23:03
autor: Althorion
Bo VS 2012 . Ot, nie zauważyli pewnie, mało czasu minęło . Stąd i w poprzedniej wiadomości (tej o zakresie zmiennych) podkreślałem konieczność zgodności kompilatora, bo to w przypadku dzieła Microsoftu niestety nie chce być oczywiste. Dopiero w wersji 2013 to poprawili. Wikipedia ma , jeśli to kogoś interesuje.
[C] Obliczanie silni liczb
: 18 mar 2014, o 23:05
autor: Kacperdev
No proszę, dobrze wiedzieć. Chyba dlatego wolę matematykę. Tam zasady tak szybko sie nie zmieniają .
Chyba starczy offtopa.
[C] Obliczanie silni liczb
: 19 mar 2014, o 09:07
autor: kuna12345
Wiem że ten kod który napisałam jest tragiczny ale dopiero się uczę więc proszę o wyrozumiałość i cierpliwość
[C] Obliczanie silni liczb
: 19 mar 2014, o 17:01
autor: Althorion
Program ten powinien składać się z trzech części:
1. Pobierania danych od użytkownika i zapisywania ich w tablicy.
2. Obliczania silni dla danych z tablicy.
3. Wyświetlania elementów tablicy.
Zacznijmy od pierwszego punktu. Spróbuj napisać go, przy użyciu pętli for
. Sprawdzimy Ci to i poprawimy ewentualne błędy.
[C] Obliczanie silni liczb
: 19 mar 2014, o 17:09
autor: MichalPWr
Kacperdev pisze:
tak niewolno. Jezli nie deklarujesz dynamicznej tablicy rozmiar musi byc jednoznacznie okreslony tzn.
Autor miał chyba na myśli dyrektywę preprocesora.
Kod: Zaznacz cały
.
.
#define ROZMIAR_TABLICY 11
.
.
.
int tab[ ROZMIAR_TABLICY ];
.
.
.
[C] Obliczanie silni liczb
: 20 mar 2014, o 23:18
autor: Kacperdev
Przykładowy kod:
Kod: Zaznacz cały
#include <stdio.h>
#include <conio.h>
#define TABLICA 11
long silnia(int a);
int main()
{
int tab[TABLICA];
for(int i=0;i<TABLICA;++i) scanf("%d",&tab[i]);
for(int i=0;i<TABLICA;++i) printf("Silnia z %d wynosi: %d
",tab[i],silnia(tab[i]));
getch();
return 0;
}
long silnia(int a)
{
if (a==0) return 1;
else return a*silnia(a-1);
}
[C] Obliczanie silni liczb
: 22 mar 2014, o 14:40
autor: Gouranga
Kacperdev, niepotrzebnie mieszasz oddzielając nagłówek funkcji od ciała