Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: С++ проблемы с функцией считывания  (Прочитано 6313 раз)
0 Пользователей и 1 Гость смотрят эту тему.
galia
Новенький

ua
Offline Offline

« : 05-02-2012 18:13 » 

Ребят помогите пожалуйста не работает функция считывания из файла... уже правда не знаю где искать
      
   
Код:
Код: (C++)
# include <iostream>
# include <fstream>
using namespace std;
struct gr
{
   char fio [12];// фио
   int oc[5];// оценки студентов
   int kpr;// количество пропущеных часов
   int kgod;//количество прогулов

}
  a[30],d;
void vvod (gr &d);
void infile(int&n,gr*a);// функция считывания
  void outfile ();// функция записи в файл
void prosm();
void kor();
void ud();
fstream f;
ofstream out;
ifstream in;
void dob();
void obr(int n);
void obrt(int n);
void obrr(int n);

char imfile[12],ch;
int main()
{
  int n,pm;
  do
  {cout<<"  "<<endl;
    cout<<"        1.zapic v fayl"<< endl;
    cout<<"         2.dobavlenie"<< endl;
    cout<<"          3.stydenti dvoeshniki s progylami"<< endl;
    cout<<"           4.Xoroshistu s progylami"<< endl;
    cout<<"            5.otlichniki s progylami"<< endl;
    cout<<"             6.korektirovka "<< endl;
    cout<<"              7.udalenie"<< endl;
    cout<<"               8.Prosmotr"<< endl;
    cout<<"                9.vixod"<< endl;

  cout<<"        vvedite nugniy punkt menu"<< endl;
  cin>> pm;
  cout<<"       vvedite nygnoe ima fayla"<< endl;
  cin>> imfile;

   switch(pm)
    {
     case 1: outfile();
     break;
     case 2:dob();
     break;
     case 3: obr(n);
     break;
     case 4: obrt( n);
     break;
     case 5: obrr( n);
     break;
     case 6: kor();
     break;
     case 7: ud();
     break;
     case 8: prosm();
     break;
     case 9: exit(0);
    }
cout<<"Budete eshe rabotat c dannm faylom?";
cin>> ch;
}
while(toupper (ch)=='Y');
return 0;

  }
  void vvod(gr&d)
  {
       int i=0,n,j;
  cout<<"     vvedite kolichestvo sctudentov"<<endl;
  cin>>n;
  cout<<"vvedite fio,kolichestvo propuskov, kolichestvo progulov ,ocenki";
  for (;i<n;i++)
  {
     
      cin >>d.fio>>d.kpr>>d.kgod;
   
       for(j=0;j<5;j++)
      {
           cout<<"ocenki"<<endl;
         cin>>d.oc[j];
      }
  }
}
    void outfile()
  {
      int i=0;
      out.open (imfile,ios::out);
      do
       {
           vvod(d);
           out << d.fio<<d.kpr<<d.kgod<<endl;
           for (i=0;i<5;i++)
           out<<d.oc[i];
           cout <<"echo? Y/N";
           cin >>  ch;

       }
       while(toupper(ch)=='Y');
       out.close();

   }
   void infile(int&n,gr*a)
{
    int j,i=0;
    in.open(imfile,ios::in);
    while(!in.eof())
    in>>a[i].fio>>a[i].kpr>>a[i].kgod;
     for (j=0;j<5;j++)
           in>>a[i].oc[j];
    in. close();
    n=i;
}
void prosm()
{
    int n,i=0,j;
    infile(n,a);
    cout<<" FIO "<<" Propycheno vsego "<<" Progylov "<<" ocenki ";
    for(;i<n;i++)
    cout<<a[i].fio<<a[i].kpr<<a[i].kgod;
    for(j=0;j<n;j++)
    cout<<a[i].oc[j];
}
   
      

записываю файл , а при просмотре ничего не происходит......
заранее всем благодарна
« Последнее редактирование: 05-02-2012 18:25 от Вад » Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #1 : 05-02-2012 18:53 » new

Логику прогрвммы менять.  
Код: (C++)
void vvod(gr&d)
  {
       int i=0,n,j;
  cout<<"     vvedite kolichestvo sctudentov"<<endl;
  cin>>n;
  cout<<"vvedite fio,kolichestvo propuskov, kolichestvo progulov ,ocenki";
  for (;i<n;i++)
  {
     
      cin >>d.fio>>d.kpr>>d.kgod;
   
       for(j=0;j<5;j++)
      {
           cout<<"ocenki"<<endl;
         cin>>d.oc[j];
      }
  }
}
Например тут. Сколько ты заносиш студентов в 1 запись? Тогда зачем тут вопрос
Код: (C++)
cout<<"     vvedite kolichestvo sctudentov"<<endl;
  cin>>n;
Посчитай, количество элементов, которое ты запрашиваеш у пользователя
Код: (C++)
  cout<<"vvedite fio,kolichestvo propuskov, kolichestvo progulov ,ocenki";
Я насчитал 4
А программа запрашивает?
Код: (C++)
cin >>d.fio>>d.kpr>>d.kgod;
Вроде как 3 всего.
Не стал шерстить дальнейшую логику.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
galia
Новенький

ua
Offline Offline

« Ответ #2 : 05-02-2012 19:05 » 

Простите, но я ввожу столько элементов сколько  запросила  у пользователя ,согласна что вот это можно было не выводить пользователю еще раз cout<<"ocenki"<<endl;
  for(j=0;j<5;j++)
      {
           cout<<"ocenki"<<endl;
         cin>>d.oc[j];
что касается сколько я заношу студентов в одну запись то по чему я должна заносить одного студента если сразу могу записать данные о всей группе которая состоит (допустим)из 15 человек..... покрайней мере на паскале такая логика срабатывала....
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #3 : 05-02-2012 19:09 » 

galia, Попробуем на простом примере Улыбаюсь. У  тебя есть бумажный бланк в который ты можеш занести всего 1 студента. Конечно туда можно вписать и все 100 человек. Но после этого этот бланк нельхя будет прочитать, так как он будет весь перечеркнут. Также и тут. Ты заносиш в 1 строку все 15 строк. Такое и на паскале не прокатит, поверь мне.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
galia
Новенький

ua
Offline Offline

« Ответ #4 : 05-02-2012 19:55 » 

все простите была не права
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines