Cześć,
miałam do zrobienia zadanie z C++, wydawało mi się w porządku, ale jednak coś tam nie działa poprawnie - dostałam komentarz zwrotny, ale nie do końca rozumiem o co w nim chodzi. Wiem, że mogę wrócić z pytaniem do prowadzącego, ale wydaje mi się, że to jest dość jasno napisane, tylko ja jestem niekumata i wolę zapytać na forum.
Treść komentarza:
"
-
w losowaniu brak jedynki
-
źle liczone max - nie działa dla dla innych zakresów np <-10, -5>
-
cout << "Najwieksza liczba w tablicy X to: " << znajdywanieNajwiekszejLiczby(X, &ileRazyMaksLiczba)
<< " i pojawila sie " << ileRazyMaksLiczba << " raz/razy." << endl;
to nie działa << ileRazyMaksLiczba trzeba następnym cout (przykarzywane przez parametr i nie uaktualiniło się
- int W[liczbyWiekszeOdSredniej]; - to nie jest dynamiczna rezerwacja !"
1- nie rozumiem tego losowania - u mnie się pokazują jedynki...
2- nie wiem jak naprawić, żeby działało dla takich zakresów - jak tak patrzę, to wydaje się ok i nie wiem co poprawić (a faktycznie nie działa)
3- tego nie rozumiem
4- jak inaczej zrobić dynamiczną rezerwację? wydawało mi się, że o to jest to i teraz już nie wiem :/
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <iomanip>
#define N 10
using namespace std;
int losowanieLiczbyDoTablicy(int, int);
void wypelnijTabliceLosowo(int []);
void wyswietlanieTablicy(int []);
void wypelnianieTablicyQ(int X[], int Y[], int Z[], int Q[]);
int znajdywanieNajwiekszejLiczby(int a[], int *);
int obliczanieSredniej(int a[], float &);
void wyswietlanieTablicyW(int [], int);
int main() {
srand((unsigned int) time(NULL));
int ileRazyMaksLiczba = 0;
float srednia;
int X[N];
int Y[N];
int Z[N];
int Q[N];
losowanieLiczbyDoTablicy(0, 5);
wypelnijTabliceLosowo(X);
wypelnijTabliceLosowo(Y);
wypelnijTabliceLosowo(Z);
wypelnianieTablicyQ(X, Y, Z, Q);
cout << "Zawartosc tablicy X: " << endl;
wyswietlanieTablicy(X);
cout << "Zawartosc tablicy Y: " << endl;
wyswietlanieTablicy(Y);
cout << "Zawartosc tablicy Z: " << endl;
wyswietlanieTablicy(Z);
cout << "Zawartosc tablicy Q: " << endl;
wyswietlanieTablicy(Q);
cout << "Najwieksza liczba w tablicy X to: " << znajdywanieNajwiekszejLiczby(X, &ileRazyMaksLiczba)
<< " i pojawila sie " << ileRazyMaksLiczba << " raz/razy." << endl;
cout << "Najwieksza liczba w tablicy Y to: " << znajdywanieNajwiekszejLiczby(Y, &ileRazyMaksLiczba)
<< " i pojawila sie " << ileRazyMaksLiczba << " raz/razy." << endl;
int liczbyWiekszeOdSredniej = obliczanieSredniej(X, srednia);
cout << "Srednia liczb w tablicy X wynosi: " << srednia << ", a liczb wiekszych od sredniej jest "
<< liczbyWiekszeOdSredniej << "." << endl;
int W[liczbyWiekszeOdSredniej];
int poczatek = 0;
for (int i = 0; i < N; i++) {
if (X[i] > srednia) {
W[poczatek++] = X[i];
}
}
cout << "Zawartosc tablicy W: " << endl;
wyswietlanieTablicyW(W, liczbyWiekszeOdSredniej);
return 0;
}
int losowanieLiczbyDoTablicy(int p, int k) {
int i = (rand() % (k - p) + p);
return i;
}
void wypelnijTabliceLosowo(int a[]) {
for (int i = 0; i < N; i++) {
a[i] = losowanieLiczbyDoTablicy(0, 5);
}
}
void wyswietlanieTablicy(int a[]) {
for (int i = 0; i < N; i++) {
cout << a[i] << " ";
}
cout << endl;
}
void wypelnianieTablicyQ(int X[], int Y[], int Z[], int Q[]) {
for (int i = 0; i < N; i++) {
if (X[i] >= Y[i] && X[i] >= Z[i]) {
Q[i] = X[i];
}
if (Y[i] >= X[i] && Y[i] >= Z[i]) {
Q[i] = Y[i];
}
if (Z[i] >= X[i] && Z[i] >= Y[i]) {
Q[i] = Z[i];
}
}
}
int znajdywanieNajwiekszejLiczby(int a[], int *ileRazyMaksLiczba) {
int najwiekszaLiczba = 0;
*ileRazyMaksLiczba = 0;
for (int i = 0; i < N; i++) {
if (najwiekszaLiczba <= a[i]) {
najwiekszaLiczba = a[i];
}
}
for (int j = 0; j < N; j++) {
if (a[j] == najwiekszaLiczba) {
*ileRazyMaksLiczba += 1;
}
}
return najwiekszaLiczba;
}
int obliczanieSredniej(int a[], float &srednia) {
int prawdziwaSrednia = 0;
for (int i = 0; i < N; i++) {
srednia += a[i];
}
srednia = srednia / N;
for (int j = 0; j < N; j++) {
if (a[j] > srednia) {
prawdziwaSrednia += 1;
}
}
return prawdziwaSrednia;
}
void wyswietlanieTablicyW(int a[], int liczbyWiekszeOdSredniej) {
for (int i = 0; i < liczbyWiekszeOdSredniej; i++) {
cout << a[i] << " ";
}
}