|
zadanko z c++
kasienka7115 - 22-10-2007 21:15
halooo Koledzy czy moglibyście look'nąć sobie na moje zadanka z programowania , bo wiem że jesli ktoś pomoże mi je rozwiązać to się w końcu nauczę :))))) Bardzo Was proszę o pomoc :]
1. Program wypisujący wartości x, x2 oraz x3 dla liczby rzeczywistej x ∈ [xp, xk] i zmieniającej się z krokiem Δx>0. Program należy napisać, korzystając z pętli for, a następnie z pętli while i do..while.
2. Program wczytujący N liczb rzeczywistych z klawiatury. Program powinien: - obliczyć i wypisać sumę wszystkich wczytanych liczb, - obliczyć i wypisać sumę wczytanych liczb > 0, - obliczyć i wypisać średnią arytmetyczną wszystkich wczytanych liczb, - obliczyć i wypisać średnią arytmetyczną wczytanych liczb < 0.
3. Program wczytujący z klawiatury liczby całkowite aż do pojawienia się pierwszej liczby < 0. Program powinien obliczać i wypisywać średnią arytmetyczną wczytanych liczb > 0, iloczyn wczytanych liczb spoza przedziału [5, 10] oraz ilość wczytanych liczb parzystych.
4. Ogólny wyraz ciągu ai dany jest następującym wzorem: a i2 15i 50; i 1,2,3... i = − + = Proszę napisać program obliczający sumę wyrazów tego ciągu, począwszy od aNp aż do aNk. Wartości Np oraz Nk > Np należy wczytać z klawiatury. Jak określić wartość najmniejszego wyrazu tego ciągu dla wyrazów od a1 do aNk? A dla wyrazów od aNp aż do aNk?
z góry dziekuję
pozdawiam Dolores :)
ponton - 22-10-2007 22:02
A z czym masz konkretnie problem?
thalcave - 22-10-2007 22:14
1. Program wypisujący wartości x, x2 oraz x3 dla liczby rzeczywistej x ∈ [xp, xk] i zmieniającej się z krokiem Δx>0. Program należy napisać, korzystając z pętli for, a następnie z pętli while i do..while.
to mają być 3 wersje tego programu?
2. Program wczytujący N liczb rzeczywistych z klawiatury. Program powinien: - obliczyć i wypisać sumę wszystkich wczytanych liczb, - obliczyć i wypisać sumę wczytanych liczb > 0, - obliczyć i wypisać średnią arytmetyczną wszystkich wczytanych liczb, - obliczyć i wypisać średnią arytmetyczną wczytanych liczb < 0.
#include <iostream>
float suma1(float [] , int); float suma2(float [] , int); float sred1(float [] , int); float sred2(float [] , int);
int main() { using std::cout; using std::endl; using std::cin;
int N; cout << "Podaj N:"; cin >> N;
float licz[N]; for (int i=0; i < N; i++) { cout << "Podaj " << i+1 << " liczbe: "; cin >> licz[i]; };
cout << "Suma wszystkich liczb: " << suma1(licz , N) << endl; cout << "Suma licz wiekszych od 0: " << suma2(licz , N) << endl; cout << "Srednia wszystkich liczb: " << sred1(licz , N) << endl; cout << "Srednia licz mniejszych od 0: " << sred2(licz , N) << endl;
return 0; };
float suma1 (float L[] , int N) { float suma = 0; for (int i = 0 ; i < N ; i++) { suma += L[i]; };
return suma;
};
float suma2 (float L[] , int N) { float suma = 0; for (int i = 0 ; i < N ; i++) { if ( L[i] > 0 ) suma += L[i]; };
return suma;
};
float sred1 (float L[] , int N) { float sred = 0; for (int i = 0 ; i < N ; i++) { sred += L[i]; };
sred = sred / N; return sred;
};
float sred2 (float L[] , int N) { float sred = 0; int j = 0; for (int i = 0 ; i < N ; i++) { if ( L[i] < 0 ) { sred += L[i]; j++; }; };
sred = sred / j; return sred;
};
phund - 22-10-2007 22:57
Generalnie to http://rtfm.killfile.pl/#praca_domowa. Możesz napisać, z czym masz problem, ale to Ty masz się czegoś nauczyć, a nie oddać nauczycielowi gotowca z internetu.
thalcave - 22-10-2007 23:09
3. Program wczytujący z klawiatury liczby całkowite aż do pojawienia się pierwszej liczby < 0. Program powinien obliczać i wypisywać średnią arytmetyczną wczytanych liczb > 0, iloczyn wczytanych liczb spoza przedziału [5, 10] oraz ilość wczytanych liczb parzystych.
#include <iostream> #include <vector>
using std::vector;
float sred(vector<int> , int); int iloczyn(vector<int> , int); int ilosc(vector<int> , int);
int main() { using std::cout; using std::endl; using std::cin; vector<int> liczby; int temp; int i = 0; cout << "Podaj " << i << " liczbe: "; cin >> temp; while ( temp >= 0 ) { liczby.push_back(temp); i++; cout << "Podaj " << i << " liczbe: "; cin >> temp; }; cout << endl; cout << "Srednia liczb wiekszych od 0: " << sred(liczby , i) <<endl; cout << "Iloczyn liczb poza [5 ; 10]: " << iloczyn(liczby , i) <<endl; cout << "Ilosc liczb parzystych: " << ilosc(liczby , i) <<endl; };
float sred(vector<int> L , int k) { float sred = 0; int j = 0; for (int i = 0 ; i < k ; i++) { if ( L[i] > 0 ) { sred += L[i]; j++; }; }; sred = sred / j; return sred; };
int iloczyn(vector<int> L , int k) { int iloczyn = 1; int ile = 0; for (int i = 0 ; i < k ; i++) { if (( L[i] < 5 ) || ( L[i] > 10 )) { iloczyn *= L[i]; ile++; }; }; if ( !ile ) return 0; else return iloczyn; };
int ilosc(vector<int> L , int k) { int ilosc = 0; for (int i = 0 ; i < k ; i++) { if ( L[i] % 2 == 0 ) { ilosc++; }; }; return ilosc; };
cepe - 23-10-2007 01:29
thalcave: Strasznie długie te Twoje kody. Do tego z błędami:
cout << "Podaj N:"; cin >> N; float licz[N];
IMO: w ten sposób nie tworzy się dynamicznie tablic. Nie bez powodu w C++ jest operator new!
Po drugie masz strasznie nieintuicyjne nazwy funkcji i zero komentarzy! Po trzecie: niepotrzebine przechowywujesz liczby. Wystarczy jeden przebieg pętli, żeby wczytać dane i wyliczyć potrzebne wyniki:
#include <cstdio>
int main() { int n; int nnp = 0; // liczba liczb ujemnych float in; // zmienna na liczbę float sum = 0.0; // suma wszystkich liczb float sump = 0.0; // suma liczb dodatnich float sumnp = 0.0; // suma liczb ujemnych
printf("Podaj n: "); scanf("%d",&n); for (int i = 0; i < n; i++) { scanf("%f",&in); sum += in; if (in > 0.0) sump += in; if (in < 0.0) { sumnp += in; nnp++; } } printf("Suma wszystkich liczb:\t\t%f\n",sum); printf("Suma liczb dodatnich:\t\t%f\n",sump); printf("Srednia arytmetyczna liczb:\t%f\n",n != 0 ? sum/n : 0.0); printf("Srednia liczb ujemnych:\t\t%f\n",nnp != 0 ? sumnp/nnp : 0.0); return 0; }
Co więcej? Twój program dla N równego zero dzieli przez zero i wylicza w efekcie średnią jako nan. Twój program dla wejścia w którym nie ma liczb ujemnych tak jak w poprzednim przypadku wylicza wartość nan zamiast wypisywać, że nie ma liczb ujemnych albo nieintuicyjnie podawać średnią jako 0.0; W tym zadaniu trzeba jeszcze sprecyzować jak przechowywać zmienne (float nie jest przecież jedynym rozwiązaniem). No i nie wiadomo czy nie trzeba dodać jakiejś obsługi błędów.
Spojrzałem tylko na rozwiązanie zadania drugiego - reszty nie chce mi sie czytać.
EDIT: w powyższym kodzie można zaoszczędzić co najmniej jedną zmienną!
kasienka7115 - 24-10-2007 00:36
nie no jestescie cudni :)) heh ile piw widze i komu :>
zdzichu - 29-10-2007 19:25
Ja miałem dzisiaj podobny program do napisania w szkole tyle że w pascalu.
zanotowane.pldoc.pisz.plpdf.pisz.plminister.pev.pl
|