[C++] element minimalny, tablica dynamiczna

agggnes
Użytkownik
Użytkownik
Posty: 87
Rejestracja: 21 gru 2011, o 21:27
Płeć: Kobieta
Podziękował: 18 razy

[C++] element minimalny, tablica dynamiczna

Post autor: agggnes »

Mam do napisania taki program:
w tablicy dynamicznej znajduje element minimalny. W tablicy tej znajdują się liczby pobrane z klawiatury do momentu wpisania \(\displaystyle{ 0}\).

Problem jest taki- program jako minimum wypisuje mi zawsze \(\displaystyle{ 0}\).
Prosiłabym o pomoc w znalezieniu i poprawieniu błędu:)

Kod: Zaznacz cały

#include<iostream>
#include<cstdio>
#include<new>

using namespace std;
int main()
{
    
    float *tab=NULL;
    float liczba;
    int ile=0;
    
          
    try
    {
          tab=new float[ile];
          }
    catch(bad_alloc)
    {
    cout<<"Brak miejsca na utworzenie tablicy ";
    cin.ignore();
    getchar();
    return -1;
}

while (liczba!=0)
    {cout<<"Podaj liczbe ";
    cin>>liczba;
    *(tab)=liczba;
    tab++;
    ile++;
};

float min=0;
for (int i=0; i<(ile-1); i++)
{
    if (*(tab+i)<min) min=*(tab+i);
}

cout<<"Wartosc min to:  "<<min;
delete [] tab;
cin.ignore();
getchar();
return 0;
}
ordyh
Użytkownik
Użytkownik
Posty: 255
Rejestracja: 6 paź 2009, o 18:04
Płeć: Mężczyzna
Pomógł: 66 razy

[C++] element minimalny, tablica dynamiczna

Post autor: ordyh »

Przyjrzyj się tym linijkom

Kod: Zaznacz cały

float min = 0;
oraz

Kod: Zaznacz cały

if (*(tab+i)<min) min=*(tab+i);
Awatar użytkownika
cyberciq
Użytkownik
Użytkownik
Posty: 450
Rejestracja: 19 kwie 2010, o 15:03
Płeć: Mężczyzna
Podziękował: 5 razy
Pomógł: 43 razy

[C++] element minimalny, tablica dynamiczna

Post autor: cyberciq »

W takim przypadku jak z tego zadania dużo prościej jest np. zastosować klasę vector...

pozdrawiam
agggnes
Użytkownik
Użytkownik
Posty: 87
Rejestracja: 21 gru 2011, o 21:27
Płeć: Kobieta
Podziękował: 18 razy

[C++] element minimalny, tablica dynamiczna

Post autor: agggnes »

ordyh, przyglądam się i nic:p

Muszę jakoś ustawić minimum, aby było z czym porównywać, a w drugiej linijce ustalam nowe minimum.
Co jest nie tak?

-- 17 maja 2012, o 19:33 --

No tak, minimum \(\displaystyle{ =0}\) to głupota...
Ale co do drugiej linijki nadal nie widzę błędu.
ordyh
Użytkownik
Użytkownik
Posty: 255
Rejestracja: 6 paź 2009, o 18:04
Płeć: Mężczyzna
Pomógł: 66 razy

[C++] element minimalny, tablica dynamiczna

Post autor: ordyh »

Tamta linijka nie była zła, tylko chodziło mi, co się dziej w tym ifie jak min = 0, ale jest jeszcze parę rzeczy:

Kod: Zaznacz cały

    int ile=0;
    try
    {
          tab=new float[ile];
          }
oraz po każdym wczytaniu inkrementujesz wskaźnik tab, a potem w pętli robisz takie odwołanie *(tab+i), ale tab już jest czymś innym niż był na początku. Lepiej byłoby zrobić np. tak:

Kod: Zaznacz cały

ile = 0;
float liczba = 1; //lepiej cos przypisac od razu, bo moze sie zdarzyc, ze przy deklaracji zmiennej będzie liczba = 0
while (liczba!=0)
{   
    cout<<"Podaj liczbe ";
    cin>>liczba;
    *(tab+ile)=liczba;
    ile++;
}
Ostatnio zmieniony 17 maja 2012, o 19:56 przez ordyh, łącznie zmieniany 1 raz.
agggnes
Użytkownik
Użytkownik
Posty: 87
Rejestracja: 21 gru 2011, o 21:27
Płeć: Kobieta
Podziękował: 18 razy

[C++] element minimalny, tablica dynamiczna

Post autor: agggnes »

Teraz rozumiem błąd tylko nie potrafię go poprawić.

-- 17 maja 2012, o 19:57 --

Po wpisaniu 1szej liczby zamyka mi program.-- 17 maja 2012, o 20:05 --DZIAŁA. Dziękuję ogromnie za uratowanie skóry
ODPOWIEDZ