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

[Kurs C++, Lekcja 22] Problem ze znalezieniem wartości minimalnej i maksymalnej

Ostatnio zmodyfikowano 2011-07-16 11:36
Autor Wiadomość
Razor
Temat założony przez niniejszego użytkownika
[Kurs C++, Lekcja 22] Problem ze znalezieniem wartości minimalnej i maksymalnej
» 2011-07-15 14:14:10
Witam
W pracy domowej jest następujące zadanie:
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
.
Napisalem program ale niestety mam z nim problemy nie wiem jak znaleźć minimum i maksimum.
Drugi problem mam w wypisywaniu liczby od tylu,wypisuje mi liczby tylko nie wiem dlaczego gdy zaczynają wyświetlać się liczby od tylu wyskakuje mi jakaś liczba ,a ostatnią usuwa.
Oto mój kod

C/C++
#include <iostream>
#include <cstdlib>
#include <iostream>
#include <ctime>
using namespace std;
int losowanie( int tab[], int ile )
{
    srand( time( NULL ) );
    int liczba = 0;
    for( int i = 0; i <= ile; i++ )
    {
        tab[ i ] =( rand() % 22 ) + 10;
    };
   
}
int wypisanie( int tab[], int ile )
{
    for( int i = 0; i < ile; i++ )
    {
        cout << tab[ i ] << endl;
    };
}
int wypisanieTyl( int tab[], int ile )
{
    cout << "\n" << endl;
    for( int i = 0; i < ile; ile-- )
    {
        cout << tab[ ile ] << endl;
    };
}
bool znajdzMin( int tab[], int ile )
{
    int liczba = 10;
    for( int i = 0; i < ile; i++ )
    {
        if( tab[ i ] != liczba )
             return false;
        else
             liczba++;
       
    };
    return liczba;
}
int znajdzMax( int tab[], int ile )
{
    int liczba = 30;
    for( int i = 0; i < ile; i++ )
    {
        if( tab[ i ] != liczba )
             return false;
       
    };
    return liczba;
}
int wypiszMinMax( int Min, int Max )
{
    cout << "\n" << endl;
    cout << Min << endl;
    cout << Max << endl;
}
int main()
{
    int tab[ 10 ];
    losowanie( tab, 10 );
    wypisanie( tab, 10 );
    wypisanieTyl( tab, 10 );
    int iMin = znajdzMin( tab, 10 );
    int iMax = znajdzMax( tab, 10 );
    wypiszMinMax( iMin, iMax );
    system( "pause" );
    return 0;
}
P-35990
szyx_yankez
» 2011-07-15 14:26:18
Kilka dni temu był już identyczny temat, poszukaj.
P-35991
Razor
Temat założony przez niniejszego użytkownika
soorka
» 2011-07-15 14:28:01
Przepraszam,
Szukałem i nic nie znalazłem



rozwiązalem problem z Min i Max.Teraz nie wiem czemu losuje wypisuje mi tylko 8 liczba ,a później 10
Oto kod
C/C++
#include <iostream>
#include <cstdlib>
#include <iostream>
#include <ctime>
using namespace std;
int losowanie( int tab[], int ile )
{
    srand( time( NULL ) );
    int liczba = 0;
    for( int i = 0; i <= ile; i++ )
    {
        tab[ i ] =( rand() % 21 ) + 10;
    };
   
}
int wypisanie( int tab[], int ile )
{
    cout << "\n" << endl;
    for( int i = 0; i < ile; i++ )
    {
        cout << tab[ i ] << endl;
    };
}
int wypisanieTyl( int tab[], int ile )
{
    cout << "\n" << endl;
    for( int i = 0; i < ile; ile-- )
    {
        cout << tab[ ile ] << endl;
    };
}
int znajdzMin( int tab[], int ile )
{
    int liczba = 30;
    for( int i = 0; i < ile; i++ )
    {
        if( tab[ i ] < liczba )
             liczba = tab[ i ];
       
       
       
    };
    return liczba;
}
int znajdzMax( int tab[], int ile )
{
    int liczba = 0;
    for( int i = 0; i < ile; i++ )
    {
        if( tab[ i ] > liczba )
             liczba = tab[ i ];
       
    };
    return liczba;
}
int wypiszMinMax( int Min, int Max )
{
    cout << "\n" << endl;
    cout << Min << endl;
    cout << Max << endl;
}
int main()
{
    int tab[ 10 ];
    losowanie( tab, 10 );
    wypisanie( tab, 10 );
    wypisanieTyl( tab, 10 );
    int iMin = znajdzMin( tab, 10 );
    int iMax = znajdzMax( tab, 10 );
    wypiszMinMax( iMin, iMax );
    system( "pause" );
    return 0;
}
P-35993
malan
» 2011-07-15 17:50:53
1. Po pętli
for
 nie stawiamy średnika.
