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

Problem ze stworzeniem wyszukiwarki i wczytaniem pliku do tablicy.

VPS Starter Arubacloud
0 głosów
323 wizyt
pytanie zadane 27 kwietnia 2015 w C i C++ przez Marijusz44 Nowicjusz (200 p.)
Witam wszystkich.
Jestem studentem pierwszego roku informatyki i dopiero zaczynam naukę programowania. Mam do wykonania zadanie zaliczeniowe z którym mam tewien problem. Oto polecenie do zadania. Problem jest z punktem 3, wyszukiwarką oraz z wczytaniem z pliku do tablicy.

Link do polecenia: http://www.fotosik.pl/pokaz_obrazek/5f5adecdbe0638fc.html

 

a oto kod;

#include <cstdlib>
#include <iostream>
#include <conio.h>
#include <string>
#include <fstream>

using namespace std;
class Dzialka{
int id_dz;
int pow;
string polozenie;
public:
void uzupelnijd(){
     cout<<"Podaj ID Dzialki"<<endl;
     cin>>id_dz;
     cout<<"Podaj Powierzchnie Dzialki"<<endl;
     cin>>pow;
     cout<<"Podaj Polozenie"<<endl;
     cin>>polozenie;}
void zapiszd(){
     fstream plik_dzialka;
plik_dzialka.open("dzialka.txt", ios::out | ios::app);
   plik_dzialka<<"ID Dzialki:"<<id_dz<<" "<<"Powierzchnia:"<<pow<<" "<<"Polozenie:"<<polozenie<<endl;
   plik_dzialka.close();
}

Dzialka(int iddz , int p, string pol){
    id_dz=iddz;
    pow=p;
    polozenie=pol;
    }
void pokaz_d(){
cout<<"ID Dzialki to: "<<id_dz<<endl<<"Powiezchnia Dzialki to: "<<pow<<endl<<"Polozenie dzialki to: "<<polozenie<<endl;
}

};
class Agent{
int id_a;
int tel;
string naz_a;
public:

void uzupelnija(){
     cout<<"Podaj ID Agenta"<<endl;
     cin>>id_a;
     cout<<"Podaj Nazwisko Agenta"<<endl;
     cin>>naz_a;
     cout<<"Podaj Telefon do Agenta"<<endl;
     cin>>tel;
}
void zapisza(){
    fstream plik_agent;

plik_agent.open("agent.txt", ios::out | ios::app);
plik_agent<<"ID Agenta:"<<id_a<<" "<<"Nazwisko:"<<naz_a<<" "<<"Telefon:"<<tel<<endl;
plik_agent.close();
}
Agent(int ida, int t, string naza){
    id_a=ida;
    tel=t;
    naz_a=naza;
    }

void pokaz_a(){
    cout<<"ID Agenta to:  "<<id_a<<endl<<"Nazwisko Agenta to:  "<<naz_a<<endl<<"Telefon do agenta to: "<<tel<<endl;
}

};
class Oferta{
int id_d;
int id_a;
string polozenie;
public:
void uzupelnijo(){
     cout<<"Podaj ID Dzialki"<<endl;
     cin>>id_d;
     cout<<"Podaj ID Agenta"<<endl;
     cin>>id_a;

}
void zapiszo(){
    fstream plik;

plik.open("oferta.txt", ios::out | ios::app);
   plik<<"ID Agenta:"<<id_a<<" "<<"ID dzialki:"<<id_d<<endl;
   plik.close();
}
Oferta(int idd, int idag){
    id_d=idd;
    id_a=idag;
    }
void pokaz_o(){
    cout<<"Dane oferty to: "<<endl<<
 "ID Agenta :"<<id_a<<endl<<"ID Dzialki: "<<id_d<<endl;
}

};

 

int main()
{

cout<<"////////////////////////////////"<<endl;
cout<<"//        BAZA DANYCH         //"<<endl;
cout<<"////////////////////////////////"<<endl;

int wybor;
cout<<"Jesli chcesz dodac dzialke wybierz 1"<<endl;
cout<<"Jesli chcesz dodac agenta wybierz 2"<<endl;
cout<<"Jesli chcesz dodac oferte wybierz 3"<<endl;
cout<<"Jesli chcesz wyswietlic zawartosc pliku dzialka.txt wybierz 4"<<endl;
cout<<"Jesli chcesz wyswietlic zawartosc pliku agent.txt wybierz 5"<<endl;
cout<<"Jesli chcesz wyswietlic zawartosc pliku oferta.txt wybierz 6"<<endl;
cout<<"Jesli chcesz zakonczyc wybierz 0"<<endl;
cin>>wybor;
while(wybor != 0)
if(wybor == 1){
    int iddz;
    int p;
    string pol;
Dzialka d1(iddz, p, pol);
d1.uzupelnijd();
d1.pokaz_d();
d1.zapiszd();

break;
}
else if(wybor == 2){
    int ida;
    int t;
    string naza;
Agent a1(ida,t,naza);
a1.uzupelnija();
a1.pokaz_a();
a1.zapisza();
break;
}
else if(wybor == 3){
int iddz;
int idag;
Oferta o1(iddz, idag);
o1.uzupelnijo();
o1.pokaz_o();
o1.zapiszo();
    break;
}
else if(wybor == 4){
      fstream plik;
    plik.open( "dzialka.txt", ios::in );
    if( plik.good() )
    {
        string napis;
        cout << "Zawartosc pliku:" << endl;
        while( !plik.eof() )
        {
            getline( plik, napis );
            cout << napis << endl;
        }
        plik.close();
    } else cout << "Error! Nie udalo otworzyc sie pliku!" << endl;

    getch();
    return( 0 );
}
else if(wybor == 5){
      fstream plik;
    plik.open( "agent.txt", ios::in );
    if( plik.good() )
    {
        string napis;
        cout << "Zawartosc pliku:" << endl;
        while( !plik.eof() )
        {
            getline( plik, napis );
            cout << napis << endl;
        }
        plik.close();
    } else cout << "Error! Nie udalo otworzyc sie pliku!" << endl;

    getch();
    return( 0 );
}
else if(wybor == 6){
      fstream plik;
    plik.open( "oferta.txt", ios::in );
    if( plik.good() )
    {
        string napis;
        cout << "Zawartosc pliku:" << endl;
        while( !plik.eof() )
        {
            getline( plik, napis );
            cout << napis << endl;
        }
        plik.close();
    } else cout << "Error! Nie udalo otworzyc sie pliku!" << endl;

    getch();
    return( 0 );
}
}

3 odpowiedzi

0 głosów
odpowiedź 27 kwietnia 2015 przez LislaV Bywalec (2,400 p.)

Napisałeś, że masz problem, ale nie napisałeś jaki. Nie wiesz jak masz to napisać? Bo widzę, że w twoim kodzie nie ma nawet próby wykonania tych poleceń. 
Żeby wyszukiwać dane z pliku najlepiej, gdybyś miał te dane w jakiś sposób uporządkowane w tym pliku, np:

ID Dzialki

1

Powierzchnia

40

Polozenie

Goleniow


ID Dzialki

2

Powierzchnia

30

Polozenie

Szczecin

Wtedy masz w osobnej lini opis i dane, a to łatwiej wyszukać. Polecam ci przerobienie materiału z tego odcinka: https://www.youtube.com/watch?v=h2Taf16gQDI Wtedy zrozumiesz o co mi chodzi z tym ułożeniem. 
Pozdrawiam.

0 głosów
odpowiedź 27 kwietnia 2015 przez Marijusz44 Nowicjusz (200 p.)

Program akurat tworzy mi pliki, zapisuje oddzielnie Agenta, działkę i ofertę. 
Oto dowody:

http://www.fotosik.pl/pokaz_obrazek/52eadbb8539f0483.html
http://www.fotosik.pl/pokaz_obrazek/a0d8d69f44945f7e.html
http://www.fotosik.pl/pokaz_obrazek/c05656b3725872df.html

Problem mam z napisaniem kodu który wyszuka po ID Agenta wszystkie działki które on wystawia. 
Myślałem żeby wczytać dane z plików o 3 tablic, np. tab_agenta[0] = to co w pierwszej linijce w pliku z agentami. Sęk w tym że jestem początkujący i nie wiem jak się za to zabrać.

komentarz 27 kwietnia 2015 przez LislaV Bywalec (2,400 p.)

Chodziło mi o to, że w twoim kodzie nie ma żadnej próby wykonania tych poleceń z punktu 3. Nawet jak nie wiesz jak się do czegoś zabrać to próbuj jakoś zapisać to, co ci przyjdzie do głowy. A nuż coś z tego wyjdzie :)

Zaglądałeś do filmiku, który dałem w poprzedniej odpowiedzi? W około 12:14 tworzony jest Quiz, w którym pytania i odpowiedzi zapisane są w pliku tekstowym. Napisanie tego programu wraz z tym tutorialem pomoże ci zrozumieć przeszukiwanie pliku tekstowego i użyte tam rozwiązania będziesz mógł użyć w swoim programie.

A co do logiki zadania 3a), ja bym to zrobił tak:

  • zapytanie użytkownika o ID Agenta
  • przeszukujesz plik oferty.txt. Potrzebujesz tablicę np. dzialkiAgenta i porównujesz czy ID Agenta podanego przez użytkownika jest równe ID Agenta w pliku. jeżeli tak, to przypisujesz ID Działki do dzialkiAgenta (samą liczbe)
  • przeszukujesz plik dzialka.txt. Potrzebujesz zmiennej np. int sumaPowierzchni. Porównujesz wszystkie dzialkiAgenta z ID dzialki z pliku, Jeżeli są takie same, to sumaPowierzchni += Powierzchnia (trzeba pamiętać o konwersji, bo Powierzchnia odczytana z pliku bedzie stringiem)

Odczytanie poszczególnych ID z pliku zrobisz wykorzystując wiedzę z filmiku. Troche roboty jest. Jak coś to pisz, będziemy pomagać :)

0 głosów
odpowiedź 28 kwietnia 2015 przez Marijusz44 Nowicjusz (200 p.)
Kombinuje ale nic z tego nie wychodzi :/

zrobiłem tablice które odczytują z pliku linijki i wiem jak zapisać tą wyszukiwarkę w c++.  Też tak myslałem jak poprzednik napisał ale mam problem

#include <cstdlib>
#include <iostream>
#include <conio.h>
#include <string>
#include <fstream>

using namespace std;
class Dzialka{
int id_dz;
int pow;
string polozenie;
public:
void uzupelnijd(){
     cout<<"Podaj ID Dzialki"<<endl;
     cin>>id_dz;
     cout<<"Podaj Powierzchnie Dzialki"<<endl;
     cin>>pow;
     cout<<"Podaj Polozenie"<<endl;
     cin>>polozenie;}
void zapiszd(){
     fstream plik_dzialka;
plik_dzialka.open("dzialka.txt", ios::out | ios::app);
   plik_dzialka<<"ID Dzialki:"<<id_dz<<" "<<"Powierzchnia:"<<pow<<" "<<"Polozenie:"<<polozenie<<endl;
   plik_dzialka.close();
}

Dzialka(int iddz , int p, string pol){
    id_dz=iddz;
    pow=p;
    polozenie=pol;
    }
void pokaz_d(){
cout<<"ID Dzialki to: "<<id_dz<<endl<<"Powiezchnia Dzialki to: "<<pow<<endl<<"Polozenie dzialki to: "<<polozenie<<endl;
}

};
class Agent{
int id_a;
int tel;
string naz_a;
public:

void uzupelnija(){
     cout<<"Podaj ID Agenta"<<endl;
     cin>>id_a;
     cout<<"Podaj Nazwisko Agenta"<<endl;
     cin>>naz_a;
     cout<<"Podaj Telefon do Agenta"<<endl;
     cin>>tel;
}
void zapisza(){
    fstream plik_agent;

plik_agent.open("agent.txt", ios::out | ios::app);
plik_agent<<"ID Agenta:"<<id_a<<" "<<"Nazwisko:"<<naz_a<<" "<<"Telefon:"<<tel<<endl;
plik_agent.close();
}
Agent(int ida, int t, string naza){
    id_a=ida;
    tel=t;
    naz_a=naza;
    }

void pokaz_a(){
    cout<<"ID Agenta to:  "<<id_a<<endl<<"Nazwisko Agenta to:  "<<naz_a<<endl<<"Telefon do agenta to: "<<tel<<endl;
}

};
class Oferta{
int id_d;
int id_a;
string polozenie;
public:
void uzupelnijo(){
     cout<<"Podaj ID Dzialki"<<endl;
     cin>>id_d;
     cout<<"Podaj ID Agenta"<<endl;
     cin>>id_a;

}
void zapiszo(){
    fstream plik;

plik.open("oferta.txt", ios::out | ios::app);
   plik<<"ID Agenta:"<<id_a<<" "<<"ID dzialki:"<<id_d<<endl;
   plik.close();
}
Oferta(int idd, int idag){
    id_d=idd;
    id_a=idag;
    }
void pokaz_o(){
    cout<<"Dane oferty to: "<<endl<<
 "ID Agenta :"<<id_a<<endl<<"ID Dzialki: "<<id_d<<endl;
}

};

 

int main()
{

cout<<"  //////////////////////////////////////////////////////////////////////"<<endl;
cout<<" //                            BAZA DANYCH                           //"<<endl;
cout<<"//////////////////////////////////////////////////////////////////////"<<endl;
int wybor = -1;

while(wybor != 0){

cout<<"************************************************************************"<<endl;
cout<<"* Jesli chcesz dodac dzialke wybierz 1                                 *"<<endl;
cout<<"* Jesli chcesz dodac agenta wybierz 2                                  *"<<endl;
cout<<"* Jesli chcesz dodac oferte wybierz 3                                  *"<<endl;
cout<<"* Jesli chcesz wyswietlic zawartosc pliku dzialka.txt wybierz 4        *"<<endl;
cout<<"* Jesli chcesz wyswietlic zawartosc pliku agent.txt wybierz 5          *"<<endl;
cout<<"* Jesli chcesz wyswietlic zawartosc pliku oferta.txt wybierz 6         *"<<endl;
cout<<"* Zadanie 3a wybierz 7                                                 *"<<endl;
cout<<"* Jesli chcesz zakonczyc wybierz 0                                     *"<<endl;
cout<<"************************************************************************"<<endl;
cout<<"Co chcesz zrobic?"<<endl;
cin>>wybor;
if(wybor == 1){
    int iddz;
    int p;
    string pol;
Dzialka d1(iddz, p, pol);
d1.uzupelnijd();
d1.pokaz_d();
d1.zapiszd();

}
else if(wybor == 2){
    int ida;
    int t;
    string naza;
Agent a1(ida,t,naza);
a1.uzupelnija();
a1.pokaz_a();
a1.zapisza();

}
else if(wybor == 3){
int iddz;
int idag;
Oferta o1(iddz, idag);
o1.uzupelnijo();
o1.pokaz_o();
o1.zapiszo();

}
else if(wybor == 4){
      fstream plik;
    plik.open( "dzialka.txt", ios::in );
    if( plik.good() )
    {
        string napis;
        cout << "Zawartosc pliku:" << endl;
        while( !plik.eof() )
        {
            getline( plik, napis );
            cout << napis << endl;
        }
        plik.close();
    } else cout << "Error! Nie udalo otworzyc sie pliku!" << endl;

}
else if(wybor == 5){
      fstream plik;
    plik.open( "agent.txt", ios::in );
    if( plik.good() )
    {
        string napis;
        cout << "Zawartosc pliku:" << endl;
        while( !plik.eof() )
        {
            getline( plik, napis );
            cout << napis << endl;
        }
        plik.close();
    } else cout << "Error! Nie udalo otworzyc sie pliku!" << endl;

}
else if(wybor == 6){
      fstream plik;
    plik.open( "oferta.txt", ios::in );
    if( plik.good() )
    {
        string napis;
        cout << "Zawartosc pliku:" << endl;
        while( !plik.eof() )
        {
            getline( plik, napis );
            cout << napis << endl;
        }
        plik.close();
    } else cout << "Error! Nie udalo otworzyc sie pliku!" << endl;

}
else if(wybor == 7){
      fstream pliko;
      fstream plikd;
      fstream plika;
      int i = 0;
      int j = 0;
      int k = 0;
      string td[100];
      string ta[100];
      string to[100];

    pliko.open( "oferta.txt", ios::in );
    if( pliko.good() )
    {    string napiso;
        while( !pliko.eof() )
        {

            getline( pliko, napiso );
            to[i]=napiso;
            i++;
      }
            cout<<to[1]<<endl;

    plika.open( "agent.txt", ios::in );
    if( plika.good() )
    {    string napisa;
        while( !plika.eof() )
        {
            getline( plika, napisa );
            ta[j]=napisa;
            j++;

    }
     cout<<ta[1]<<endl;
    plikd.open( "dzialka.txt", ios::in );
    if( plikd.good() )
    {    string napisd;
        while( !plikd.eof() )
        {

            getline( plikd, napisd );
            td[k]=napisd;
            k++;

}
cout<<td[3]<<endl;
}
}
}
}
}
}
komentarz 28 kwietnia 2015 przez Marijusz44 Nowicjusz (200 p.)
te couty to tylko sprawdzały czy tablica jest uzupelniona, zapomniałem je usunąć

Podobne pytania

0 głosów
0 odpowiedzi 76 wizyt
pytanie zadane 11 kwietnia 2020 w PHP przez Mefjuu Nowicjusz (220 p.)
0 głosów
1 odpowiedź 122 wizyt
pytanie zadane 1 lutego 2017 w C i C++ przez Don Corleone Obywatel (1,210 p.)
0 głosów
1 odpowiedź 148 wizyt
pytanie zadane 3 maja 2021 w JavaScript przez ShockWave Bywalec (2,350 p.)

93,020 zapytań

141,985 odpowiedzi

321,286 komentarzy

62,366 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

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...