Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.09.2011, 00:41   #1
oblom
Пользователь
 
Аватар для oblom
 
Регистрация: 22.09.2007
Сообщений: 71
Сообщение Поиск в файле

Доброго времени суток...тема избита уже до невозможности, но грабли все теже. Нужно провести проверку наличия определенной строки.
В руках учебник Максима Динмана "Освой на примерах".

Глава 6.2 Поиск в файле
стр.182
Вот код:
Код:

#include <iostream>

#include <fstream>
#include <conio.h>
using namespace std;




int main()
 {

   char ch[100], buffer ;
   int w,i, K,pos, p, SK;
   bool test;
   int z=0;
   ifstream input("c:\\test\\test1.txt");// проверочнная строка
   ifstream input_1 ("c:\\test\\test2.txt"); //целевой файл где будем искать
   input_1>>ch;//чтение строки все вхождения которой нужно найти

   //cout<<"Prochitana stroka N: "<<ch<<endl;

   SK=p=0;
   K=strlen(ch);//возвращает длину строки
   while(!input.eof())
   {
   pos=input.tellg();
   input.read((char*)&buffer,sizeof(buffer));

   if (buffer!='\n') SK++;
   if (buffer==ch[0])
   {
   test=true;
   i=1;
   while (i<K && test)
   {
   input.read((char*)&buffer,sizeof(buffer));
   if (buffer!=ch[i] && buffer!='\n')
   {
   test = false;
   input.seekg(pos);
   input.read((char*)&buffer, sizeof(buffer));
   }
   if (buffer!='\n' )
   i++;
   }
   if (test)
           {

                p=1;

               // cout<<"Nomer stroki vhoda "<<SK<<endl;
               SK+=(K-1);
                z++;
                cout<<"Kolichestvo sovpadenij "<<z<<endl;
           }
   }
   }
  input.close();
   if(p==0)
    cout<<"SOVPADENIJ NET !!!";
    getch();
   return 0;
 }
содержание файла тест 2 (то где ищем)
27 44 8 16 12 4
13 41 3 23 12 16
12 32 30 49 3 18
34 12 14 24 36 23
30 13 36 44 23 4
31 44 6 49 5 39
29 44 6 37 22 18
27 44 8 16 12 4
26 37 9 44 46 24

содержание файла тест 1 (то что ищем)
13 41 3 23 12 16

"да это номера лотореи"

Ну так вот либо я уже устал или не понимаю совсем, почему не находится заданная строка!?
Код вроде правильный да видно руки кривые...
Подсобите советом пожалуйста.
"Пилите, Шура, пилите. Они золотые".....
oblom вне форума Ответить с цитированием
Старый 19.09.2011, 00:50   #2
oblom
Пользователь
 
Аватар для oblom
 
Регистрация: 22.09.2007
Сообщений: 71
По умолчанию

а ну вот и ответ еще раз перечитал увидел что напутал с искомым и проверочным файлом... это первая ошибка, но теперь показывает что таких строк 2 хотя на самом деле одна...
завтра буду добивать, если считаете тему исчерпанной можете закрыть..
"Пилите, Шура, пилите. Они золотые".....
oblom вне форума Ответить с цитированием
Старый 20.09.2011, 00:25   #3
oblom
Пользователь
 
Аватар для oblom
 
Регистрация: 22.09.2007
Сообщений: 71
По умолчанию для чего было нужно

...ну вот впрочем для чего все было нужно

Стояла задача слепить генератор чисел, найденное число найти в базе (с 1955_2000 года) данных, если не находится то вариант принимается как игровой.
Я слышу упреки учите мат часть этож быдлокодерство какое то...
Ну у меня вот так как у марадёра. А насчет матчасти ...учу...

а вот и результат может кому будет интересно:

Код HTML:
//Lotto generator
#include <iostream>
#include <fstream>
#include <conio.h>
using namespace std;



int suchen()
 {

   char ch[100], buffer ;
   int w,i, K,pos, p, SK;
   bool test;
   int z=0;
   ifstream input ("c:\\test\\BASE.dat"); //целевой файл где будем искать
   ifstream input_1("c:\\test\\test2.dat");// проверочнная строка



   input_1.getline( ch, 26 );  // считывание целой строки



   SK=p=0;
   K=strlen(ch);//возвращает длину строки
   //cout<<" Dlina stroki "<<K<<" Pozitzij"<<endl;
   while(!input.eof())
   {
   pos=input.tellg();
   input.read((char*)&buffer,sizeof(buffer));

   if (buffer!='\n') SK++;
   if (buffer==ch[0])
   {
   test=true;
   i=1;
   while (i<K && test)
   {
   input.read((char*)&buffer,sizeof(buffer));
   if (buffer!=ch[i] && buffer!='\n')
   {
   test = false;
   input.seekg(pos);
   input.read((char*)&buffer, sizeof(buffer));
   }
   if (buffer!='\n' )
   i++;
   }
   if (test)
           {

                p=1;
                cout<<"Nomer stroki vhoda "<<SK<<endl;
               SK+=(K-1);
                z++;
                cout<<"Kolichestvo sovpadenij "<<z<<endl;
           }
   }
   }
 // input.close();
   if(p==0)
    cout<<"SOVPADENIJ NET !!!"<<endl;
    //getch();
   return 0;
 }







int main()
{
ofstream out("c:\\test\\test2.dat", ios::ate); // подрезаем имеюшийся текст в файле
    int n, los, tab[6];
    cout<<"Generator Lotto (6 iz 49)"<<endl;
    cout<<"SKOLKO VARIANTOV SGENERIROVAT "; cin>>n;
    srand(time(NULL));
    for (int x=1; x<=n; x++)
    {
    for(int i=0; i<6; i++ )
    {
    los = (rand() % 49) + 1;
    int var1=0;
    for(int j=0; j<i; j++)
    if(tab[j]==los)
    var1=1;
    if(var1)
    i--;
    else
    tab[i] = los;
    }
    cout<<"VARIANT "<<x<<": ";

    for(int i=0; i<6; i++){
        cout<<tab[i]<<" ";
        out<<tab[i]<<" ";  //запись в файл через пробел  необходима для осуществления сравнения данных
    }

    cout<<endl;//  вывод на экран через новыую строку
    out<<endl; // запись через новую строку в файл
    }
     out.close(); //закрытие файла


   suchen();
   system("PAUSE");
    return 0;
}

мне не нравится реализация через записывание искомой комбинации в файл но по другому сделать мозга не хватило пока...
"Пилите, Шура, пилите. Они золотые".....
oblom вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск в файле MovsesIV Общие вопросы C/C++ 0 22.02.2011 06:33
Поиск данных в текстовом файле (в самом файле! а не в Memo и не загружая всю инфу из файла в одну строку glagoff Помощь студентам 1 05.05.2010 13:00
Поиск в файле SVadiks Помощь студентам 2 13.12.2009 21:46
Поиск в файле Cdevelop Общие вопросы C/C++ 5 16.03.2009 19:49
Поиск в файле Zandrey Microsoft Office Excel 8 05.09.2008 12:23