programy w jezyku C
-
- Użytkownik
- Posty: 63
- Rejestracja: 18 sty 2009, o 21:53
- Płeć: Mężczyzna
- Podziękował: 37 razy
- Pomógł: 5 razy
programy w jezyku C
1.Napisać program generujący 10000 liczb losowych z przedziału [0,100) i wyznaczający
częstości wystąpień poszczególnych liczb.
2. Napisać program wczytujący z klawiatury 8-elementową tablicę liczb typu double,
następnie obliczyć:
• sumy elementów dodatnich i ujemnych,
• sumę elementów o wartościach należących do przedziału [a,b], granice przedziału
spełniające warunek a<b należy wczytać z klawiatury
• sumę elementów, których indeksy należą do zadanego przedziału indeksów [k,l];
indeksy należy wczytać z klawiatury z zabezpieczeniem formatu.
3. Rozwinięcie w szereg Maclaurina funkcji arctan(x) dane jest następującą formułą:
\(\displaystyle{ arctan(x)= \sum_{n=0}^{ \infty } (-1)^{n} \frac{x ^{2n+1} }{2n+1}}\)
Oblicz liczbę π(pi) z dokładnością do k miejsc po kropce dziesiętnej ( k<10 – parametr
wczytaj z klawiatury) stosując rozwinięcie wokół punktu x=1 .
Z góry dziękuje za wszelką pomoc.
częstości wystąpień poszczególnych liczb.
2. Napisać program wczytujący z klawiatury 8-elementową tablicę liczb typu double,
następnie obliczyć:
• sumy elementów dodatnich i ujemnych,
• sumę elementów o wartościach należących do przedziału [a,b], granice przedziału
spełniające warunek a<b należy wczytać z klawiatury
• sumę elementów, których indeksy należą do zadanego przedziału indeksów [k,l];
indeksy należy wczytać z klawiatury z zabezpieczeniem formatu.
3. Rozwinięcie w szereg Maclaurina funkcji arctan(x) dane jest następującą formułą:
\(\displaystyle{ arctan(x)= \sum_{n=0}^{ \infty } (-1)^{n} \frac{x ^{2n+1} }{2n+1}}\)
Oblicz liczbę π(pi) z dokładnością do k miejsc po kropce dziesiętnej ( k<10 – parametr
wczytaj z klawiatury) stosując rozwinięcie wokół punktu x=1 .
Z góry dziękuje za wszelką pomoc.
- Le_Quack
- Użytkownik
- Posty: 20
- Rejestracja: 30 maja 2009, o 12:03
- Płeć: Mężczyzna
- Lokalizacja: City 17
- Pomógł: 6 razy
programy w jezyku C
Zadanie 1.
Przypuszczam że możesz nie zrozumieć tego: "wyst[rand() % 101]++;", chodzi o to że zostaje zwiększony element tablicy w zależności od wylosowanej liczby, czyli jak wylosuje liczbę 28 to 28. element tablicy "wyst" zostanie zwiększony o jedną wartość.
Kod: Zaznacz cały
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int i,wyst[101];
int main()
{
srand(time(0)); // Funkcja losująca liczby na podstawie czasu
for(i=0; i<10000; i++){ // Wykonuje pętlę 10000 razy
wyst[rand() % 101]++; // Zwiększ element tablicy na który wskazuje liczba wylosowana <0,100>
}
for(i=0; i<101; i++){ // Pętla wypisująca częstość występowania liczb
printf("Liczba %d wystapila %d razy
", i, wyst[i]);
}
return 0;
}
- Le_Quack
- Użytkownik
- Posty: 20
- Rejestracja: 30 maja 2009, o 12:03
- Płeć: Mężczyzna
- Lokalizacja: City 17
- Pomógł: 6 razy
programy w jezyku C
Nie, ma być 101. Skompiluj sobie program i przećwicz jego działanie z randem dla 100 i 101. Przy "rand() % 100" liczba 100 nigdy nie wystąpi.
Chyba że jemu chodziło o to żeby tej 100 nie było...
Chyba że jemu chodziło o to żeby tej 100 nie było...
- Dedemonn
- Użytkownik
- Posty: 689
- Rejestracja: 21 lut 2007, o 19:40
- Płeć: Mężczyzna
- Lokalizacja: Z kompa
- Podziękował: 26 razy
- Pomógł: 137 razy
programy w jezyku C
Skompilować nie mam jak, ale nie ważne. Zaznaczyłem tylko, że przedział [0,100), oznacza 0 włącznie i 100 wyłączając - więc modulo 100 jest wtedy w porządku.
(dodam jeszcze, że niesprecyzowane to polecenie - nie ma mowy o tym, że to liczby całkowite ;] )
(dodam jeszcze, że niesprecyzowane to polecenie - nie ma mowy o tym, że to liczby całkowite ;] )
-
- Użytkownik
- Posty: 63
- Rejestracja: 18 sty 2009, o 21:53
- Płeć: Mężczyzna
- Podziękował: 37 razy
- Pomógł: 5 razy
programy w jezyku C
Dziękuje za pomoc przy zadaniu 1.
Niestety dostalem te zadania jako prace domowa w takiej formie jak sa przedstawione i nie potrafie powiedziec czy chodzi o liczby całkowite. A co do zakresu to z zadania chyba wynika
Bede wdzieczny za pomoc przy pozostalych zadaniach, przy 2 problemem sa te dwa podpunkty:
Niestety dostalem te zadania jako prace domowa w takiej formie jak sa przedstawione i nie potrafie powiedziec czy chodzi o liczby całkowite. A co do zakresu to z zadania chyba wynika
ze 100 nie wchodzi do tego przedzialu.10000 liczb losowych z przedziału [0,100)
Bede wdzieczny za pomoc przy pozostalych zadaniach, przy 2 problemem sa te dwa podpunkty:
a w 3 nie wiem od czego zaczac.• sumę elementów o wartościach należących do przedziału [a,b], granice przedziału
spełniające warunek a<b należy wczytać z klawiatury
• sumę elementów, których indeksy należą do zadanego przedziału indeksów [k,l];
indeksy należy wczytać z klawiatury z zabezpieczeniem formatu
- Dedemonn
- Użytkownik
- Posty: 689
- Rejestracja: 21 lut 2007, o 19:40
- Płeć: Mężczyzna
- Lokalizacja: Z kompa
- Podziękował: 26 razy
- Pomógł: 137 razy
programy w jezyku C
Zakładając, że tablicę mamy już uzupełnioną:• sumę elementów o wartościach należących do przedziału [a,b], granice przedziału
spełniające warunek a<b należy wczytać z klawiatury
Kod: Zaznacz cały
int a,b;
printf("Podaj a: ");
scanf("%d", &a);
printf("Podaj b: ");
scanf("%d", &b);
int i;
double suma = 0;
for( i = 0; i < tab.length; i++ )
if( tab[i] >= a && tab[i] <= b )
suma += tab[i];
printf("Suma liczb z przedzialu [%d, %d] wynosi %d.", a, b, suma);
Pzdr.
-
- Użytkownik
- Posty: 63
- Rejestracja: 18 sty 2009, o 21:53
- Płeć: Mężczyzna
- Podziękował: 37 razy
- Pomógł: 5 razy
programy w jezyku C
Poprzez slowo pomoc nie oczekuje gotowcow, jestem wdzieczny za wszelkie rady i wskazowki
Program do punktu 2 napisalem, mam nadzieje ze o to chodzilo:
W 3 zadaniu jak zapisac w C \(\displaystyle{ \sum_{n=0}^{ \infty }}\)?
Na zajeciach robilismy sumowanie, ale gdzie obie granice byly skonczonymi liczbami. Wtedy obliczalismy wyrazenia za pomoca petli.
Program do punktu 2 napisalem, mam nadzieje ze o to chodzilo:
Kod: Zaznacz cały
#include <stdio.h>
#include <conio.h>
int main() {
int i,k,l,c,e,m;
double tab[8],d=0,u=0,suma=0,a,b,y,z;
for (i=0;i<8;i++)
{
printf("a[%d]=",i); scanf("%lf",&tab[i]);
}
for (i=0;i<8;i++)
{
if (tab[i]>0)
d+=tab[i];
else
u+=tab[i];
}
printf("Suma liczb dodatnich = %lg
",d);
printf("Suma liczb ujemnych = %lg
",u);
printf("Podaj a: "); scanf("%lf",&y);
printf("Podaj b: "); scanf("%lf",&z);
if(y>z)
{a=z;
b=y;}
else
{a=y;
b=z;}
for(i=0;i<8;i++)
if(tab[i]>=a && tab[i]<=b)
suma+=tab[i];
printf("Suma liczb z przedzialu [%lg, %lg] wynosi %lg.
",a,b,suma);
do
{ printf("Podaj k: "); m=scanf("%d",&c);
fflush(stdin);
}while (m==0);
do
{ printf("Podaj l: "); m=scanf("%d",&e);
fflush(stdin);
}while (m==0);
if(c>e)
{k=e;
l=c;}
else
{k=c;
l=e;}
i=k;
suma=0;
for(i;i<=l;i++)
suma+=tab[i];
printf("Suma liczb z przedzialu indeksow [%d, %d] wynosi %lg.
",k,l,suma);
system("pause");
}
Na zajeciach robilismy sumowanie, ale gdzie obie granice byly skonczonymi liczbami. Wtedy obliczalismy wyrazenia za pomoca petli.
- Dedemonn
- Użytkownik
- Posty: 689
- Rejestracja: 21 lut 2007, o 19:40
- Płeć: Mężczyzna
- Lokalizacja: Z kompa
- Podziękował: 26 razy
- Pomógł: 137 razy
programy w jezyku C
Tutaj również górna granica będzie liczbą, bo pętla nieskończona by się nigdy nie skończyła. Ja bym to zrobił tak, że przy każdym obrocie pętli sprawdzałbym ile miejsc po przecinku liczba już posiada (czyli jaką ma dokładność).
-
- Użytkownik
- Posty: 63
- Rejestracja: 18 sty 2009, o 21:53
- Płeć: Mężczyzna
- Podziękował: 37 razy
- Pomógł: 5 razy
programy w jezyku C
Dzieki, a jak sie sprawdza ilosc miejsc danej liczby po przecinku?
Czy moge uzyc do tego warunku if np.
Czy moge uzyc do tego warunku if np.
Kod: Zaznacz cały
petla{
if (arctan(x)==nie wiem jak napisac warunek na dana liczbe miejsc po przewcinku)
goto e1;
}
e1: printf("wynik: %lg",&wynik);
- Dedemonn
- Użytkownik
- Posty: 689
- Rejestracja: 21 lut 2007, o 19:40
- Płeć: Mężczyzna
- Lokalizacja: Z kompa
- Podziękował: 26 razy
- Pomógł: 137 razy
programy w jezyku C
Oj, tutaj już chyba nie pomogę, bo musiałbym znać funkcje biblioteczne C. Z braku takowej napisałbym funkcję, parsującą liczbę do stringa i za pomocą pętli for zliczał ilość znaków po przecinku (kropce).
PS. NIGDY nie używaj instrukci goto. Jest ona zła, be, nieoptymalna, wprowadza zamieszanie i utrudnia zrozumienie kodu. W Twoim przypadku nigdzie nawet nie trzeba skakać, tylko wywołać break (wyjście z pętli).
Pozdrawiam.
PS. NIGDY nie używaj instrukci goto. Jest ona zła, be, nieoptymalna, wprowadza zamieszanie i utrudnia zrozumienie kodu. W Twoim przypadku nigdzie nawet nie trzeba skakać, tylko wywołać break (wyjście z pętli).
Pozdrawiam.