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

Удалить повторные записи из массива - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Среди элементов массива найти максимальный элемент и его номер http://www.cyberforum.ru/cpp-beginners/thread1173860.html
Координаты n векторов заданные матрицей А(n,m) (m<=5, n<=6). Посчитать длину этих векторов, распечатать и нанести их значения. Среди элементов массива найти максимальный элемент и его номер.
C++ С чего начать изучение программирования на c++? Может ли кто ни буть помочь научиться програмировать? сам не могу справиться,не знаю за что браться.Извините если не по теме. http://www.cyberforum.ru/cpp-beginners/thread1173846.html
Создание программы для работы с текстовыми файлами C++
Здравствуйте, я естественно новичок в C++, стал изучать этот язык для того, чтобы создать программу, которую хочу использовать в работе. Для этого скачал visual studio 2008, более поздние версии не подходят для моего ПК)). Изучаю программирование по учебникам Стауструпа, больших продвижений за собой не замечаю. Подскажите, если не весь код написания программы, но хотя бы в каком направлении...
C++ Организация класса (lib.so + header.h)
Есть 3 файла: main.cpp header.h lib.so Задача сделать стек используя контейнер\класс. Я остановился на class. Мое видиние решения(Осторожно, ошибки!!!):
C++ Cоставить блок-схему по программе http://www.cyberforum.ru/cpp-beginners/thread1173831.html
#include <string.h> #include <dos.h> #include <iostream.h> #include <iomanip.h> #include <vcl.h> #include <stdlib.h> #include <conio.h> struct bus { char FIO_voditel;
C++ Вывести список студентов, которые не имеют ни одной оценки 4 Здравствуйте, друзья. Нуждаюсь в помощи: составить программу для вывода структуры по n студентам с такими данными: фамилия, год рождения, год поступления и оценки по 4 предметам. Вывести список студентов, которые не имеют ни одной оценки 4. С описанием, вводом и выводом структуры все нормально, за исключением того, что при выводе русские символы, почему-то, не выводятся (фамилии студентов,... подробнее

Показать сообщение отдельно
saylor0
7 / 0 / 1
Регистрация: 08.12.2013
Сообщений: 16

Удалить повторные записи из массива - C++

13.05.2014, 10:10. Просмотров 305. Ответов 11
Метки (Все метки)

Всем привет, нужна небольшая помощь. Необходимо удалить повторяющиеся записи имени и адреса, как это реализовать? Либо просто вывести не повторяющиеся записи. В case 8 нужно это реализовать.
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
153
154
155
156
157
158
159
#include <stdio.h>
#include <io.h>
#include <vcl.h>
#include <conio.h>
#include <iostream.h>
 
struct Faces {
               char name[40];
               char adres[40];
               double nomer;
               double date[3];
               }Stud,r, *mas;
 
int size=sizeof(Faces);
FILE *ft,*fb;
 
int main (int)
{
 
int kol,i=0,d,t,m,j;
double dat[3],x;
long len;
 
ft = fopen("ft.txt", "a+");
while(true)
{
 
puts("\n Create - 1\n View information - 2\n Add person - 3\n Lin poisk - 4\n Pryam vybor - 5\n QuickSort - 6\n Dv Poisk - 7\n Zadanie - 8\n EXIT - 0");
cin>>d;
switch(d)
{
case 8:
 
 
 
case 0:
        fclose(ft);
        return 1;
 
case 1:
        fb=fopen("fb.txt","wb");
        fclose(fb);     break;
 
case 2:
        fb=fopen("fb.txt","rb");
        t=fileno(fb);
        len=filelength(t);
        kol=len/size;
        mas=new Faces[kol];
 
   for(i=0;i<kol;i++)
                fread((mas+i),size,1,fb);
        fclose(fb);
 
   for(i=0;i<kol;i++)
        printf("%s\t %s\t %6.0lf\t   %2.0lf.%2.0lf.%4.0lf\t\n",mas[i].name, mas[i].adres, mas[i].nomer, mas[i].date[0], mas[i].date[1], mas[i].date[2]);
 
        fclose(fb);      break;
 
case 3:
        fb=fopen("fb.txt","ab");
        fflush(stdin);
        printf("\n Name - \n");
        cin>>Stud.name;
        printf(" Adress - \n");
        cin>>Stud.adres;
        printf(" Nomer - \n");
        cin>>Stud.nomer;
        printf(" Date chislo  - \n");
        cin>>Stud.date[0];
        printf(" Date mesyac - \n");
        cin>>Stud.date[1];
        printf(" Date god - \n");
        cin>>Stud.date[2];
        fwrite(&Stud, size, 1, fb);
 
fprintf(ft,"%s %s %6.0lf %2.0lf.%2.0lf.%4.0lf\n",
Stud.name, Stud.adres, Stud.nomer, Stud.date[0], Stud.date[1], Stud.date[2]);
fclose(fb);break;
 
case 4:
        printf(" Vvedite date chislo - \n");
        cin>>dat[0];
        printf(" Vvedite date mesyac - \n");
        cin>>dat[1];
        printf(" Vvedite date god - \n");
        cin>>dat[2];
 
        for(i=0;i<kol;i++)
         {
        if (
                mas[i].date[0]==dat[0] &&
                mas[i].date[1]==dat[1] &&
                mas[i].date[2]==dat[2]
        )
printf("%s\t %s\t %6.0lf\t %2.0lf.%2.0lf.%4.0lf\t\n",mas[i].name, mas[i].adres, mas[i].nomer, mas[i].date[0], mas[i].date[1], mas[i].date[2]);
}
break;
 
case 5:
for(i=0; i<kol; i++)
                {
            m = i;
            for (j=i+1;j<kol;j++)
            if (mas[j].date[2] < mas[m].date[2])
                m = j;
        r=mas[m];
        mas[m]=mas[i];
                mas[i]=r;
            
 
printf("%s\t %s\t %6.0lf\t %2.0lf.%2.0lf.%4.0lf\t\n",mas[i].name, mas[i].adres, mas[i].nomer, mas[i].date[0], mas[i].date[1], mas[i].date[2]);
}  break;
 
 
case 6:
x=mas[2].date[0];  i=0;   j=kol-1;
while (i<= j)
{
 
        while ( mas[i].date[0]<x) i++;
        while ( mas[j].date[0]>x)  j--;
        if (i<=j)
        {
                r=mas[i];
            mas[i]=mas[j];
            mas[j]=r;
                    i++;
                        j--;
        }
for(i=0; i<kol; i++)
printf("%s\t %s\t %6.0lf\t %2.0lf.%2.0lf.%4.0lf\t\n",mas[i].name, mas[i].adres, mas[i].nomer, mas[i].date[0], mas[i].date[1], mas[i].date[2]);
 }  break;
 
 
 
case 7:
int i=0, j = kol, m;
        printf(" Vvedite date chislo - \n");
        cin>>dat[0];
        printf(" Vvedite date mesyac - \n");
        cin>>dat[1];
        printf(" Vvedite date god - \n");
        cin>>dat[2];
while( i<j) {
            m = (i + j)/2;
            if (dat[0] <= mas[m].date[0] &&
                    dat[1] <= mas[m].date[1] &&
                    dat[2] <= mas[m].date[2]) j = m;
                    else  i = m+1;
}
printf("%s\t %s\t %6.0lf\t %2.0lf.%2.0lf.%4.0lf\t\n",mas[i].name, mas[i].adres, mas[i].nomer, mas[i].date[0], mas[i].date[1], mas[i].date[2]);
 
break;
 
 
 
}
}}
Добавлено через 11 часов 7 минут
Еще немного актуально!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru