Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.83
CoRoBOK
0 / 0 / 0
Регистрация: 14.03.2009
Сообщений: 23
#1

Запись и чтение из файла. Структура. Сортировка - C++

05.04.2009, 14:29. Просмотров 2211. Ответов 16
Метки нет (Все метки)

Здравствуйте. Мне нужно составить программу. Я написал, часть программы, мне нужно производить чтение и запись в файл (в самом файле должно быть несколько примеров, в форме структуры (наименование фирмы, количество продаж, той или иной продукции)) у меня предлагается выбор "1 запись" и "2 чтение из файла" но я не знаю как мне в этот файл заранее внести данные, что бы произвести чтение послудующее, файл создался, но он пустой. Что делать, подскажите?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.04.2009, 14:29     Запись и чтение из файла. Структура. Сортировка
Посмотрите здесь:
Структура. Чтение файла. Функция strcmp C++
Возращение количества байт. Структура и чтение с файла C++
Структура, запись из файла в массив C++
Запись и чтение структуры из файлов, сортировка по полю C++
Функции и файлы. Чтение и запись данных в файл. Структура "Ноутбук" C++
C++ Запись и чтение из файла
Чтение и запись из файла C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
05.04.2009, 14:52     Запись и чтение из файла. Структура. Сортировка #2
Пиши в файл fprintf'ом данные структуры, читай из файла через fgets (может еще понадобится fscanf). Лучше выкладывай код чего и куда нужно записывать/читать, так всем будет понятнее.
CoRoBOK
0 / 0 / 0
Регистрация: 14.03.2009
Сообщений: 23
05.04.2009, 14:59  [ТС]     Запись и чтение из файла. Структура. Сортировка #3
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>
#include <conio.h>
int num_firm, total,i,n;
char ukaz;
main()
{
struct firm
{ char name[100];
  double medic;
  double industry;
  double food;
};
clrscr();
firm st[100];
FILE *data;
data=fopen("data.dat","w");
printf(" Nagmite 1 dlya zapolnenia dannuh \n");
printf(" Nagmite 2 dlya zagryzki dannuh \n");
scanf("%c", ukaz);
if(ukaz=='1')
{
data=fopen("data.dat","w");
    for (i=0;i<3;i++)
{
printf("Vvedite nazvanie firm ");
scanf("%s", & (st[i].name));
printf("Vvedite kol-vo medicinskoi produkcii ");
scanf("%f", &(st[i].medic));
printf("Vvedite kol-vo promushlennoi produkcii ");
scanf("%f", &(st[i].industry));
printf("Vvedite kol-vo pishevoi produkcii ");
scanf("%f", &(st[i].food));
fwrite(&st[i],sizeof(st[i]),1,data);
}
if (ukaz=='2')
{
data=fopen("data.dat","r");
for(i=0;i<3;i++)
{
fread(&st[i],sizeof(firm),1,data);
printf("%s", st[i].name);
printf("%f", st[i].medic);
printf("%f", st[i].industry);
printf("%f", st[i].food);
}
}
}
}
Вот собственно, что я написал. Посмотрите, там чтение не произвести и запись в файл.
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
05.04.2009, 15:33     Запись и чтение из файла. Структура. Сортировка #4
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
53
54
#include <stdio.h>
#include <conio.h>
 
#define MAXLINE 80
struct firm {
    char name[100];
    double medic;
    double industry;
    double food;
} st[100];
 
main()
{
    int num_firm, total, i, n;
    char ukaz, line[MAXLINE];
    FILE *data;
    
    printf(" Nagmite 1 dlya zapolnenia dannuh \n");
    printf(" Nagmite 2 dlya zagryzki dannuh \n");
    scanf("%c", &ukaz);
    
    if(ukaz=='1') {
        data = fopen("data.txt","w");
        for (i=0; i<3; i++) {
            printf("Vvedite nazvanie firm ");
            scanf("%s", st[i].name);
            
            printf("Vvedite kol-vo medicinskoi produkcii ");
            scanf("%lf", &st[i].medic);
            
            printf("Vvedite kol-vo promushlennoi produkcii ");
            scanf("%lf", &st[i].industry);
            
            printf("Vvedite kol-vo pishevoi produkcii ");
            scanf("%lf", &st[i].food);
            
            fprintf(data, "%s %lf %lf %lf\n",
                          st[i].name, st[i].medic, st[i].industry, st[i].food);
            
        }
        fclose(data);
    }
    else if (ukaz=='2') {
        data = fopen("data.txt", "r");
        for(i=0; i<3; i++) {
            fgets(line, MAXLINE, data);
            sscanf(line, "%s %lf %lf %lf", st[i].name, &st[i].medic, &st[i].industry, &st[i].food);
            printf("%s %lf %lf %lf\n", st[i].name, st[i].medic, st[i].industry, st[i].food);
        }
        fclose(data);
    }
    getch();
    return 0;
}
CoRoBOK
0 / 0 / 0
Регистрация: 14.03.2009
Сообщений: 23
05.04.2009, 17:09  [ТС]     Запись и чтение из файла. Структура. Сортировка #5
После ввода названия фирмы появляется ошибка...

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
#include <stdio.h>
#include <string.h>
#include <conio.h>
int num_firm, total,i,n;
char ukaz;
main()
{
struct firm
{ char name[100];
  double medic;
  double industry;
  double food;
};
clrscr();
firm st[100];
FILE *data;
data=fopen("data.dat","w");
printf(" Nagmite 1 dlya zapolnenia dannuh \n");
printf(" Nagmite 2 dlya zagryzki dannuh \n");
scanf("%c",&ukaz);
if(ukaz=='1')
{
data=fopen("data.txt","w");
    for (i=0;i<3;i++)
{
printf("Vvedite nazvanie firm ");
scanf("%s", & (st[i].name));
printf("Vvedite kol-vo medicinskoi produkcii ");
scanf("%f", &(st[i].medic));
printf("Vvedite kol-vo promushlennoi produkcii ");
scanf("%f", &(st[i].industry));
printf("Vvedite kol-vo pishevoi produkcii ");
scanf("%f", &(st[i].food));
fprintf(data, "%s %lf %lf %lf\n", st[i].name, st[i].medic, st[i].industry, st[i].food);
}
fclose(data);
if (ukaz=='2')
{
data=fopen("data.txt","r");
for(i=0;i<3;i++)
{
fread(&st[i],sizeof(firm),1,data);
printf("%s", st[i].name);
printf("%f", st[i].medic);
printf("%f", st[i].industry);
printf("%f", st[i].food);
}
fclose(data);
}
}
}
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
05.04.2009, 17:31     Запись и чтение из файла. Структура. Сортировка #6
Скомпилированный экзешник с моего кода, абсолютно рабочий вариант.
Вложения
Тип файла: rar bd.rar (6.1 Кб, 38 просмотров)
CoRoBOK
0 / 0 / 0
Регистрация: 14.03.2009
Сообщений: 23
05.04.2009, 19:06  [ТС]     Запись и чтение из файла. Структура. Сортировка #7
Да работает, но то если я пытаюсь запустить с вашим кодом, то не работает, ошибку выдает, напишите еще раз с тем, где потом в bd.exe компилируете, потому что в том что-то не так

Добавлено через 37 минут 46 секунд
Ой, разобрался) Ошибка в спецификаторе формата была) Теперь нужно научиться сортировку этих данных делать *scratch*

Добавлено через 20 минут 1 секунду
Почему-то нельзя произвести чтение из файла:

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
#include <stdio.h>
#include <string.h>
#include <conio.h>
int num_firm, total,i,n;
char ukaz;
main()
{
struct firm
{ char name[100];
  int medic;
  int industry;
  int food;
};
clrscr();
firm st[100];
FILE *data;
data=fopen("data.txt","w");
printf(" Nagmite 1 dlya zapolnenia dannuh \n");
printf(" Nagmite 2 dlya zagryzki dannuh \n");
scanf("%c",&ukaz);
if(ukaz=='1')
{
data=fopen("data.txt","w");
    for (i=0;i<3;i++)
{
printf("Vvedite nazvanie firm ");
scanf("%s", &(st[i].name));
printf("Vvedite kol-vo medicinskoi produkcii ");
scanf("%i", &(st[i].medic));
printf("Vvedite kol-vo promushlennoi produkcii ");
scanf("%i", &(st[i].industry));
printf("Vvedite kol-vo pishevoi produkcii ");
scanf("%i", &(st[i].food));
fprintf(data, "%s %i %i %i\n", st[i].name, st[i].medic, st[i].industry, st[i].food);
}
fclose(data);
if (ukaz=='2')
{
data=fopen("data.txt","r");
for(i=0;i<3;i++)
{
fread(&st[i],sizeof(firm),1,data);
printf("%s", st[i].name);
printf("%i", st[i].medic);
printf("%i", st[i].industry);
printf("%i", st[i].food);
}
fclose(data);
}
}
}
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
06.04.2009, 12:08     Запись и чтение из файла. Структура. Сортировка #8
Цитата Сообщение от CoRoBOK Посмотреть сообщение
Почему-то нельзя произвести чтение из файла:
Читаешь неправильно. fread хорошо подходит для чтения каких-нибудь числовых массивов, но не данных структуры. Проще юзать fgets.
accept
4820 / 3240 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
07.04.2009, 03:15     Запись и чтение из файла. Структура. Сортировка #9
Код
char ukaz;
    ...
    scanf("%c", ukaz);
в функцию передаются два адреса, адрес строки "%c" и адрес переменной, она попробует прочитать адрес из ukaz и по нему сохранить символ, поэтому надо адрес самой ukaz передать

Добавлено через 1 минуту 34 секунды
не надо два раза файл открывать

Добавлено через 4 минуты 3 секунды
Код
    scanf("%s", & (st[i].name));
Код
    scanf("%s", st[i].name);
Код
    scanf("%i", &(st[i].medic));
Код
    scanf("%i", &st[i].medic);
CoRoBOK
0 / 0 / 0
Регистрация: 14.03.2009
Сообщений: 23
07.04.2009, 19:58  [ТС]     Запись и чтение из файла. Структура. Сортировка #10
Спасибо, попробую, это курсовая у нас. Мне еще препод подсказал, кое-что подправить, сегодня попробую, эти методы тоже. Нужно теперь сортировку делать в алфавитном порядке и сортировку по количеству общей продукции %_%

Добавлено через 2 часа 54 минуты 12 секунд
Что-то не могу сортировку сделать faq прочитал, толком не понял. Нужно упорядочить в алфавитом порядке фирмы

Код
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
struct firm {
    char name[100];
    int medic;
    int industry;
    int food;
    int inform;
    int chemic;
} st[100];

main()
{
    int num_firm, total, i, n;
    char ukaz, *f;
    FILE *data;
    clrscr();
    printf(" Nagmite 1 dlya zapolnenia dannuh -  \n");
    printf(" Nagmite 2 dlya chtenia dannuh - \n");
    printf(" Nagmite 3 dlya sortirovki firm v alfavintom poryadke - \n");
    scanf("%c", &ukaz);
	if(ukaz=='1') {
	data = fopen("data.txt","a");
	for (i=0; i<6; i++) {
	    printf("Vvedite nazvanie firm ");
	    scanf("%s", st[i].name);
	    printf("Vvedite kol-vo medicinskoi produkcii - ");
	    scanf("%i", &st[i].medic);
	    printf("Vvedite kol-vo promushlennoi produkcii - ");
	    scanf("%i", &st[i].industry);
	    printf("Vvedite kol-vo pishevoi produkcii - ");
	    scanf("%i", &st[i].food);
	    printf("Vvedite kol-vo pishevoi produkcii - ");
	    scanf("%i", &st[i].inform);
	    printf("Vvedite kol-vo pishevoi produkcii - ");
	    scanf("%i", &st[i].chemic);
	    fprintf(data, "%s %i %i %i\n", st[i].name, st[i].medic, st[i].industry, st[i].food, st[i].inform, st[i].chemic);
	}
	fclose(data);
    }
    if (ukaz=='2')
     {
	data = fopen("data.txt", "r");
	for(i=0; i<6; i++) {
	    fscanf(data, "%s %i %i %i", &st[i].name, &st[i].medic, &st[i].industry, &st[i].food, &st[i].inform, st[i].chemic);
	    printf("%s %i %i %i\n", st[i].name, st[i].medic, st[i].industry, st[i].food, st[i].inform, st[i].chemic);
	}
	fclose(data);
    }
    if (ukaz=='3')
      {
      for (i=0; i<6;i++)
      {
       for (int j=1; j<6;j++)
	 if(st[i].name < st[j].name)
	 printf("%s", st[i].name);
	 }
       }
    getch();
    return 0;
}
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
07.04.2009, 21:50     Запись и чтение из файла. Структура. Сортировка #11
Код
if(st[i].name < st[j].name)
   printf("%s", st[i].name);
Сравнение строк делается так:
Код
if(strcmp(st[i].name, st[j].name) < 0)
Меньше нуля, если st[i].name лексикографически меньше, чем st[j].name.
CoRoBOK
0 / 0 / 0
Регистрация: 14.03.2009
Сообщений: 23
08.04.2009, 18:12  [ТС]     Запись и чтение из файла. Структура. Сортировка #12
ну что им не нравиться?
Код
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
struct firm {
    char name[100];
    int medic;
    int industry;
    int food;
    int inform;
    int chemic;
} st[100];

main()
{
    int num_firm, total, i, n;
    char ukaz, *f;
    FILE *data;
    clrscr();
    printf(" Nagmite 1 dlya zapolnenia dannuh -  \n");
    printf(" Nagmite 2 dlya chtenia dannuh - \n");
    printf(" Nagmite 3 dlya sortirovki firm v alfavintom poryadke - \n");
    scanf("%c", &ukaz);
	if(ukaz=='1') {
	data = fopen("data.txt","a");
	for (i=0; i<6; i++) {
	    printf("Vvedite nazvanie firm ");
	    scanf("%s", st[i].name);
	    printf("Vvedite kol-vo medicinskoi produkcii - ");
	    scanf("%i", &st[i].medic);
	    printf("Vvedite kol-vo promushlennoi produkcii - ");
	    scanf("%i", &st[i].industry);
	    printf("Vvedite kol-vo pishevoi produkcii - ");
	    scanf("%i", &st[i].food);
	    printf("Vvedite kol-vo pishevoi produkcii - ");
	    scanf("%i", &st[i].inform);
	    printf("Vvedite kol-vo pishevoi produkcii - ");
	    scanf("%i", &st[i].chemic);
	    fprintf(data, "%s %i %i %i\n", st[i].name, st[i].medic, st[i].industry, st[i].food, st[i].inform, st[i].chemic);
	}
	fclose(data);
    }
    if (ukaz=='2')
     {
	data = fopen("data.txt", "r");
	for(i=0; i<6; i++) {
	    fscanf(data, "%s %i %i %i", &st[i].name, &st[i].medic, &st[i].industry, &st[i].food, &st[i].inform, st[i].chemic);
	    printf("%s %i %i %i\n", st[i].name, st[i].medic, st[i].industry, st[i].food, st[i].inform, st[i].chemic);
	}
	fclose(data);
    }
   [B] if (ukaz=='3')
    {
    f=st[0].name;
    for(int j=6;j>0; j--)
    for(i=1;i<6; i++)
	if(strcmp(st[i].name, st[j].name) <0) f=st[i].name;
	printf("%s",f);[/B]
    }
    getch();
    return 0;
}
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
08.04.2009, 21:10     Запись и чтение из файла. Структура. Сортировка #13
Для начала наверно нужно чем-то заполнить массив структур, а то у тебя при нажатии '3' получается, что он еще пуст.
Сама сортировка:
C
1
2
3
4
5
6
7
8
struct firm tmp;
for(int j = 0; j < 6; j++)
   for(i = 0; i < 6; i++)
      if(strcmp(st[i].name, st[j].name) > 0) {
         tmp = st[i];
         st[i] = st[j];
         st[j] = tmp;
      }
