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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> сформировать файл который имеет следующую структур 
:(
    Опции темы
Narim
Дата 30.5.2011, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



день добрый. мне задали составить программу на 2х языках программирования.(на паскале(pas) и на СИ©) на паскале я сделал задачу. но вот на СИ у меня проблема с этим. помогите составить программу на СИ. заранее благодарю!
Сформировать файл “stud”, имеющий следующую структуру: фамилия студента, пол(буква), год рождения. Напечатать список студентов мужского пола с указанием их возраста. В конце списка напечатать средний возраст.
вот код паскаля.

Код
program pr3;
uses crt;
const n=5;
type
swed=record

fio:string;
pl:string;
god:integer;
end;
var
f:file of swed;
d:swed;i,k,t:integer; s:real;
begin
clrscr;
assign(f,'f.txt');
rewrite(f) ;
for i:=1 to n do
begin
with d do
begin
write('famaly: ');readln(fio);
write('pol: '); readln(pl);
write('vozrast: '); readln(god);
end;
write(f,d);
end;close(f);
reset(f);
writeln;
k:=0;t:=0;
while not (eof(f)) do
begin
read(f,d);
if (d.pl='m') then begin writeln(d.fio);writeln(d.god);k:=k+1;t:=t+d.god;end;
end;
s:=t/k;
writeln('s=',s:3:2);
close(f);
end.

 выложил его т.к мне сказали что можно по нему сделать др код. исвиняюсь если что не так.

Это сообщение отредактировал(а) bsa - 30.5.2011, 10:58
PM MAIL   Вверх
bsa
Дата 30.5.2011, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Код
#include <stdio.h>
#include <string.h>
#define N 5

struct swed
{
   char fio[256];
   char pl;
   int god;
};

int main()
{
   int i;
   struct swed d;
   int t, k;
   FILE *f = fopen("f.txt", "wb");
   if (!f) {
       fprintf(stderr, "Failed to open file for writing\n");
       return 1;
   }
   for(i = 0; i < N; ++i) {
      memset(&d, 0, sizeof(d));
      puts("famaly: ");
      scanf("%255c", d.fio);
      puts("pol: ");
      scanf("%c", &d.pl);
      puts("vozrast: ");
      scanf("%d", &d.god);
      fwrite(d, sizeof(d), 1, f);
   }
   fclose(f);
   f = fopen("f.txt", "rb");
   if (!f) {
       fprintf(stderr, "Failed to open file for reading\n");
       return 1;
   }
   t = 0;
   k = 0;
   for(i = 0; i < N; ++i) {
      fread(&d, sizeof(d), 1, f);
      if (d.pl == 'm') {
         printf("%s\n", d.fio);
         t += d.god;
         ++k;
      }
   }
   if (k > 0)
       printf("s=%d\n", t/k);
   fclose(f);
   return 0;
}


Это сообщение отредактировал(а) bsa - 30.5.2011, 11:16
PM   Вверх
Narim
Дата 30.5.2011, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



спасибо!, извините, но у меня не компелирует. указывает ошибку:
Type mismatch in parameter  'ptr' in call to f'

Это сообщение отредактировал(а) Narim - 30.5.2011, 15:21
PM MAIL   Вверх
Dov
Дата 31.5.2011, 02:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

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



Код
#define N 5
struct swed
{
    char    fio[31];
    char    pl;
    int     god;
};

int main()
{
    struct swed    d[N];
    FILE *         f;    
    int            i, t, k;

    if((f = fopen("f.bin", "wb")) != NULL)
    {
        for(i = 0; i < N; i++)
        {
            printf("famaly: ");
            gets(d[i].fio);

            printf("pol   : ");
            d[i].pl = getchar();

            printf("god r.: ");
            scanf("%d", &d[i].god);
            puts("");

            fflush(stdin);
        }
        fwrite(d, sizeof(swed), N, f);
        fclose(f);
    }
    
    if((f = fopen("f.bin", "rb")) != NULL)
    {
        fread(d, sizeof(swed), N, f);

        t = k = 0;
        for(i = 0; i < N; i++)
        {
            if(d[i].pl == 'm')
            {
                printf("%s\t( %d )\n", d[i].fio, 2011 - d[i].god);
                t += 2011 - d[i].god;
                k++;
            }
        }

        if(k > 0)
            printf("\naverage = %g\n", (float)t / k);
        fclose(f);
    }

    return 0;
}



--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
bsa
Дата 31.5.2011, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Narim @ 30.5.2011,  15:06)
спасибо!, извините, но у меня не компелирует. указывает ошибку:
Type mismatch in parameter  'ptr' in call to f'

строка 31 должна выглядеть так:
Код
fwrite(&d, sizeof(d), 1, f);

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

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

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

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

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


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

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


 




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


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

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