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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не могу найти ошибку в функции 
:(
    Опции темы
devl13
Дата 9.12.2013, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Задание: Запись имеет вид: название вуза, число студентов, количество факультетов. Добавить в конце файла информацию о трех новых вузах и посчитать общее число студентов.

Все написал, функция расчета общего числа не работает, не могу найти ошибку. Может кто подскажет что не правильно делаю.

Код

#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
#include<locale.h>
 
struct tov {char name[10];float c;int sum;} t1;
void input(FILE *);//создание нового файла
void print(FILE *);//просмотр файла
void app(FILE *);//добавление в файл
void kolich(FILE *);//подсчет общего количество студентов
main()
{setlocale(LC_CTYPE,"Russian");
 char c;
 FILE *tf;
 while (1)
 {system("CLS");
  puts("1 - Создание нового файла");
  puts("2 - Просмотр файла");
  puts("3 - Добавление в файл");
  puts("4 - Количество студентов");
  puts("0 - Выход");
   c=getch();
   switch(c)
   {case '1':input(tf);break;
    case '2':print(tf);break; 
    case '3':app(tf);break;
    case '4':kolich(tf);break;
    case '0':return 0;
    default:puts("Неверный режим");
  }
 }
}       
void input(FILE *tf)
{char ch;
 tf=fopen("file1.dat","wb");//открытие бинарного файла для записи
 system("CLS");
 printf("\n Ввод информации о вузе\n");
 do
 {printf("\n Название вуза: "); scanf("%s",&t1.name);
  printf(" Число студентов: "); scanf("%f",&t1.c);
  printf(" Количество факультетов: "); scanf("%d",&t1.sum);
  fwrite(&t1,sizeof(t1),1,tf);//запись в файл одной строкой t1
  printf("\n Закончить? y/n ");
  ch=getch();
 }
 while(ch != 'y');
 fclose(tf);
}
void print(FILE *tf)
{int i;
 system("CLS");
 tf=fopen("file1.dat","rb");//открытие бинарного файла для чтения
 i=1;
 fread(&t1,sizeof(t1),1,tf);//чтение из файла одной структуры t1
 while(!feof(tf))
 {printf("\n %1d Вуз: %1s | Количество студентов: %1.0f | Количество факультетов: %1d",i,t1.name,t1.c,t1.sum);
  fread(&t1,sizeof(t1),1,tf);
  i++;
 }
 getch(); 
}
void app(FILE *tf)
{char ch;
 tf=fopen("file1.dat","ab");//открытие бинарного файла для добавления
 system("CLS");
 printf("\n Название вуза \n");
 do
 {printf("\n Название: "); scanf("%s",&t1.name);
  printf(" Число студентов: "); scanf("%f",&t1.c);
  printf(" Количество студентов: "); scanf("%d",&t1.sum);
  fwrite(&t1,sizeof(t1),1,tf);
  printf(" Закончить? y/n ");
  ch=getch();
 }
 while(ch != 'y');
 fclose(tf);
}     
void kolich(FILE *tf)
{ int sum;
  tf=fopen("file1.dat","rb");
  sum=1;
  fread(&t1,sizeof(t1),1,tf);
  while (!feof(tf))  
  {
      sum++;
  }
  printf("Количество:",sum);
  getch();
  fclose(tf);  
}

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


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

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



Число студентов - float?  smile

Добавлено через 6 минут и 28 секунд
Цитата(devl13 @  9.12.2013,  20:38 Найти цитируемый пост)
  fread(&t1,sizeof(t1),1,tf);
  while (!feof(tf))  
  {
      sum++;
  }

Быть может, Вы хотели fread поместить и внутрь цикла? Почему Вы отсчитываете sum от 1? Число факультетов таким образом ещё можно посчитать (через sum++), но вот число студентов - вряд ли)))


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

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

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

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

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


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

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


 




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


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

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