Zad 22 - P/D
Ostatnio zmodyfikowano 2015-09-13 12:28
Banneq Temat założony przez niniejszego użytkownika |
Zad 22 - P/D » 2015-09-12 23:43:06 Problem jest taki, że gdy ma wypisać największą wylosowaną liczbę, to wypisuje najmniejsza. Losuje 10 liczb z przedzia ł u od 10 do 30 w ł ą cznie i zapisuje je do tablicy; Wypisuje 10 wylosowanych liczb od pocz ą tku do ko ń ca; Wypisuje 10 wylosowanych liczb od ko ń ca do pocz ą tku; Znajduje najmniejsz ą oraz najwi ę ksz ą wylosowan ą liczb ę. Wypisuje najmniejsz ą i najwi ę ksz ą wylosowan ą liczb ę. Program nie mo ż e u ż ywa ć p ę tli innych ni ż p ę tla for. #include <iostream> #include <cstdlib> #include <ctime> using namespace std; void wylosujLiczby( int tablica[], int rozmiar ) { for( int licznik = 0; licznik < rozmiar; licznik++ ) { tablica[ licznik ] =( rand() % 10 ) + 1; } }
void wypiszTablice( int tablica[], int rozmiar ) { for( int licznik = 0; licznik < rozmiar; licznik++ ) { cout << "Liczba: " << tablica[ licznik ] << endl; } }
void wypiszTabliceOdTylu( int tablica[], int rozmiar ) { for( int licznik = 0; licznik < rozmiar; rozmiar-- ) { cout << "Liczba: " << tablica[ rozmiar ] << endl; } }
int znajdzMinimum( int tablica[], int rozmiar ) { int a = 0; for( int i = 0; i++; i < rozmiar ) { if( tablica[ a ] > tablica[ i ] ) { a++; i = 0; } } return tablica[ a ]; }
int znajdzMaksimum( int tablica[], int rozmiar ) { int a = 0; for( int i = 0; i++; i < rozmiar ) { if( tablica[ a ] < tablica[ i ] ) { a++; i = 0; } } return tablica[ a ]; }
void wypiszMinMax( int Min, int Max ) { cout << "Najwieksza liczba to: " << Max << endl; cout << "Najmnieszja liczba to: " << Min << endl; }
int main() { int tablica[ 10 ]; cout << "Wylosowane zostaly liczby: " << endl; wylosujLiczby( tablica, 10 ); system( "pause" ); cout << "Zostaly wypisane liczby: " << endl; wypiszTablice( tablica, 10 ); system( "pause" ); cout << "Zostale wypisane od tylu: " << endl; wypiszTabliceOdTylu( tablica, 10 ); int iMin = znajdzMinimum( tablica, 10 ); int iMax = znajdzMaksimum( tablica, 10 ); wypiszMinMax( iMin, iMax ); system( "pause" ); return 0; }
|
|
carlosmay |
» 2015-09-13 00:13:48 int a = 0; for( int i = 0; i++; i < rozmiar ) { if( tablica[ a ] < tablica[ i ] ) { a++; i = 0; } } return tablica[ a ];
zwraca za każdym razem pierwszy element sprawdzany. Użyj zmiennej tymczasowej do przechowywania min (max) i po sprawdzeniu wszystkich zwróć tymczasową. Edit: a ta pętla wychodzi poza tablicę. for( int licznik = 0; licznik < rozmiar; rozmiar-- ) { cout << "Liczba: " << tablica[ rozmiar ] << endl; } Dodaj srand( time( NULL ) ); jeśli nie chcesz losować wkoło tych samych liczb. |
|
mateczek |
Nie kummam tego kodu na max » 2015-09-13 10:58:42 Po znalezieniu maxa wycofujesz pętlę przez wpisanie i=0; i jeszcze raz ją wykonujesz ?? nie chce mi się debugować ale masz tu kod poostrzy!!! W szukaniu błędów korzystaj z debugera!!! https://pl.wikibooks.org/wiki/Programowanie_C%2B%2B_Qt4_w_systemie_Gnu-Linux/U%C5%BCywaj_Debuggera!!! int znajdzMaksimum( int tablica[], int rozmiar ) { int max = tablica[ 0 ]; for( int i = 0; i++; i < rozmiar ) { if( tablica[ i ] > max ) max = tablica[ i ] } return max; }
|
|
carlosmay |
» 2015-09-13 12:12:14 Ma zaznaczone błędy. for( int i = 0; i++; i < rozmiar ) Warunek kończący i++; ? |
|
Banneq Temat założony przez niniejszego użytkownika |
» 2015-09-13 12:19:24 Oki, pętle for były po prostu źle napisane. Program jeszcze źle wypisuje wylosowane liczby od tyłu. |
|
carlosmay |
» 2015-09-13 12:25:51 Edit: a ta pętla wychodzi poza tablicę. C/C++
for( int licznik = 0; licznik < rozmiar; rozmiar-- ) { cout << "Liczba: " << tablica[ rozmiar ] << endl; }
|
|
|
Banneq Temat założony przez niniejszego użytkownika |
» 2015-09-13 12:28:19 Oki, dzięki wielkie za pomoc. Zamykam :) |
|
« 1 » |