Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Zad 22 - P/D

Ostatnio zmodyfikowano 2015-09-13 12:28
Autor Wiadomość
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.

C/C++
// Napisz program który wykona wszystkie poniższe kroki w podanej kolejności:
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;
}
P-137463
carlosmay
» 2015-09-13 00:13:48
C/C++
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ę.
C/C++
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.
P-137466
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!!!

C/C++
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;
   
}
P-137470
carlosmay
» 2015-09-13 12:12:14
Ma zaznaczone błędy.
for( int i = 0; i++; i < rozmiar )

Warunek kończący
i++;
 ?
P-137471
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.
P-137472
carlosmay
» 2015-09-13 12:25:51
Edit: a ta pętla wychodzi poza tablicę.
C/C++
C/C++
for( int licznik = 0; licznik < rozmiar; rozmiar-- )
{
    cout << "Liczba: " << tablica[ rozmiar ] << endl; // rozmiar = 10, a indeks maksymalnie może mieć 9 dla tablicy 10-elementowej
}
P-137474
Banneq
Temat założony przez niniejszego użytkownika
» 2015-09-13 12:28:19
Oki, dzięki wielkie za pomoc. Zamykam :)
P-137475
« 1 »
  Strona 1 z 1