Тогда фирмы в st будут упорядочены по алфавиту.
CoRoBOK
0 / 0 / 0
Регистрация: 14.03.2009
Сообщений: 23
08.04.2009, 22:07  [ТС]     Запись и чтение из файла. Структура. Сортировка #14
Сделал, как вы прделагаете, но не вышло почему то( Разве он не должен брать те данные что я вбивал раньше и их сортировать?

вот так выглядит та часть, где сортировка:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
if (ukaz=='4')
{
struct firm tmp;
for(int j = 0; j < 6; j++)
   for(i = 0; i < 6; i++)
      if(strcmp(st[i].name, st[j].name) > 0) {
         tmp = st[i];
         st[i] = st[j];
         st[j] = tmp;
      }
}
getch();
return 0;
}
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
08.04.2009, 22:41     Запись и чтение из файла. Структура. Сортировка #15
Цитата Сообщение от CoRoBOK Посмотреть сообщение
Сделал, как вы прделагаете, но не вышло почему то( Разве он не должен брать те данные что я вбивал раньше и их сортировать?
Прога делает ровно то, что ты ей задал. Перед тем, как сортировать, нужно либо читать данные из файла, либо опять заполнять массив вручную.
Вообще, лучше разделить код на несколько функций, например: ввод данных, запись в файл, чтение из файла и сортировка, иначе у тебя в main будет нагромождение кода, в котором трудно разобраться. Да и пользоваться функциями удобнее.
CoRoBOK
0 / 0 / 0
Регистрация: 14.03.2009
Сообщений: 23
09.04.2009, 20:35  [ТС]     Запись и чтение из файла. Структура. Сортировка #16
Спасибо конечно, что помогаете) Но не могли бы мне в коде исправить часть где сортировка, третий день бьюсь, и все бестолку(

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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
struct firm
{
    char name[100];
    int medic;
    int industry;
    int food;
    int inform;
    int chemic;
} st[100];
 
main()
{
    int total, i, n,fl,l;
    char ukaz, *f, q;
    FILE *data;
    clrscr();
    printf(" Nagmite 1 dlya novogo zapolneniya dannuh -  \n");
    printf(" Nagmite 2 dlya dobavleniya dannuh - \n");
    printf(" Nagmite 3 dlya chteniya dannuh - \n");
    printf(" Nagmite 4 dlya sortirovki firm v alfavintom poryadke - \n");
    scanf("%c", &ukaz);
    if(ukaz=='1') {
    data = fopen("data.txt","w");
    for (i=0; i<6; i++) {
        printf("Vvedite nazvanie firm - ");
        scanf("%s", st[i].name);
        printf("Vvedite kol-vo medicinskoi produkcii - ");
        scanf("%i", &st[i].medic);
        printf("Vvedite kol-vo promushlennoi produkcii - ");
        scanf("%i", &st[i].industry);
        printf("Vvedite kol-vo pishevoi produkcii - ");
        scanf("%i", &st[i].food);
        printf("Vvedite kol-vo informacionnoi produkcii - ");
        scanf("%i", &st[i].inform);
        printf("Vvedite kol-vo himicheskoi produkcii - ");
        scanf("%i", &st[i].chemic);
        fprintf(data, "%s %i %i %i\n", st[i].name, st[i].medic, st[i].industry, st[i].food, st[i].inform, st[i].chemic);
    }
    fclose(data);
    }
    if(ukaz=='2')
     {
     data = fopen("data.txt","a");
    for (;;)
     { printf("\ Povtorit'?(Y||N)");
      printf("\n");
       if((q=getch())=='N'||q=='n') break;
        else
        printf("Vvedite nazvanie firm - ");
        scanf("%s", st[i].name);
        printf("Vvedite kol-vo medicinskoi produkcii - ");
        scanf("%i", &st[i].medic);
        printf("Vvedite kol-vo promushlennoi produkcii - ");
        scanf("%i", &st[i].industry);
        printf("Vvedite kol-vo pishevoi produkcii - ");
        scanf("%i", &st[i].food);
        printf("Vvedite kol-vo informacionnoi produkcii - ");
        scanf("%i", &st[i].inform);
        printf("Vvedite kol-vo himicheskoi produkcii - ");
        scanf("%i", &st[i].chemic);
        fprintf(data, "%s %i %i %i\n", st[i].name, st[i].medic, st[i].industry, st[i].food, st[i].inform, st[i].chemic);
    }
    fclose(data);
    }
    if (ukaz=='3')
     {
    data = fopen("data.txt", "r");
    for(i=0; i<6; i++) {
        fscanf(data, "%s %i %i %i", &st[i].name, &st[i].medic, &st[i].industry, &st[i].food, &st[i].inform, st[i].chemic);
        printf("%s %i %i %i\n", st[i].name, st[i].medic, st[i].industry, st[i].food, st[i].inform, st[i].chemic);
    }
    fclose(data);
    }
    if (ukaz=='4')
    {
    firm t;
    l=n-1;
  do
  {
  fl=0;
fscanf(data, "%s %i %i %i", &st[i].name, &st[i].medic, &st[i].industry, &st[i].food, &st[i].inform, st[i].chemic);
    for(i=0;i<l;i++)
    {
    if(strcmp(st[i].name,st[i+1].name)>0)
    {
    t=st[i];
    st[i]=st[i+1];
    st[i+1]=t;
    fl=1;
    }
    fprintf(data, "%s %i %i %i\n", st[i].name, st[i].medic, st[i].industry, st[i].food, st[i].inform, st[i].chemic);
    }
l--;
}
 
while(fl==1);
    printf("%s %i %i %i\n", st[i].name, st[i].medic, st[i].industry, st[i].food, st[i].inform, st[i].chemic);
    }
    getch();
    return 0;
}
Добавлено через 1 минуту 38 секунд
Нули какие то выводит и все
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.04.2009, 03:54     Запись и чтение из файла. Структура. Сортировка
Еще ссылки по теме:
C++ Запись и чтение с файла
C++ Запись и чтение из файла
Запись и чтение с файла C++
Чтение и запись файла C++
Запись и чтение из файла C++

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

Или воспользуйтесь поиском по форуму:
accept
4820 / 3240 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
10.04.2009, 03:54     Запись и чтение из файла. Структура. Сортировка #17
нужно два цикла, этот пример сортирует структуры по числовому полю

C
1
2
3
4
typedef struct {
    char *name;
    int mark;
} Product;
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/* bubble_struct:  сортировка пузырьковым методом;
                   частный случай */
Product *bubble_struct(Product *a, int m, int n)
{
    char is = 1;
    int i;
    Product c;
    
    while (is) {
        is = 0;
        for (i = m+1; i <= n; i++)
            if (a[i].mark < a[i-1].mark) {
                c = a[i];
                a[i] = a[i-1];
                a[i-1] = c;
                is = 1;
            }
    }
    return a;
}
Yandex
Объявления
10.04.2009, 03:54     Запись и чтение из файла. Структура. Сортировка
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru