Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
kandrey58region
1 / 1 / 0
Регистрация: 11.03.2009
Сообщений: 109
#1

Поиск в файле... Нужна помощь... - C++

12.04.2009, 00:30. Просмотров 442. Ответов 1
Метки нет (Все метки)

Помогите доработать код, мне необходимо было создать программу которая читатет файл 'd:\file.txt' , создает и копирует всё его содержимое в типизированный файл 'd:\out.dat'.
А теперь мне необходимо создать функцию 'void opt()', т.е. которая работает по типу вводишь число равное 500 если оптовая цена какого-либо монитора равна 500 то нужно вывести на экран всю строку с этим монитором(название, оптовую и розничную цены)
Программа должна содержать меню:
1 Запись в файл
2 Вывод на экран
3 Очистка файла //очистка файла 'out.dat'
4 Поиск
5 Выход

Код
#include <iostream.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>

struct mon {
  char type[20];
  int opt, rozn;
  char comm[40];
};
int kol=0;
void WriteFile()
{
	FILE *fi,*fo;
	 clrscr();
	 if ((fi=fopen("D:\\file.txt", "r"))==0){
	  cout << "Error open input file!!!" ;
	  return;}
	 if ((fo=fopen("D:\\out.dat","w+b"))==0){
	  cout << "Error open output file!!!";
	  return;}
	 const int dl=80;
	 char s[dl];
	mon a;
	while(fgets(s,dl,fi)){
	strncpy(a.type,s,19);
	a.type[19]='\0';
	a.opt=atoi(&s[20]);
	a.rozn=atoi(&s[25]);
	strncpy(a.comm,&s[30],40);
	fwrite(&a,sizeof(mon),1,fo);
	kol++;
	};
	fclose(fi);
	fclose(fo);

	return;
}

void out()
{
	FILE *fo;
	clrscr();
	if ((fo=fopen("D:\\out.dat","rb"))==0){
	  cout << "Error open output file!!!";
	  return ;}
	int i;
	cout<<"Input number of Zapisi ";
	cin >>i;//после ввода i не забываем нажать Enter
	if (i>kol) {
	  cout << "Zapisi net!!!";
	  return;}

	mon a;
	fseek(fo,sizeof(mon)*(i-1),SEEK_SET);
	fread(&a,sizeof(mon),1,fo);
	cout << "Tip: " << a.type << " opt.: " << a.opt << " rozn: " << a.rozn << endl;
	fclose(fo);
}

void ClearFile()
{
	FILE *fo;
	clrscr();
	if ((fo=fopen("D:\\out.dat","wb"))==0){
	cout << "Error open output file!!!"<<endl;
	  return ;}
	fclose(fo);
}

void Search()
{
 char menu_2;
 clrscr();
 do
 {
   cout <<endl<< " Optovaya" << endl <<"4 Vozvrat v gl. menu"<< endl;
   menu_2=getch();
   switch(menu_2)
   {
	 case '1':
	   WriteFile();
	   break;
	 case '2':
	   out();
	   break;
	 case '3':
	   ClearFile();
	   break;
	  };
   if (menu_2=='4') break;
 }
 while(1);
clrscr();
}

void main()
{
 char menu;
 int i;
 kol=0;
 clrscr();
 do
 {
   cout <<endl<< "1 Zapis' v file" << endl <<"2 Vivod na ekran" << endl << "3 Ochistka file" << endl << "4  Search..."<< endl << "5 Vichod" << endl;
   menu=getch();
   switch(menu)
   {
	 case '1':
	   WriteFile();
	   break;
	 case '2':
	   out();
	   break;
	 case '3':
	   ClearFile();
	   break;
	 case '4':
	   Search();
	   break;
		 };
   if (menu=='5') break;
 }
 while(1);
}
Сам текстовый файл содержит информацию о мониторах...
Код
Huindai             350  400  plohoi                                  l
Samsung             500  550  norma                                   l
Sony                300  400  rtye                                    l
Acer                200  350  hgfak                                   l
вот в поиске как раз осуществляется поиск из файла по оптовой цене...
оптовая цена это вторая колонка...
если расценивать по строкам на название отводится 20 символов, на оптовую и розничную цены по 5 символов, на комментарии 40 символов...
Плиз помогите составить данную функцию..
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.04.2009, 00:30     Поиск в файле... Нужна помощь...
Посмотрите здесь:

Интересный поиск)) Помощь безумно нужна - C++
Такая проблема, если до завтра прогу не напишу, отчислят. Дан текстовый файл, найти в нём нужное слово. Но сложность в том чтобы не...

Нужна помощь с классом - C++
Вот напечатал это: #include &lt;iostream&gt; #define maxN 10 //количество вершин using namespace std; class directed_graph { ...

Нужна помощь с циклами - C++
Помогите, пожалуйста, нету никаких идей. Пользователь вводит число. Показать сколько в данном числе чисел и сумму этих чисел. Нужно...

нужна помощь с рекурсией. - C++
Ребята, кто мне может объяснить доступно рекурсию на элементарном примере? в интернетах в основном примеры с факториалом. вроде с ним...

Нужна помощь в исправлении - C++
эта программа расчитывает значения отрезка интегрирования (x1, x2) один для всех трех интегралов, помогите сделать так, чтобы нужно было...

Нужна помощь Строки. - C++
Составить программу вывода последовательности символов ZYYXXX...AA..AA Y на экран.

Нужна помощь в структуре поезд! - C++
В файле содержится информация о железнодорожном расписании (номер поезда, время прибытия на станция, время отправления название станции )....

Нужна помощь с задачками по циклу for - C++
Здраствуйте все. Уменя вот не получаеться сделать задачки кто сможет мне помочь вот картинки сними ...

Начинаю изучение C++ (нужна помощь) - C++
Изучаю Visual C++ . но вот проблема.. моя программа не компилируется... хотя код взят с учебника... и проблем с компиляцией быть ни...

нужна помощь в создании процедуры на С++ - C++
нужна помощь в создании процедуры. задание звучит так: написать процедуру вычисления интерполяционного полинома в форме Лагранжа, Эйткина,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
accept
4820 / 3240 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
12.04.2009, 04:43     Поиск в файле... Нужна помощь... #2
читаешь каждую запись в структуру и если её второе поле равно 500, выводишь все её поля

Добавлено через 45 секунд
в opt передаешь 500
Yandex
Объявления
12.04.2009, 04:43     Поиск в файле... Нужна помощь...
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru