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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Как правильно прочитать данные? http://www.cyberforum.ru/cpp-beginners/thread801231.html
Как правильно прочитать данные? "ER-200" 06:43 10:40 "Red Arrow" 23:55 07:55 "Express" 23:59 08:00 "Slow Train 1" 10:00 09:59 "Slow Train 2" 10:00 10:00 Строчки отдельно чтобы при выводе написать не только одно слово, а название целиком? Добавлено через 8 минут
C++ Адресация и поиск переменной/функции Здравствуйте! Возникла такая задача. Есть какой-то .exe файл (х64). В иде я нашел переменную и её значение. Через артмани я нашел адрес этой переменной. Я читаю её через ReadProcessMemory(). Однако, если перезапустить этот .exe файл, то все адреса меняются и я не могу снова прочитать значение переменной. --- http://www.cyberforum.ru/cpp-beginners/thread801217.html
Программа выводит изображение календаря на любой месяц C++
Программа выводит изображение календаря на любой месяц. Выходные и праздничные дни выделяются цветом, текущая дата рамкой. Имеется возможность задать праздничные дни и сделать краткую запись, характеризующую этот день, например, «День Парижской коммуны». Когда год заканчивается, то календарь автоматически обновляется.
C++ конструктор при возврате значения из ф-ии
В литературе написано что при возврате значения из ф-ии вызывается конструктор копирования, но в примере такого не происходит. Сначала вызывается при создании "a b;" потом для аргумента "a func(a)", и теле ф-ии при создании нового объекта "a b;" и все. Как тогда происходит возврат значения? class a { public: a() { std::cout << "construct" << std::endl; } a(const a& b) {...
C++ Перевод из одной системы счисления в другую http://www.cyberforum.ru/cpp-beginners/thread801181.html
Проблема с переводом из двоичной системы в десятичную. Допустим у нас есть такое число 11101101 это 237 моя программа хорошо переводит, но если введем 11101110 это 238 моя программа выдает 239. Какую ошибку я допустил? void binary_to_ten(int binary) { int tmp = binary, sum = 0; int number = number_digit(tmp); vector<int> binary_code; while(tmp != 0) {...
C++ Как разумно получить доступ к приватной переменной Есть в классе приватная переменная clientName. Мне нужно защитить ее так, чтобы для внешних классов она была только для чтения. Не получается. Например, следующий код не спасает: Попытка №1 class Client { private: wchar_t clientName; public: wchar_t* getClientName() { подробнее

Показать сообщение отдельно
alsav22
5284 / 4803 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.03.2013, 07:22     Сравнение строк в структуре, чтение из файла
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <fstream>
#include <windows.h>
 
using namespace std;
 
struct student
{
    char fam[20];
    int vozrast;
    char gruppa[5];
    double ball;
};
 
void read(student *stud, int n)
{
    ifstream in("file.txt");  
    if(!in) cout << "File can not be open\n";
    
    for(int i = 0; i < n; i++)
        in >> stud[i].fam >> stud[i].vozrast >> stud[i].gruppa >> stud[i].ball;
}
 
void sort(student *stud, int n)
{
    student swap; 
    for(int i = 0; i < n; i++)
      for(int j = i + 1; j < n; j++)
        if (strcmp (stud[i].fam, stud[j].fam) > 0)
        {
            swap = stud[i];
            stud[i] = stud[j];
            stud[j] = swap;
        }
 }
 
void out(student *stud, int n)
{
        for(int i = 0; i < n; i++)
        { 
            cout << stud[i].fam << '\t' << stud[i].vozrast << '\t' <<  stud[i].gruppa << '\t' << stud[i].ball; 
            cout << endl;
        }
        cout << endl;
}
 
 void poisk(student *stud, int n)
{
    sort(stud, n);
    
    for(int i = 0; i < n; i++)
    {
        if (strcmp(stud[i].fam, stud[i + 1].fam) == 0)
        {
                for ( int j = i;  j < n && strcmp(stud[i].fam, stud[j].fam) == 0; j++)
                {
                    cout << stud[j].fam << '\t' << stud[j].vozrast << '\t' <<  stud[j].gruppa << '\t' << stud[j].ball;
                    cout << endl;
                }
                break;
        }
    }
    cout << endl;
}
 
void poisk1(student *stud, int n)
{
    cout << "Enter surname" << endl;
    char fama[20];
    cin >> fama;
    cout << endl;
    for(int i = 0; i < n; i++)
        if (strcmp(fama, stud[i].fam) == 0)
        {
            cout << stud[i].fam << '\t' << stud[i].vozrast << '\t' <<  stud[i].gruppa << '\t' << stud[i].ball; 
            cout << endl;
        }
    cout << endl;
}
 
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
 
int key = 0, n = 8;
 
student *stud = new student[n];
 
do
{
    cout << "1.Students\n2.Surname\n3.Search\n0.Exit\n";
    cin >> key;
    cin.ignore(1);
    switch(key)
    {
    case 1:
        cout << endl << "Surname\tAge\tGroup\tBall" << endl << endl;
        read(stud, n);
        sort(stud, n);
        out(stud, n);
        break;
    case 2:
        read(stud, n);
        poisk(stud, n);
        break;
    case 3:
        read(stud, n);
        poisk1(stud, n);
        break;
    case 0:
        break;
       
    }
 
} while(key != 0);
 
system("pause");
return 0;
}


Добавлено через 30 минут
Или так:
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <fstream>
#include <string>
#include <windows.h>
 
using namespace std;
 
struct student
{
    char fam[20];
    int vozrast;
    char gruppa[5];
    double ball;
};
 
student* read(int &n)
{
    ifstream in("file.txt");  
    if(!in)
    { 
        cout << "File can not be open\n";
        return 0;
    }
    else
    {
        for (n = 0;  ; n++)
        {
            string str;
            getline(in, str);
            if (in.eof()) break;
        }
        
        student *stud = new student[n]; // n - количество структур в файле
        
        in.clear();
        in.seekg(0);    
 
        for(int i = 0; i < n; i++)
            in >> stud[i].fam >> stud[i].vozrast >> stud[i].gruppa >> stud[i].ball;
            
        return stud;
    }
    
}
 
void sort(student *stud, int n)
{
    student swap; 
    for(int i = 0; i < n; i++)
      for(int j = i + 1; j < n; j++)
        if (strcmp (stud[i].fam, stud[j].fam) > 0)
        {
            swap = stud[i];
            stud[i] = stud[j];
            stud[j] = swap;
        }
 }
 
void out(student *stud, int n)
{
        for(int i = 0; i < n; i++)
        { 
            cout << stud[i].fam << '\t' << stud[i].vozrast << '\t' <<  stud[i].gruppa << '\t' << stud[i].ball; 
            cout << endl;
        }
        cout << endl;
}
 
 void poisk(student *stud, int n)
{
    for(int i = 0; i < n; i++)
    {
        if (strcmp(stud[i].fam, stud[i + 1].fam) == 0)
        {
                for ( int j = i;  j < n && strcmp(stud[i].fam, stud[j].fam) == 0; j++)
                {
                    cout << stud[j].fam << '\t' << stud[j].vozrast << '\t' <<  stud[j].gruppa << '\t' << stud[j].ball;
                    cout << endl;
                }
                break;
        }
    }
    cout << endl;
}
 
void poisk1(student *stud, int n)
{
    cout << "Enter surname" << endl;
    char fama[20];
    cin >> fama;
    cout << endl;
    for(int i = 0; i < n; i++)
        if (strcmp(fama, stud[i].fam) == 0)
        {
            cout << stud[i].fam << '\t' << stud[i].vozrast << '\t' <<  stud[i].gruppa << '\t' << stud[i].ball; 
            cout << endl;
        }
    cout << endl;
}
 
int main()
{
 SetConsoleCP(1251);
 SetConsoleOutputCP(1251);
 
 int n;
 
 student *stud = read(n);
 
 if (stud)
 {
    sort(stud, n);
    
    int key = 0; 
    do
    {
        cout << "1.Students\n2.Surname\n3.Search\n0.Exit\n";
        
        cin >> key;
        switch(key)
        {
        case 1:
            cout << endl << "Surname\tAge\tGroup\tBall" << endl << endl;
            out(stud, n);
            break;
        case 2:
            poisk(stud, n);
            break;
        case 3:
            poisk1(stud, n);
            break;
        case 0:
            break;
        }
    } while (key != 0);
 
    delete [] stud;
 }
 
 system("pause");
 return 0;
}
 
Текущее время: 13:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru