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

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

Войти
Регистрация
Восстановить пароль
 
Ириска5
0 / 0 / 0
Регистрация: 08.05.2011
Сообщений: 40
#1

Удалить из массива все элементы,в записи которых все цифры различны. - C++

02.10.2011, 07:23. Просмотров 765. Ответов 3
Метки нет (Все метки)

Ребят,помогите задачу решить:
в файле input.txt содержаться сведения о группе студентов в формате:
номер группы;
запись о каждом студенте группы содер сведения: фамилия, имя, отчество,год рожден, оценки по пяти предметам.
переписать данные в файл output.txt отсортировав их в алфавитном порядке по фамилии, имени, отчеству методом вставки

вот моя программа но я не знаю как применить мою сортитовку к файлу:

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
#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
using namespace std;
 
ifstream in("input.txt");
ofstream out("output.txt");
 
 struct array
{
    string name, surname, secondname;
    int num[5],year;
    string key;
    void print();
};
 
void array::print()
{
    out << setw(12) << left << surname  << setw(10) << name <<setw(15) << secondname;
    out << setw(5) << year;
    for (int i = 0; i  < 5; i++)
        out << setw(3) << num[i];
    out << setw(5) << key << endl;
}
 
void sort(array *a, int n)
{
    array temp;
    int i, j;
    for (i = 2; i <= n; i++)
    {
        j = i;
        while (a[j].key<a[j - 1].key)
        {
            temp = a[j];
            a[j] = a[j-1];
            a[j - 1] = temp;
            j--;
        }
    }
}
 
