• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

znajdowanie max i min

Object Storage Arubacloud
0 głosów
1,351 wizyt
pytanie zadane 14 maja 2016 w C i C++ przez Evelek Nałogowiec (28,960 p.)

Mam algorytm na sprawdzanie max i min wartości z pliku tekstowego. Algorytm działa poprawnie, kiedy w pliku tekstowym jest 1000 liczb (w którym znajdują się liczby nawet 250-cyfrowe). Kiedy jest w nim 5000 liczb (max 9-cyfrowe) to wypisuje bzdury. Nie rozumiem tego, bo powinien działać poprawnie...

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
    fstream plik;
    plik.open("dane.txt", ios::in);
    string liczba, pomMax, pomMin;
    int nrMax = 1;
    int nrMin = 1;
    while(!plik.eof())
    {
        plik >> liczba;
        pomMax = pomMin = liczba;

        for(int i=2; i<5001; i++)
        {
            plik >>liczba;
            if(liczba.size() > pomMax.size())
            {
                pomMax = liczba;
                nrMax = i;
            }
            else if(liczba.size()==pomMax.size())
                if(liczba > pomMax)
                {
                    pomMax = liczba;
                    nrMax = i;
                }
            if(liczba.size() < pomMin.size())
            {
                pomMin = liczba;
                nrMin = i;
            }
            else if(liczba.size()==pomMin.size())
                if(liczba < pomMin)
                {
                    pomMin = liczba;
                    nrMin = i;
                }
        }
    }
    cout << "Najmniejsza liczba znajduje sie w linii numer: " << nrMin << endl;
    cout << "Najwieksza liczba znajduje sie w linii numer: " << nrMax << endl;
    cout << pomMax << endl;
    cout << pomMin << endl;
    plik.close();
    return 0;
}

 

1 odpowiedź

0 głosów
odpowiedź 14 maja 2016 przez jankustosz1 Nałogowiec (35,880 p.)
nie chce mi się na to patrzeć ale tak zgrubsza

ogólnie to ciekawy pomysł sprawdzać który string ma więcej znaków ten przechowuje większa liczbę, ale jest jak oba stringi będą miały po tyle samo znaków (załóżmy 20) to będzie bład bo wyjdzie poza zasięg inta, więc nie pisz że dla 250 znaków pójdzie.

linia 19 już raz przeczytałeś to 3 linie wcześniej, chcesz aby czytało 5 tyś wyrazów z pliku nie ważne czy istnieją czy nie, kompletnie nie rozumiem jaki jest cel robienia tego fora

Jest masa błędów logicznych w każdym jednym ifie.

 

Najlepiej usuń to i napisz jeszcze raz i pisz komentarze żebyś wiedział co robisz.
komentarz 14 maja 2016 przez Evelek Nałogowiec (28,960 p.)
Liczby nie są przechowywane w int tylko w string. String też umożliwia na ich porównywanie.

Powtórne wczytanie plik >> liczba jest tu konieczne.

Nie ma tu błędów logicznych.
komentarz 14 maja 2016 przez jankustosz1 Nałogowiec (35,880 p.)

Jest masa błędów, najpierw usuń fora potem usuniesz zmienną "i" i pokolei naprawisz. 

"Liczby nie są przechowywane w int tylko w string. String też umożliwia na ich porównywanie.

jak zrobisz coś takiego:

string a("1"), b("13");

cout << a < b; 

to wyjdzie że b jest większe ale dlatego bo ma więcej znaków. Równie dobrze możesz porównać "a" do "aa", spróbuj se "10" i "11"

komentarz 15 maja 2016 przez Evelek Nałogowiec (28,960 p.)
Program działa poprawnie. Najwidoczniej miałem coś dopisanego niepotrzebnego.
komentarz 23 kwietnia 2017 przez Gankkah Użytkownik (720 p.)

Porównujesz 'stringi' "alfabetycznie".

 

Oczywiście "alfabetycznie" w cudzysłowie ponieważ stringi zastępują tablice 'char'.

A typ 'char' zamienia sobie z swojego typu na typ 'int' który porównuje.

 

Konwersja z typu 'char' na typ 'int' jest taka że brana pod uwagę jest nie wartość ale miejsce w tablicy ASCII.

Podobne pytania

0 głosów
1 odpowiedź 1,594 wizyt
pytanie zadane 29 maja 2018 w JavaScript przez C1chutki Nowicjusz (120 p.)
0 głosów
5 odpowiedzi 3,129 wizyt
pytanie zadane 10 marca 2018 w C i C++ przez giedymin33 Początkujący (290 p.)
0 głosów
1 odpowiedź 1,269 wizyt
pytanie zadane 19 grudnia 2017 w Java przez Ohnne Nowicjusz (180 p.)

92,579 zapytań

141,432 odpowiedzi

319,663 komentarzy

61,964 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...