Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> поиск из файла! 
:(
    Опции темы
dizel003
Дата 22.12.2007, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 211
Регистрация: 7.11.2007

Репутация: нет
Всего: нет



Подскажите как сделать поиск !!
Например если программа сохраняет номера, мы вводим к примеру 12 номеров! И как после этого можно сделать так чтобы при компиляции можно было бы ввести номер и программа показалабы есть такой номер или нету!!!???

PM MAIL   Вверх
bsa
Дата 22.12.2007, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



dizel003, очень просто - читаешь из файла, в который ты записал все введенные числа, все содержимое и сравниваешь с искомым числом.
PM   Вверх
dizel003
Дата 22.12.2007, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 211
Регистрация: 7.11.2007

Репутация: нет
Всего: нет



Цитата(bsa @ 22.12.2007,  19:37)
 очень просто - читаешь из файла, в который ты записал все введенные числа, все содержимое и сравниваешь с искомым числом.

в моей программе в файл записываются не только числа но и имена и т.д. но нужно чтобы толькоты ты вводил число и программа показывала есть такое число или нет!!!
 smile 
PM MAIL   Вверх
papam
Дата 22.12.2007, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 104
Регистрация: 2.2.2006
Где: Украина::Запорожь е

Репутация: 2
Всего: 4



Если файл текстовый - можно читать построчно (fgets) и в каждой считанной строчке искать искомую подстроку (strstr).
--------------------
No Fucking Future
PM MAIL ICQ   Вверх
dizel003
Дата 22.12.2007, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 211
Регистрация: 7.11.2007

Репутация: нет
Всего: нет



Цитата(papam @ 22.12.2007,  20:06)
Если файл текстовый - можно читать построчно (fgets) и в каждой считанной строчке искать искомую подстроку (strstr).

пожалуста напишите пример!!! smile 
PM MAIL   Вверх
bsa
Дата 22.12.2007, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(dizel003 @ 22.12.2007,  19:43)
в моей программе в файл записываются не только числа но и имена и т.д. но нужно чтобы толькоты ты вводил число и программа показывала есть такое число или нет!!!
 smile

есть варианты:
1. после ввода числа перечитываешь файл
2. ввод данных и поиск осуществляешь с динамическим массивом, который сохраняешь в файл после окончания ввода.

кстати, ты не указал язык (Си или Си++)
PM   Вверх
dizel003
Дата 22.12.2007, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 211
Регистрация: 7.11.2007

Репутация: нет
Всего: нет



Цитата(bsa @ 22.12.2007,  20:26)
1. после ввода числа перечитываешь файл
2. ввод данных и поиск осуществляешь с динамическим массивом, который сохраняешь в файл после окончания ввода.

кстати, ты не указал язык (Си или Си++)

язык С++ Visual !!!

Код

cout<<"Vvesti nomer dlya zapisi"<<endl;
int nomer_p;
cin>>nomer_p;
while(!fin.eof())
{
fin>>phone->number;
if(phone->number==nomer_p);
cout<<phone->number<<endl;
if(fin.eof())
break;


Вот так надо???
PM MAIL   Вверх
papam
Дата 22.12.2007, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 104
Регистрация: 2.2.2006
Где: Украина::Запорожь е

Репутация: 2
Всего: 4



Можно так поиск организовать:
Код


#include "stdio.h"
#include "conio.h"

#define FNAME "....." // в кавычках пишешь путь и имя файла

void main
{
    char fname[20] = FNAME;
    FILE *in    // твой файл
    int   a; //твое число  найденное
    int n = 0; // колличество записей, удовлетворящих запросу
    int  obr; // образец для поиска
// Открываем файл в режиме чтения(r) текста (t)

if((in = fopen(fname,"rt")) == NULL)
 {
     printf("Ошибка открытия файла %s",fname);
     getch();
     return;
 }
  // Получим данные от пользователя
  printf("Число ->");
  scanf("%s",&a);
  while(!feof(in))
 {
    fscanf(in,"%s",a);  //  поиск
    if(a ==obr)
    {
        printf("%s",a);   // выводим число если нашли
        n++;
    }
 }
    if(n)
      {
         printf("Найдено записей : %i",n)
      }
     else
    {
        printf("Нет найденных данных",obr)
    }
    fclose(in)   // закрываем файл
    getch();
}


Это сообщение отредактировал(а) papam - 22.12.2007, 21:19
--------------------
No Fucking Future
PM MAIL ICQ   Вверх
bsa
Дата 23.12.2007, 00:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



papam, тебе же сказали Visual C++. А ты на Си написал, да еще и нестандартном.
Код
#include <vector>
#include <string>
#include <iostream>
#include <fstream>
#include <algorithm>
#include <iterator>

struct MyRecord
{
       char name[50];
       char phone[20];
       int number;
};

std::ostream& operator<<(std::ostream& stream, const MyRecord &rec)
{
    return stream.write(reinterpret_cast<const char*>(&rec), sizeof(rec));
}

struct MyRecordNumComp
{
       bool operator()(const MyRecord &r) const {
             return r.number == number;
       }
       MyRecordNumComp(int n) : number(n) {}
private:
       const int number;
};

MyRecord inputRecord()
{
      MyRecord rec;
      std::cout << "Input name: " << std::flush;
      std::cin.getline(rec.name, sizeof(rec.name));
      std::cout << "Input phone: " << std::flush;
      std::cin.getline(rec.phone, sizeof(rec.phone));
      std::cout << "Input number: " << std::flush;
      std::cin >> rec.number;
      std::cin.ignore();
      return rec;
}

int main()
{
      typedef std::vector<MyRecord> RecArray;
      RecArray records;
      std::cout << "Input number of entries: " << std::flush;
      unsigned n;
      std::cin >> n;
      std::cin.ignore();
      for(; n; --n) {
            const MyRecord rec = inputRecord();
            if (std::find_if(records.begin(), records.end(), MyRecordNumComp(rec.number)) != records.end() ) {
                  std::cerr << "Record with this number is already present. Try again." << std::endl;
                  ++n;
            } else
                 records.push_back(rec);
      }
      std::ofstream stream("file.dat");
      std::copy(records.begin(), records.end(), std::ostream_iterator<MyRecord>(stream));
      return 0;
}

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1169 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.