2.
for( int i = 0; i <= ile; i++ )
 - błąd, wychodzisz poza zakres tablicy.
3.
int liczba = 30;
 w
int znajdzMin( int tab[], int ile );
 - błąd, może to spowodować niepoprawne działanie programu.
4. Program się nie kompiluje:
1>------ Rebuild All started: Project: 4672, Configuration: Debug Win32 ------
1>  main.cpp
1>e:\programowanie\visual studio 2010 projects\4672\4672\main.cpp(8): warning C4244: 'argument' : conversion from 'time_t' to 'unsigned int', possible loss of data
1>e:\programowanie\visual studio 2010 projects\4672\4672\main.cpp(15): error C4716: 'losowanie' : must return a value
1>e:\programowanie\visual studio 2010 projects\4672\4672\main.cpp(23): error C4716: 'wypisanie' : must return a value
1>e:\programowanie\visual studio 2010 projects\4672\4672\main.cpp(31): error C4716: 'wypisanieTyl' : must return a value
1>e:\programowanie\visual studio 2010 projects\4672\4672\main.cpp(61): error C4716: 'wypiszMinMax' : must return a value
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========
P-36015
imralav
» 2011-07-15 18:08:02
funkcja
srand( time( NULL ) );

chyba powinna być w main()?
Do tego chyba brakuje Ci "return" w funkcjach.
P-36016
Razor
Temat założony przez niniejszego użytkownika
» 2011-07-15 20:12:00
C/C++
int main()
{
    int tablica[ 10 ];
    wylosujLiczby( tablica, 10 );
    wypiszTablice( tablica, 10 );
    wypiszTabliceOdTylu( tablica, 10 );
    int iMin = znajdzMinimum( tablica, 10 );
    int iMax = znajdzMaksimum( tablica, 10 );
    wypiszMinMax( iMin, iMax );
    return 0;
}
To jest dokładna kopia z kursu tylko pozmieniałem nazwy ,jeżeli znajduje się tu błąd proponowałbym poprawić.
Co to znaczy że program nie kompiluje?
Jak mam poprawić
int liczba = 30;
 w
int znajdzMin( int tab[], int ile );
bez
liczba
 funkcja nie wykonałaby swojej funkcji nie mam pojęcia jak to zmienić
C/C++
#include <iostream>
#include <cstdlib>
#include <iostream>
#include <ctime>
using namespace std;
int losowanie( int tab[], int ile )
{
    srand( time( NULL ) );
    for( int i = 0; i < ile; i++ )
    {
        tab[ i ] =( rand() % 21 ) + 10;
    };
    return 0;
}
int wypisanie( int tab[], int ile )
{
    cout << "\n" << endl;
    for( int i = 0; i < ile; i++ )
         cout << tab[ i ] << endl;
   
    return 0;
}
int wypisanieTyl( int tab[], int ile )
{
    cout << "\n" << endl;
    for( int i = 0; i < ile; ile-- )
         cout << tab[ ile ] << endl;
   
    return 0;
}
int znajdzMin( int tab[], int ile )
{
    int liczba = 30;
    for( int i = 0; i < ile; i++ )
    {
        if( tab[ i ] < liczba )
             liczba = tab[ i ];
       
    };
    return liczba;
}
int znajdzMax( int tab[], int ile )
{
    int liczba = 0;
    for( int i = 0; i < ile; i++ )
    {
        if( tab[ i ] > liczba )
             liczba = tab[ i ];
       
    };
    return liczba;
}
int wypiszMinMax( int Min, int Max )
{
    cout << "\n" << endl;
    cout << Min << endl;
    cout << Max << endl;
    return 0;
}
int main()
{
    int tab[ 10 ];
    losowanie( tab, 10 );
    wypisanie( tab, 10 );
    wypisanieTyl( tab, 10 );
    int iMin = znajdzMin( tab, 10 );
    int iMax = znajdzMax( tab, 10 );
    wypiszMinMax( iMin, iMax );
    system( "pause" );
    return 0;
}
P-36025
DejaVu
» 2011-07-15 20:23:10
C/C++
int liczba = tab[ 0 ];
P-36028
malan
» 2011-07-15 20:30:04
W kodzie z kursu nie ma błędu :) Błąd zrobiłeś Ty w kilku miejscach w programie :)
Co to znaczy że program nie kompiluje?
To, że kompilator nie mógł przetłumaczyć kodu C++ na kod wynikowy (zrozumiały dla komputera), gdyż w kodzie wystąpiły błędy.
P-36030
« 1 » 2
  Strona 1 z 2 Następna strona