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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.10.2012, 17:04   #1
иван_пропал
Пользователь
 
Регистрация: 11.10.2012
Сообщений: 10
Печаль с++ структура

Добрый вечер. Помогите пожалуйста.
имеется файл f.dat в нем записана структура диска построчно. то есть одна строка = один диск. Не получается вывести на экран из файла диски цены которых меньше заданной пользователем.
сам код:
// kurs_9_2.cpp: главный файл проекта.
Код:
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <atlstr.h>
 
 
#include <stdio.h>
#include <stdlib.h>
 
 
using namespace System;
using namespace std;
 
//**********
 
int t; // кол dvd дисков
 
struct dvd //структура dvd диска 
{
char namefilm[20];//название фильма
char namereg[20];// имя режисера
int prodol; // продолжительность в минутах
int cena; // цена
};
 
void addvd(dvd *p1) // добавление дисков
{   

    cout<<"Вводите только латиницей(английскими)\n";
    cout<<"Количество dvd дисков = "; 
    cin>>t;
 //запись в файл
 fstream f("f.dat", ios::out);
    for(int i=0; i<t; i++)
 {  cout<<"\nназвание фильма: ";           cin>>p1[i].namefilm;   f<<p1[i].namefilm<<" ";
    cout<<"имя режисера: ";                cin>>p1[i].namereg;    f<<p1[i].namereg<<" ";
    cout<<"продолжительность в минутах: "; cin>>p1[i].prodol;     f<<p1[i].prodol<<" ";
    cout<<"цена: ";                        cin>>p1[i].cena;       f<<p1[i].cena<<"\n";
 
 }
 f.close();//закрытие потока

}
 
 
void print(dvd *p1)//вывести на экран
{
cout<<"\n";
fstream f("f.dat", ios::in);
for(int i = 0; !f.eof(); i++)
{  
    char temp[100];
    f >> temp;
    if (f.eof()) break;
    strcpy(p1[i].namefilm, temp); 
	cout<<"    Диск: "<<i+1<<endl;
	cout<<"Название фильма: "<<p1[i].namefilm<<endl;
    f >> p1[i].namereg; cout<<"Имя режисера: "<<p1[i].namereg<<endl;
    f >> p1[i].prodol; cout<<"Продолжительность: "<<p1[i].prodol<<endl;
    f >> p1[i].cena; cout<<"Цена: "<<p1[i].cena<<"\n\n";
    
}
f.close();
   
}
//*********
void poisk_cena(dvd *p1) //тут то и не получается
{
int rub;
cout<<"Задайте цену: ";
cin>>rub;
 
fstream f("f.dat", ios::in);
for(int i = 0; !f.eof(); i++)
{  
if (p1[i].cena<rub){

	f >> p1[i].namefilm;  cout<<p1[i].namefilm<<" ";
    f >> p1[i].namereg; cout<<p1[i].namereg<<" ";
    f >> p1[i].prodol; cout<<p1[i].prodol<<" ";
    f >> p1[i].cena; cout<<p1[i].cena<<"\n";
	}
    
}
f.close();
}
//*******  ГЛАВНАЯ ***************
int main()
{
    setlocale(LC_ALL,"Russian"); // подключение русского языка
    int k; // меню
    
  dvd *p1 = new dvd[];
 
    do{
    cout<<"1. Создать БД дисков\n";
    cout<<"2. Вывести данные\n";
    cout<<"3. Удалить с ценой выше чем...\n";
    cout<<"4. Добавить\n";
    cout<<"5. Выход\n";
    cin>>k;
    switch(k){
    case 1: addvd(p1); break;
    case 2: print(p1); break;
    case 3: poisk_cena(p1); break;
    case 4: cout<<""; break;
    }} while(k!=5);
 
    system("pause");
    return 0;
}

Последний раз редактировалось Stilet; 24.10.2012 в 20:32.
иван_пропал вне форума Ответить с цитированием
Старый 24.10.2012, 17:38   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,830
По умолчанию

Во-первых, не С++
Во-вторых,
Код:
fstream f("f.dat", ios::in);
 for(int i = 0; !f.eof(); i++)
 { 
 if (p1[i].cena<rub){
И откуда у п1 возьмется цена, если вы ее не прочитали еще?
p51x вне форума Ответить с цитированием
Старый 24.10.2012, 20:14   #3
иван_пропал
Пользователь
 
Регистрация: 11.10.2012
Сообщений: 10
По умолчанию

Ну Visual c++
А как надо код тогда организовать?
иван_пропал вне форума Ответить с цитированием
Старый 24.10.2012, 20:34   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А как файл выглядит?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.10.2012, 09:13   #5
иван_пропал
Пользователь
 
Регистрация: 11.10.2012
Сообщений: 10
По умолчанию

он заполняется вручную.
файл выглядит так:
имя_фильма имя_ режиссера продолжительность цена
имя_фильма2 имя_ режиссера2 продолжительность2 цена2
....
имя_фильмаN имя_ режиссераN продолжительностьN ценаN


и в конце всегда присутствует пустая строчка

Все догадался, изменил на след код:
Код:
void poisk_cena(dvd *p1)
{
int rub;
cout<<"Задайте цену: ";
cin>>rub;

fstream f("f.dat", ios::in);
for(int i = 0; !f.eof(); i++)
{  
    char temp[20];
    f >> temp;
    if (f.eof()) break;
    strcpy(p1[i].namefilm, temp); 
    f >> p1[i].namereg;
    f >> p1[i].prodol;
    f >> p1[i].cena;
    if (p1[i].cena<rub){
	cout<<"Название фильма: "<<p1[i].namefilm<<" ";
	cout<<p1[i].namereg<<" ";
	cout<<p1[i].prodol<<" ";
	cout<<p1[i].cena<<" \n";
	}
}
f.close();
}
но при вызове функции void print(dvd *p1) появляется ошибка http://www.fayloobmennik.net/2304165

Код:
void print(dvd *p1)//вывести на экран
{
cout<<"\n";
fstream f("f.dat", ios::in);
for(int i = 0; !f.eof(); i++)
{  
    char temp[100];
    f >> temp;
    if (f.eof()) break;
    strcpy(p1[i].namefilm, temp); 
	cout<<"    Диск: "<<i+1<<endl;
	cout<<"Название фильма: "<<p1[i].namefilm<<endl;
    f >> p1[i].namereg; cout<<"Имя режисера: "<<p1[i].namereg<<endl;
    f >> p1[i].prodol; cout<<"Продолжительность: "<<p1[i].prodol<<endl;
    f >> p1[i].cena; cout<<"Цена: "<<p1[i].cena<<"\n\n";
    
}
f.close();
}

Последний раз редактировалось иван_пропал; 25.10.2012 в 09:28.
иван_пропал вне форума Ответить с цитированием
Старый 25.10.2012, 12:39   #6
иван_пропал
Пользователь
 
Регистрация: 11.10.2012
Сообщений: 10
По умолчанию

эту ошибку исправил. dvd *p1 = new dvd[t]; поместил в каждую функцию. Но как реализовать то что вышло на экран в функции void poisk_cena() и перезаписать в тот же файл?
иван_пропал вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
структура на си(си++) Ислам Помощь студентам 10 29.06.2011 19:54
Структура с++ Елена_05 Общие вопросы C/C++ 10 30.05.2011 22:46
структура Arthur92 Общие вопросы C/C++ 0 11.05.2011 08:19
Структура. Си Usefur Помощь студентам 0 25.12.2010 16:53
Структура IF в С++ lebrosha Помощь студентам 3 22.05.2009 00:09