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

C++ Повторы в цикле - C++

Восстановить пароль Регистрация
 
lenar_lesnik
 Аватар для lenar_lesnik
0 / 0 / 0
Регистрация: 24.11.2013
Сообщений: 7
08.12.2013, 23:08     C++ Повторы в цикле #1
Надо написать программу, которая находит однофамильцев и выводит группами.
Поиск однофамильцев задаю в цикле, как сделать, чтобы повторно не брал уже найденые фамилии. И как быть с женскими фамилиями.
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <string>
#define N 10
using namespace std;
struct list{
    string surname;
    string name;
    string father;
    };
int main()
{
list spisok[N];
int i;
for (i=0; i<N; i++)
{
cout << "Введите ФИО(через пробел): ";
cin >> spisok[i].surname >> spisok[i].name >> spisok[i].father;
}
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
newb_programmer
 Аватар для newb_programmer
237 / 237 / 19
Регистрация: 03.09.2011
Сообщений: 553
09.12.2013, 00:13     C++ Повторы в цикле #2
lenar_lesnik, вот можно так сделать, я написал через "ж" =) так что можете переделать. суть в том что мы проходим по массиву в поисках одинаковых фамилий, и если нашли совпадение, то идем назад по массиву и если не находим совпадений то выводим результат. если же находим совпадение, то ничего не выводим и идем дальше по массиву.
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
#include <iostream>
#include <string>
#define N 10
using namespace std;
struct list{
    char surname[100];
    char name[100];
    char father[100];
    };
int main()
{
    list spisok[N];
    int i;
    for (i=0; i<N; i++)
    {
        cout << "Введите ФИО(через пробел): ";
        cin >> spisok[i].surname >> spisok[i].name >> spisok[i].father;
    }
    for (i=1;i<N-1;i++)
        if ( !stricmp(spisok[i].surname,spisok[i+1].surname) ) {
            for (int j=i-1;j>=0;j--) {
                if ( !stricmp(spisok[i].surname,spisok[j].surname) )
                    break;
                else if (!j)
                    cout<<spisok[i].surname <<" "<< spisok[i].name <<" "<< spisok[i].father<<endl;
            }
        }
}
lenar_lesnik
 Аватар для lenar_lesnik
0 / 0 / 0
Регистрация: 24.11.2013
Сообщений: 7
09.12.2013, 00:25  [ТС]     C++ Повторы в цикле #3
newb_programmer, спасибо, вот теперь думаю как сделать чтоб женские фамилии тоже находил, например Иванов и Иванова, я думал просмотреть длину, и если надо удалить последний символ
VBmaster98
19 / 18 / 2
Регистрация: 30.09.2012
Сообщений: 35
09.12.2013, 02:07     C++ Повторы в цикле #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
#include "stdafx.h"
#include <iostream>
#include <string>
#define N 3
 
 
 
using namespace std;
 
struct list{
    string surname;
    string name;
    string father;
    };
int main()
{
list spisok[N];
int i;
int t;
for (i=0; i<N; i++)
{
cout << "Введите ФИО(через пробел): ";
cin >> spisok[i].surname >> spisok[i].name >> spisok[i].father;
}
for (i=0; i<N; i++){
    for (t=0; t<N; t++){
        if (i!=t){
            if ((bool(spisok[i].surname == spisok[t].surname))==true)
            {
                cout<<"Result = "<< spisok[t].surname<<" "
                    <<spisok[t].name<<" "
                    << spisok[t].father
                    << " \n";
            }
        }
    }
 
}
char cha[1];
cin >> cha[NULL];
return 0;
}
Не так круто конечно...но решил поделиться)
Так сказать better simpler then clever)

Добавлено через 1 час 23 минуты
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
// c.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
 
 
#include <iostream>
#include <string>
#define N 3
 
 
 
using namespace std;
 
 
struct list{
    string surname;
    string name;
    string father;
    string new1;
    };
 
 
int main()
{
list spisok[N];
spisok[1].new1 = "a";\\окончание фамилии
 
int i;
int t;
for (i=0; i<N; i++)
{
cout << "Enter please your name surname ,first name : ";
 
cin >> spisok[i].surname >> spisok[i].name >> spisok[i].father;
}
for (i=0; i<N; i++){
    for (t=0; t<N; t++){
        if (i!=t){
            if ((bool(spisok[i].surname == spisok[t].surname))==true)
            {
                cout<<"homonym = "<< spisok[t].surname<<" "
                    <<spisok[t].name<<" "
                    << spisok[t].father
                    << " \n";
            }
            if ((bool((spisok[i].surname + spisok[1].new1) == spisok[t].surname))==true)
            {
                cout<<"homonym = "<< spisok[t].surname<<" "
                    <<spisok[t].name<<" "
                    << spisok[t].father
                    << " \n";
            }
            if ((bool(spisok[i].surname == (spisok[t].surname + spisok[1].new1)))==true)
            {
                cout<<"homonym = "<< spisok[t].surname<<" "
                    <<spisok[t].name<<" "
                    << spisok[t].father
                    << " \n";
            }
        }
    }
}
char cha[1];
cin >> cha[NULL];
return 0;
}
Работает только с фамилиями на английском.
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
#include "stdafx.h"
 
 
#include <iostream>
#include <string>
#define N 4
 
 
 
using namespace std;
 
 
struct list{
    string surname;
    string name;
    string father;
    string new1;
    };
 
 
int main()
{
list spisok[N];
spisok[1].new1 = "a";
 
int i;
int t;
for (i=0; i<N; i++)
{
cout << "Enter please your name surname ,first name : ";
 
cin >> spisok[i].surname >> spisok[i].name >> spisok[i].father;
}
for (i=0; i<(N); i++){
    for (t=0; t<N; t++){
        if (i!=t){
            if ((((bool((spisok[i].surname + spisok[1].new1) == spisok[t].surname))==true)) || (((bool(spisok[i].surname == (spisok[t].surname + spisok[1].new1)))==true)) || ((bool(spisok[i].surname == spisok[t].surname))==true))
            {
                cout<<"homonym = "<< spisok[t].surname<<" "
                    <<spisok[t].name<<" "
                    << spisok[t].father
                    << " \n"<<"\n";
            };
        }
    }
}
char cha[1];
cin >> cha[NULL];
return 0;
}
Yandex
Объявления
09.12.2013, 02:07     C++ Повторы в цикле
Ответ Создать тему
Опции темы

Текущее время: 02:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru