Przeszukanie programu

0

Witam wszystkich. Chcę napisać program, który po wprowadzeniu liczby sprawdzi czy taka liczba istnieje w pliku txt. Jeżeli istnieje to odczyta też jej cenę, a jeśli nie to pokaże napis. I zrobiłem takie coś, ale za każdym razem pokazuje, że nie ma takiego kodu. Proszę o pomoc.
Z góry dziękuje :)

licz:

#include <iostream>
#include <fstream>
using namespace std;

int main()
{
    string kody;
    string kod;
    string cena;
    ifstream odczyt("kody.txt");
    cout<<"Wprowadz kod:\n\n";
    cin>>kod;
    if(!odczyt)
    {
           cout<<"\nNie mozna otworzyc pliku\n\n";
    }  
    else
    {
        cout<<"\nWprowadzony kod to: "<<kod<<"\n\n";
           while(!odczyt.eof())
           {
                  getline(odczyt,kody);
           }
           if(kod==kody)
           {
                 cout<<"\nProdukt o kodzie "<<kod<<" kosztuje "<<cena;
           }
           else
           {
               cout<<"\nW bazie nie ma takiego kodu\n\n";
           }
    }
    odczyt.close();
    cin.ignore();
    getchar();
    return 0;
}
0

porownujesz kod z ostatnia linijka pliku, bo robisz to poza pętlą.

0

yyyy... to jak to ma wyglądać, bo jak dam w pętle to i tak mówi że nie ma kodu w bazie

0

Ok poprawiłem kod i mam problem.
Posiadając w pliku 9 rekordów tj:

KOD: 1	CENA: 10 zl
KOD: 2	CENA: 20 zl
KOD: 3	CENA: 30 zl
KOD: 4	CENA: 40 zl
KOD: 5	CENA: 50 zl
KOD: 6	CENA: 60 zl
KOD: 7	CENA: 70 zl
KOD: 8	CENA: 80 zl
KOD: 9	CENA: 90 zl

i np sprawdzam czy w pliku znajduje się kod nr 3 to wyświetla mi tak:

W bazie nie ma takiego kodu
W bazie nie ma takiego kodu
Produkt o kodzie 3 kosztuje 30 zl
W bazie nie ma takiego kodu
W bazie nie ma takiego kodu
W bazie nie ma takiego kodu
W bazie nie ma takiego kodu
W bazie nie ma takiego kodu
W bazie nie ma takiego kodu

a ja chcę żeby tylko wyświetlał ten co istnieje, jeżeli istnieje, a jeżeli nie to pojedyńczy komunikat

W bazie nie ma takiego kodu

licz.cpp:

#include <iostream>
#include <fstream>
using namespace std;

int main()
{
    string x1, x2, x3, x4, x5, x6;
    ifstream odczyt("kody.txt");
    cout<<"Wprowadz kod:\n\n";
    cin>>x6;
    if(!odczyt)
    {
           cout<<"\nNie mozna otworzyc pliku\n\n";
    }  
    else
    {
        cout<<"\nWprowadzony kod to: "<<x6<<"\n";
           while(!odczyt.eof())
           {
               odczyt>>x1>>x2>>x3>>x4>>x5;
               if(x2==x6)
               {
                    cout<<"\nProdukt o kodzie "<<x6<<" kosztuje "<<x4<<" "<<x5<<"\n\n";
               }
               else
               {
                   cout<<"\nW bazie nie ma takiego kodu\n\n";
               }
           }
    }
    odczyt.close();
    cin.ignore();
    getchar();
    return 0;
}

Proszę o pomoc :)
Z góry dziękuje :)
Pozdrawiam,
nansss :)

0
#include <iostream>
#include <fstream>
using namespace std;

int main()
{
  int x,cena, szukane;
  bool bylo = false;
  ifstream odczyt("kody.txt");
  cout<<"Wprowadz kod:\n\n";
  cin>>szukane;
  if (!odczyt)
    {
      cout<<"\nNie mozna otworzyc pliku\n\n";
    }
  else
    {
      cout<<"\nWprowadzony kod to: "<<szukane<<"\n";
      while (odczyt>>x>>cena)
        {
          if (x == szukane)
            {
              cout<<"\nProdukt o kodzie "<<x<<" kosztuje "<<cena<<" zl\n\n";
              bylo = true;
            }
        }
      if (!bylo)
        cout<<"\nW bazie nie ma takiego kodu\n\n";
    }
  odczyt.close();
  cin.sync();
  getchar();
  return 0;
}

Dla pliku

1 10
2 20
3 30
4 40
5 50
6 60
7 70
8 80
9 90

bo skoro plik ma być przetwarzany przez program to nie ma sensu go zaśmiecać.

0

Dziękuje :)
Przerobiłem na swoje potrzeby(pod swój kod), ale działa :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1