Автор Тема: Использование класса vector.  (Прочитано 8264 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Анчик

  • Коллежский регистратор
  • *
  • Сообщений: 8
  • Репутация: 0
Использование класса vector.
« : ёоЫм 19, 2008, 10:44:08 pm »
Программирую базу данных. Сами данные хранятся в файле, но прога должна записать эту базу данных из файла в вектор и уже с ним работать. Файл я прикрепила, а вот как переписать в вектор не знаю.Подскажите, если кто-нибудь знает!

Оффлайн beholder

  • C++ fan
  • Статский советник
  • *****
  • Сообщений: 754
  • Репутация: 20
  • Пол: Мужской
Re: Использование класса vector.
« Ответ #1 : ёоЫм 19, 2008, 10:56:16 pm »
а что там может неполучатся? наработки покажи, там все элементарно

Оффлайн Анчик

  • Коллежский регистратор
  • *
  • Сообщений: 8
  • Репутация: 0
Re: Использование класса vector.
« Ответ #2 : ёоЫм 19, 2008, 11:41:38 pm »
Я совсем не ас в программировании, только учусь, поэтому прога корявенькая. И на самом деле я не прикрепила еще файл, я только примерно представляю как это сделать...

[вложение удалено Администратором]

Оффлайн beholder

  • C++ fan
  • Статский советник
  • *****
  • Сообщений: 754
  • Репутация: 20
  • Пол: Мужской
Re: Использование класса vector.
« Ответ #3 : ёоЫм 19, 2008, 11:50:27 pm »
вот тебе пример как прочитать из файла
     std::vector<Poezd> aTrains;
     aTrains.reserve(1000); // не обязательно
     Poezd *tmp;
     std::ifstream in("FileNameWithFullPathToFileOrJustNameIfFileNearExe");
tmp=new Poezd;
in >>tmp->n_p;
in>>tmp->p_o;
in>>tmp->p_n;

for(int i=0; i<5; i++)
{
  in >> tmp->v_o[i];
}
           aTrains.push_back(*tmp);

во тебе код считывания из файла, подгоняй, делай цикл и разбирайся.

Оффлайн Анчик

  • Коллежский регистратор
  • *
  • Сообщений: 8
  • Репутация: 0
Re: Использование класса vector.
« Ответ #4 : ёоЫм 19, 2008, 11:52:57 pm »
Благодарю!!Буду разбираться!!

Оффлайн Анчик

  • Коллежский регистратор
  • *
  • Сообщений: 8
  • Репутация: 0
Re: Использование класса vector.
« Ответ #5 : ёоЫм 25, 2008, 11:49:19 pm »
С вектором разобралась, правда пришлось немного прогу переделать, дабы времени мало, а она не работала. Теперь никак не могу с поиском разобраться, сама функция написана, но не пашет.Сижу уже третий день и не могу подступиться к ней.

[вложение удалено Администратором]

Оффлайн beholder

  • C++ fan
  • Статский советник
  • *****
  • Сообщений: 754
  • Репутация: 20
  • Пол: Мужской
Re: Использование класса vector.
« Ответ #6 : ёоЫм 26, 2008, 08:40:41 am »
код выложи не файлом, а в тегах код. И скажи что конкретно не получается.

Оффлайн Анчик

  • Коллежский регистратор
  • *
  • Сообщений: 8
  • Репутация: 0
Re: Использование класса vector.
« Ответ #7 : ёоЫм 26, 2008, 11:01:22 am »
Не получается найти ошибку в функции поиска
#include "stdafx.h"
#include <iostream>
#include <vector>
#include <string>
#include <fstream>
#include "PrintCyr.h"
#include <time.h>
#include <ctype.h>
#include<cstdio>
using namespace std;

int NumOfFunction;

typedef struct vecPoezd *po;
typedef struct vecPoezd
{
int n_p;
string p_o;
string p_n;
time_t v_o;
po sled;
vecPoezd ()
{
sled=NULL;
}

}Leader;


class Poezd
{
public:
void vvod(po &tmp, int &, string &, string &, time_t &);
void vivod(po viv);
void poisk(char a[5]);
void poiskPoStancii(char a[5]);
};


void Poezd::vvod(po &tmp, int &n_p, string &p_o, string &p_n, time_t &v_o)

if(tmp==NULL)
{
tmp=new vecPoezd();
(*tmp).n_p=n_p;
(*tmp).p_o=p_o;
(*tmp).p_n=p_n;
(*tmp).v_o=v_o;
}
else vvod((*tmp).sled, n_p, p_o, p_n, v_o);
}

