Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/18: Рейтинг темы: голосов - 18, средняя оценка - 4.50
 Аватар для Sirenka
0 / 0 / 0
Регистрация: 14.01.2013
Сообщений: 6

Сформировать типизированный файл

19.01.2013, 17:55. Показов 3597. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сформировать типизированный файл, в котором хранится информация о сотрудниках подразделения: ФИО, место рождения, год рождения. На его основе сформировать файл сотрудников, родившихся в данном городе и распечатать его.


С использованием структур и без использования потоков.

Помогитеееее...

Вот примерное начало...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#define n 5
int main ()
FILE *fi;
if ((fi=fopen("d:\\c\\file.txt", "a+"))==0) {
cout (("Error"; return 1; }
const int d1=100;
char s [d1];
struct {
char fio [20];
char mr [20];
int gr; }
m[n];
for(i=0; i<n; i++)
 Комментарий модератора 
Правила форума п. 5.5: Запрещено размещать тему в нескольких разделах одновременно (кросспостинг), а также дублировать тему в одном разделе.


Добавлено через 21 минуту
Ребят, помогите!

Добавлено через 33 минуты
HELp!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.01.2013, 17:55
Ответы с готовыми решениями:

как в с++ создается типизированный файл? и как вообще понять типизированный?
вопрос в теме

не типизированный файл
Дан текстовый файл f. Переписать в файл g все компоненты файла f с заменой в них символа 0 на 1 и наоборот. также решить в терминах...

Типизированный файл
С чего начать и что почитать?

15
Twilight Parasite
 Аватар для Invader_Zim
154 / 150 / 7
Регистрация: 21.07.2011
Сообщений: 908
19.01.2013, 18:09
Use XML
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
19.01.2013, 18:16
да какое ХМЛ?? Человек не способен Hello World написать, если посмотришь на его код! Без обид, но советовать ХМЛ - не к месту.
0
 Аватар для Sirenka
0 / 0 / 0
Регистрация: 14.01.2013
Сообщений: 6
19.01.2013, 18:19  [ТС]
Эм, мне нужно только её немного доработать, да может кое-что не соображаю, форум насколько я знаю, называется : "Для начинающих".
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
19.01.2013, 18:29
Цитата Сообщение от Sirenka Посмотреть сообщение
Эм, мне нужно только её немного доработать, да может кое-что не соображаю, форум насколько я знаю, называется : "Для начинающих".
Если писал не сам - пиши с нуля и разбирайся сам. Судя по программе ты даже Hello world не способен написать. Изучать Си также не начинал. Что даст тебе готовая программа??? Мир потеряет ещё одного потенциального программиста, потому что один нерадивый ученик решил скатать работу, не вникая.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <stdio.h>
#define n 5
#define d1 100
struct record{
  char fio [20];
  char mr [20];
  int gr; 
}m[n];
int main (){
  FILE *fo;
  char s[d1];
  int i;
  if (!(fo=fopen("d:\\file.dat", "wb"))){
     printf ("Error!");
     return 1;
  }
  
  printf("input 5 records:\n");
  for (i=0; i<5; i++){
      fflush(stdin); puts("Input name:");       gets(m[i].fio);
      fflush(stdin); puts("Input mr:");         gets(m[i].mr);
      puts("Input gr(number):"); scanf("%d", &(m[i].gr));
  }
  fwrite (m,  sizeof(struct record) , n,  fo);
  fclose(fo);
  return 0;
}
1
 Аватар для Sirenka
0 / 0 / 0
Регистрация: 14.01.2013
Сообщений: 6
19.01.2013, 18:37  [ТС]
Уже писалА, но оказалось не правильно.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>        //подключение библиотек
struct price
{
    char name[50];
    int year;
    char place[30];
    struct price * pc;
};
void main()
{
    int n;
    struct price *rex;
    struct price *beg = NULL;
    struct price *end = NULL;
        printf("Vvedite znacheniya:\n");
        do
        {
            rex = (struct price *) malloc(sizeof(price));
            printf("Name: ");
            scanf("%s",&rex->name);
            printf("Mesto rojdeniya: ");
            scanf("%s",&rex->place);
            printf("Year: ");
            scanf("%d",&rex->year);
            if(rex->year == 0)
            {
                free(rex);
                break;
            }
            if(beg == NULL && end == NULL)      // список пуст
                beg = rex;
            else
                end->pc = rex;
            end = rex;
            end->pc = NULL;
        }
        while(1);                                                  // конец ввода
    rex = beg;
    FILE* fp1 = fopen("list.txt","w");
    while(rex != NULL)
    {
        printf("Name: %s, Mesto: %s, Year: %d\n",rex->name, rex->place, rex->year);
    fprintf(fp1,"Name: %s ; Mesto: %s ; Years: %d\n",rex->name, rex->place, rex->year);
        rex = rex->pc;
    }
    fclose(fp1);
    printf("Saved to file 'list.txt'");
getch();
}
Поэтому началА писать по-другому...

Добавлено через 4 минуты
Спасибо... у меня вопросик, почему режим открытия wb? Преподаватель советовала a+....
0
Twilight Parasite
 Аватар для Invader_Zim
154 / 150 / 7
Регистрация: 21.07.2011
Сообщений: 908
19.01.2013, 18:45
Пишеш в байтовом виде.A+ это когда ты дописываеш в конец.

Не по теме:

По всем вопросам-в скайп

1
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
19.01.2013, 18:45
a+ дозаписывает в уже существующий файл, в принципе его можно использовать вместо w
Но так как в задании ты требуешь создать бинарный файл, то приходится открывать файл как "a+b" либо как "w+b"
0
 Аватар для Sirenka
0 / 0 / 0
Регистрация: 14.01.2013
Сообщений: 6
19.01.2013, 18:51  [ТС]
Спасибо.
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
19.01.2013, 19:01
Ах да, и тут есть ещё один момент. Меня смутил заголовок "типизированные файлы" и я стал приводить пример, как записывать в БИНАРНЫЙ файл.
Типизированных же файлов в Си нет! Если не ошибаюсь, это кажется термин из Паскаля. Так что задание неверное.
0
 Аватар для Sirenka
0 / 0 / 0
Регистрация: 14.01.2013
Сообщений: 6
19.01.2013, 19:09  [ТС]
Всё может быть, но задание было такое...Именно типизированный файл...

А программа с использованием потоков?

Добавлено через 6 минут
И почему-то, настаивает делать через процедуры выводы/ввода: fprintf, fscanf
0
_
317 / 151 / 27
Регистрация: 08.10.2011
Сообщений: 432
19.01.2013, 19:30
Э-хэ-хэ, выложили 2 варианта кода, кардинально отличающихся друг от друга. Это намекает кое на что.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <stdio.h>
#include <string.h>
 
#define MAX_N 5
 
int main ()
{
    FILE *fi = fopen("d:\\c\\file.txt", "a+" );
 
    if ( fi == 0 ) { puts( "Error" ); return 1; }
 
    struct
    {
        char fio [20];
        char mr [20];
        int gr;
    } m[ MAX_N ], t;
    int n = 0;
    char place[ 20 ];
 
// читаем данные из stdin
    puts( "Enter employees data" );
    while ( !feof( stdin ) && n < MAX_N )
    {
        scanf( "%s %s %d", m[ n ].fio, m[ n ].mr, &( m[ n ].gr ) );
        ++n;
    }
// записываем их в file.txt
    for ( int i = 0; i < n; ++i )
        fprintf( fi, "%s %s %d ", m[ i ].fio, m[ i ].mr, m[ i ].gr );
 
    FILE *fi2 = fopen( "d:\\c\\file2.txt", "w" );
 
    if ( fi2 == 0 ) { puts( "Another Error" ); return 1; }
 
// просим ввести место
    printf( "enter mr: " ); scanf( "%s", place );
 
// честно вычитываем данные из только что созданного файла и если они удовлетворяют условию, то записываем их в файл file2.txt
    fseek( fi, 0, SEEK_SET );
    for ( int i = 0; i < n; ++i )
    {
        fscanf( fi, "%s %s %d", t.fio, t.mr, &( t.gr ) );
        if ( strcmp( place, t.mr ) == 0 )
            fprintf( fi2, "%s %s %d\n", t.fio, t.mr, t.gr );
    }
 
    return 0;
}
Не знаю как тут с типизированностью, но если препод просит через fprintf, и fscanf, то должно быть правильно.

Да, и не забывайте перед очередным запуском программы удалять файл file.txt.
2
 Аватар для Sirenka
0 / 0 / 0
Регистрация: 14.01.2013
Сообщений: 6
19.01.2013, 19:41  [ТС]
Спасибо
0
Twilight Parasite
 Аватар для Invader_Zim
154 / 150 / 7
Регистрация: 21.07.2011
Сообщений: 908
19.01.2013, 19:44
чтобы не удалять файл каждый раз, используй ключ w.
1
_
317 / 151 / 27
Регистрация: 08.10.2011
Сообщений: 432
19.01.2013, 19:47
Цитата Сообщение от Invader_Zim Посмотреть сообщение
чтобы не удалять файл каждый раз, используй ключ w.
неа, потом файл еще и для чтения используется. так что тут только a+. А '+' потому, что в режиме а не работает fseek
0
Twilight Parasite
 Аватар для Invader_Zim
154 / 150 / 7
Регистрация: 21.07.2011
Сообщений: 908
19.01.2013, 19:49
В код не сильно вникаю.
Но если надо гупнуть файл, то в конце std::remove(filename)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.01.2013, 19:49
Помогаю со студенческими работами здесь

Сформировать типизированный файл
Сформировать типизированный файл целых чисел, вводимых с клавиатуры. Признаком конца ввода является 0. Найти сумму чисел из файла и...

Сформировать типизированный файл действительных чисел
Сформировать типизированный файл действительных чисел. На последнее месть поставить минимальное значение среди значений, содержащихся в...

Сформировать типизированный файл, содержащий сведения о марках автомобилей
Сформировать типизированный файл, содержащий сведения о марках автомобилей с указанием их максимальной скорости, количестве пассажиров,...

Сформировать типизированный файл и выбрать из него элементы по заданному критерию
Заданные поля записи, определить их типы данных, написать программу для ввода произвольного количества записей, записать их в...

Сформировать типизированный файл по формуле, найти произведение чисел, кратных 2 и 10
Помогите решить задачу, пожалуйста. Типизированные файлы. А) Формировать М1(из 10 компонент) первая половина по формуле 3i, вторая по...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru