zadanko z c++
-
- Posty: 2
- Rejestracja: 22 października 2007, 21:10
zadanko z c++
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
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
to mają być 3 wersje tego programu?kasienka7115 pisze:1. Program wypisujący wartości x, x2 oraz x3 dla liczby rzeczywistej x ∈] 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.
kasienka7115 pisze: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.
Kod: Zaznacz cały
#include <iostream>
float suma1(float [] , int)] , 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;
};
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.
kasienka7115 pisze: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.
Kod: Zaznacz cały
#include <iostream>
#include <vector>
using std::vector]: " << 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;
};
thalcave: Strasznie długie te Twoje kody. Do tego z błędami:
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:
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ą!
IMO: w ten sposób nie tworzy się dynamicznie tablic. Nie bez powodu w C++ jest operator new!thalcave pisze:cout << "Podaj N:"];
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:
Kod: Zaznacz cały
#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;
}
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ą!
-
- Posty: 2
- Rejestracja: 22 października 2007, 21:10