void Poezd::vivod(po viv)
{

if(viv!=NULL)
{

cout<<(*viv).n_p<<" "<<(*viv).p_o<<" "<<(*viv).p_n<<" "<<(*viv).v_o<<endl;;
vivod((*viv).sled);

}

}
   
void Poezd::poisk(char a[5])
{
Poezd *tmp2;
        tmp2=new Poezd;
        tmp2=sled;
        int fl=1;
        while(fl==1)-
        {      int j=0;
               while(j<5)
                {
                        if(tmp2->n_p[j]!=a[j])
                                j=7;
                        if(j==4)
                        {
                                if(tmp2->n_p[j]==a[j])
                                {
                                   
                                        cout<<tmp2->p_n;
                                       
                               
                                cout<<"-";
             cout<<"vremya otpravlenia";
             cout<<tmp2->v_o;
                               cout<<tmp2->p_n;
                                                 cout<<"\n";           
                                }
                        }
                        j++;
                }
                tmp2=tmp2->next;
        }
}                         

void main()

Poezd a;
po tmp;
tmp=NULL;
  while(NumOfFunction!=6)
{

cout<<"Menu:"<<endl;
cout<<"1: Nachalnoe formirovanie svedenii.Nazmite '1'"<<endl;
cout<<"2: Svedeniya is faila. Nazmite '2'"<<endl;
cout<<"3: Vivod svedenii po vsem poezdam.Nazmite '3'"<<endl;
cout<<"4: Po poezdu s zaproshennim nomerom.Nazmite '4'"<<endl;
cout<<"5: Po tem poezdam kot sleduyut do zaproshennoi stancii.Nazmite '5'"<<endl;
cout<<"6: Zavershenie raboty progi.Nazmite'6'"<<endl;
cout<<"Vash vibor: ";
cin>>NumOfFunction;
cout <<endl;
if ((NumOfFunction<1)||(NumOfFunction>6))
{
cout<<"Vi vveli nekorrektnuyu komandu!"<<endl;
NumOfFunction=0;
}
switch (NumOfFunction)
{

case 1:
{
int bred=0;
ofstream file;
  file.open("bd",ios::app );
if(!file){
cerr<<"File otkrit nevozmogno\n";
}

while(bred!=1)
{
int n_p;
string p_o;
string p_n;
time_t v_o;
cout <<"Vvedite nomer poezda\n";
cin >>n_p;
if (n_p==0) break;
cout <<"vvedite punkt otpravleniya\n";
cin>>p_o;
cout <<"vvedite punkt nazna4eniya\n";
cin>>p_n;
cout<<"vvedite vremya otpravleniya\n";
cin>>v_o;
                   
file<<n_p<<" "<<p_o<<" "<<p_n<<" "<<v_o<<endl;
a.vvod(tmp, n_p, p_o, p_n, v_o);

}
file.close();
break;

}
case 2:

{
fstream file;
file.open("bd",ios::in);
if (!file)
{
cerr <<"File otkrit nevozmogno!"<<endl;
break;
}
int n_p;
while (file>>n_p)
{
string p_o;
string p_n;
time_t v_o;
file>>p_o;
file>>p_n;
file>>v_o;
a.vvod(tmp, n_p, p_o, p_n, v_o);
}
file.close();
break;
}
case 3:
{
a.vivod(tmp);
break;
}

case 4:
{
a.poisk(tmp2);
break;
}


case 6:
{
exit(0);
}


} //????? switch
} //while

} //main