int main()
{
    int n=0;
    array stud[20];
    if(!in) cout << "eror";
    else
    {
     
      while(in.peek()!=EOF)
      {
        
        in>>stud[n].surname;
        in>>stud[n].name;
        in>>stud[n].secondname;
        in>>stud[n].year;
        for (int i=1; i<=5; i++) 
        {
            in>>stud[n].num[i];
        }
        n++;
      }
    sort(stud,n);
    for (int i=0; i<n; i++)
        stud[i].print();
}
in.close();
out.close();
system("pause");
return 0;
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.10.2011, 07:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Удалить из массива все элементы,в записи которых все цифры различны. (C++):

Удалить из массива все элементы,в записи которых все цифры различны. - C++
дана последовательность целых чисел. Удалить из массива все элементы,в записи которых все цифры различны. при решении задачи нужно...

Удалить из целочисленного одномерного массива все элементы, в записи которых все цифры различны - C++
Удалить из целочисленного одномерного массива все элементы, в записи которых все цифры различны. Можете подсказать хотя бы алгоритм, ...

Удалить из массива элементы, в записи которых все цифры различны - C++
Удалить из массива элементы, в записи которых все цифры различны. (Желательно использовать вектора)

Удалить из массива все числа, у которых все цифры, встречающиеся в их записи, одинаковы - C++
Дан массив целых положительных чисел a1, a2, …аN. Удалить из него все числа, у которых все цифры, встречающиеся в их записи, одинаковы. ...

Удалить из массива все элементы, в записи которых есть заданная цифра - C++
дан одномерный массив целых чисел заполненный случайным образом числами из промежутка удалить из него все элементы в записи которых есть...

Найти все четырехзначные числа, у которых все цифры различны - C++
Найти все четырехзначные числа, у которых все цифры различны.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
robert19
25 / 25 / 3
Регистрация: 26.03.2010
Сообщений: 305
02.10.2011, 10:35 #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
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
#include <iostream>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
using namespace std;
 
struct Student  {
    char name[55];
    char group[55];
    float ses[5];
    float rat;
};
 
Student mas[2],x;
void stud();
void sort();
void rait();
void rait_2();
int read_file();
int prin_file();
 
void stud() {
    for(int i=0;i<2;i++)    {
        printf("                               Student %i",i+1," .");
        printf("\n SeName:  ");
        scanf("%s ",mas[i].name);
        printf(" Group:  ");
        scanf("%s",mas[i].group);
        printf("\n Ratting:\n");
        for(int j=0;j<5;j++)    {
            printf("%i.  ",j+1," ");
            scanf("%f",&mas[i].ses[j]);
        }
    }
}
 
void sort() {
    printf("                                Spisok.");
    for(int i=0;i<2;i++)    {
        for(int j=i;j<2;j++)    {
            if((mas[i].rat)>(mas[j].rat))   {
                x=mas[i];
                mas[i]=mas[j];
                mas[j]=x;
            }
        }
            printf("\n%i ",i+1);
            printf("SeName: %s\n",mas[i].name);
            printf("Group: %s\n",mas[i].group);
            rait_2();
            printf("S.bal: %.1f\n",mas[i].rat);
            /*for (int j=0; j<5; j++){
                printf("%.0f\n",mas[i].ses[j]);
            }*/
    }
    
}
void rait_2()   {
    int r;
    float s,m;
        for(int i=0;i<2;i++)    {
        m=0;s=0;
        for(int j=0;j<5;j++)    {
            s=s+mas[i].ses[j];
        }
        m=s/5; mas[i].rat=m;
    }
}
 
void rait() {
    int r;
    float s,m;
    printf("                                Session.\n");
    for(int i=0;i<2;i++)    {
        m=0;s=0;
        for(int j=0;j<5;j++)    {
            s=s+mas[i].ses[j];
        }
        m=s/5;
        if(m>4.0)   {
            r=+1;
            printf("\n Srednyi ball bol'she '4' y:  %s",mas[i].name);
            printf("\n");
        }
 
    }
    if(r==0)
        printf("\n\n Net studentov, nabravshih srednyi ball bol'she '4'.");
}
 
int read_file() {
    char fn[20];
    FILE* f;
    printf("\nEnter File name: ");
    scanf("\n%[^\n]",fn);
    f=fopen (fn,"r");
    if (!f) {
        printf("\nWarning: no such file. Using stdin.\n");
        f=stdin;
 
    }
    for (int i=0; i<2; i++) {
        fscanf(f,"%[^\t]\t%[^\t]\t %f %f %f %f %f\n", mas[i].name, mas[i].group,(&mas[i].ses[0]),(&mas[i].ses[1]),(&mas[i].ses[2]),(&mas[i].ses[3]),(&mas[i].ses[4]));
    }
    fclose(f);
    return 0;
}
 
int prin_file() {
    char fn[20];
    FILE* f;
    printf("\nEnter File name: ");
    scanf("\n%[^\n]",fn);
    f=fopen (fn,"w");
    if (!f) {
        printf("\nWarning: no such file. Using stdin.\n");
        f=stdin;
    }
    for (int i=0; i<2; i++) {
        fprintf(f,"\nSeName: %s\nGroup: %s\nS.bal: %.1f\nSsesion: \n%.0f\n%.0f\n%.0f\n%.0f\n%.0f",mas[i].name,mas[i].group,mas[i].rat,mas[i].ses[0],mas[i].ses[1],mas[i].ses[2],mas[i].ses[3],mas[i].ses[4]);
    }
 
    return 0;
}
 
int main()  {
    int result=0,result2=0,br=0;
 
    for(;result!=1;)    {
        int answer, n;
        printf("\n Stud. - Enter 1\n Info. - Enter 2\n Sess. - Enter 3\n File - Enter 4\n Exit. - Enter 0\n\n You answer: ");
        scanf("%i",&answer);
        switch(answer)  {
        case 1:{
            while ((result2!=1)&&!(br)) {
                printf("\n   Read:\n   File. - Enter 1\n   Cons. - Enter 2\n   Exit. - Enter 0\n\n You answer: ");
                scanf("%i",&n);
                switch(n){
                    case 1:{read_file();result2=0;break;}
                    case 2:{stud();result2=0;break;}
                    case 0:{br=1;break;}
                }
            }
            if (br) continue;
        case 2:{sort();result=0;break;}
        case 3:{rait();result=0;break;}
        case 4:{prin_file();result=0;break;}
        default:{exit(0);}
               }
        }
    }
}
Ириска5
0 / 0 / 0
Регистрация: 08.05.2011
Сообщений: 40
10.10.2011, 23:31  [ТС] #3
robert19, спасибо но мне кажется вы решили ее слишком сложно
robert19
25 / 25 / 3
Регистрация: 26.03.2010
Сообщений: 305
11.10.2011, 20:28 #4
Ириска5, Возможно, за то сам))) немножко подредактируйте...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.10.2011, 20:28
Привет! Вот еще темы с ответами:

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

Найти все четырехзначные числа, у которых все цифры различны - C++
4)Найти все четырехзначные числа, у которых все цифры различны.

Удалить из массива, в котором все элементы различны, максимальный и минимальный элементы - C++
Удалить из массива, в котором все элементы различны: а) максимальный элемент б) минимальный элемент Добавлено через 4 минуты ...

Подсчет натуральных чисел, в которых все три цифры различны - C++
Подсчитать количество натуральных чисел 102\leq n\leq 987 , в которых все три цифры различны. Как можно это сделать. Попроще, если можно,...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
11.10.2011, 20:28
Ответ Создать тему
Опции темы

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