Оффлайн beholder

  • C++ fan
  • Статский советник
  • *****
  • Сообщений: 754
  • Репутация: 20
  • Пол: Мужской
Re: Использование класса vector.
« Ответ #8 : ёоЫм 26, 2008, 11:27:55 am »
какая там ошибка? что ищет a-bz поиска? ты хочешь, чтобы тебе помогли? тогда расписывай все что ты знаешь, что нужно и что не получается.

Оффлайн Анчик

  • Коллежский регистратор
  • *
  • Сообщений: 8
  • Репутация: 0
Re: Использование класса vector.
« Ответ #9 : ёоЫм 26, 2008, 02:12:14 pm »
Эта функция поиска должна вывести по запрошенному номеру поезда всю остальную информацию о нем.Почему то выдает странные ошибки, типа неизвестный идентификатор, хотя до этого он свободно используется.Вообщем в итоге эта функция вообще не работает...не исключено, что при переделке моей проги, я не все подогнала под новую структуру, но я уже все 100 раз проверяла и не могу найти недоработки.Мне нужно сделать еще одну функцию, только поиск по станции, но так как я не сделала эту, то соответственно к след я тоже не могу перейти.Может кто свежим взглядом посмотрит и сразу увидит что не так. Я уже отчаилась.

Оффлайн beholder

  • C++ fan
  • Статский советник
  • *****
  • Сообщений: 754
  • Репутация: 20
  • Пол: Мужской
Re: Использование класса vector.
« Ответ #10 : ёоЫм 26, 2008, 06:00:30 pm »
  while(fl==1)-
что за минус в конце сторки? ;)

Оффлайн dEEp

  • Глобальный модератор
  • Тайный советник
  • *****
  • Сообщений: 2021
  • Репутация: 29
  • Пол: Мужской
Re: Использование класса vector.
« Ответ #11 : ёоЫм 26, 2008, 06:06:00 pm »
  while(fl==1)-
что за минус в конце сторки? ;)
думаю опечатка. потому как компилятор бы ткнул на эту строку.
Подпись - есть нечто иное, как изъяснение общей сути человека, выраженное кем-то более великим, чем тот, кто написал его в каком-либо месте в любой форме изложения....

Оффлайн beholder

  • C++ fan
  • Статский советник
  • *****
  • Сообщений: 754
  • Репутация: 20
  • Пол: Мужской
Re: Использование класса vector.
« Ответ #12 : ёоЫм 26, 2008, 09:26:16 pm »
не обязательно, мог ткнуть и на другую.

Оффлайн Анчик

  • Коллежский регистратор
  • *
  • Сообщений: 8
  • Репутация: 0
Re: Использование класса vector.
« Ответ #13 : ёоЫм 26, 2008, 10:26:18 pm »
Этот минус я уже тоже увидела и убрала, правда ничего от этого не поменялось)))))
А после нескольких часов пролистывания книг набросала еще один вариантик, но к сожалению от него пользы тоже никакой(((
void Poisk_po_nomeru()
{int x;
 cin>>x;//номер поезда
 Poezd *tmp;
 tmp=new Poezd;
 tmp=beg;
while(tmp->sled!=NULL)
{
 if(tmp->n_p==x)
 {
  cout<<tmp->n_p;
  cout<<tmp->p_n;
  cout<<tmp->v_o;
   
 }
 tmp=tmp->sled;
}
}


теперь мне надо выбрать, какой их них потенциальный и попытаться сделать из него работающий...в этом то и вся сложность....(((

Оффлайн beholder

  • C++ fan
  • Статский советник
  • *****
  • Сообщений: 754
  • Репутация: 20
  • Пол: Мужской
Re: Использование класса vector.
« Ответ #14 : ёоЫм 26, 2008, 10:59:16 pm »
я в твоем коде ничерта не понимаю, либо пиши нормально, либо разбирайся сама