Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Sergey_007
0 / 0 / 0
Регистрация: 02.06.2015
Сообщений: 25
1

Структура и база

02.06.2015, 22:33. Просмотров 848. Ответов 4
Метки нет (Все метки)

Вообщем мы считываем инфу с файла и записываем её в базу. Нужно поднять стипендию (последние цифры в файле) студентов, у которых все пятерки на 1200. Вот написал код, но он почему то думает, что стипендия 56, хотя она стоит 800. Должно выводить 800+1200= 2000, а выводит 1256. Вот код, входной файл думаю не понадобится. гляньте кто пожалуйста)
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
#include <iostream>
#include <string>
#include <fstream>
#include <vector>
 
using namespace std;
 
struct data
{
    string surname, name, patronymic, birsday, sex;
    int grand;
    char mat, pf, inf;
    data(vector<string> arr)
    {
        surname = arr[0];
        name = arr[1];
        patronymic = arr[2];
        sex = arr[3];
        birsday = arr[4];
        mat = arr[5][0];
        pf = arr[6][0];
        inf = arr[7][0];
        grand = (int)arr[8][0]+'1';
    }
};
 
int main()
{
    fstream file("data1.txt");
    fstream file_out("data_new.txt");
    int n = 0;
    string tmp;
    vector<string> text;
    vector<data> base;
 
    while (file >> tmp)
    {
        text.push_back(tmp);
        n++;
        if (n == 9)
        {
            base.push_back(data(text));
            text.clear();
            n = 0;
        }
    }
 
    for (int i = 0; i < base.size(); i++)
    {
        if (base[i].pf == '5' && base[i].mat == '5' && base[i].inf == '5')
        {
            base[i].grand += 1200;
            cout << base[i].surname << '\t' << base[i].name << '\t' << base[i].patronymic << '\t' << base[i].birsday << '\t' << base[i].mat << '\t' << base[i].pf << '\t' << base[i].inf << '\t' << base[i].grand << '\t' << endl;
        }
 
        file_out << base[i].surname << '\t' << base[i].name << '\t' << base[i].patronymic <<'\t' << base[i].sex << '\t' << base[i].birsday << '\t' << base[i].mat << '\t' << base[i].pf << '\t' << base[i].inf << '\t' << base[i].grand << '\t' << endl;
    }
 
    system("pause");
    return 0;
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.06.2015, 22:33
Ответы с готовыми решениями:

Структура «База», сущности «Универсам» и «Продукты», структура «Товар»
1. Создать структуру «База», включающую не менее 3 полей. 2. Создать сущности «Универсам» и...

Структура телефонная база по алфавиту
Объявить структуру с заданными полями. Ввести необходимый список. Память для хранения списка...

Структура: база сотрудников и их адресов
Очень нужно написать задачу!Пожалуйста помогите) Ввести массив записей, который содержит фамилии...

Структура: телефонная база данных
Объявить структуру с заданными полями. Ввести необходимый список. Память для хранения списка...

В текстовом файле структура – информация о компьютерах. Структура с полями: название, стоимость.
Ребят, помогите пожалуйста, 29 июня экзамен по &quot;Основы программирования&quot;,кто сколько сможет сделать...

4
akaAxeL
66 / 66 / 59
Регистрация: 14.07.2013
Сообщений: 251
02.06.2015, 22:46 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <vector>
 
using namespace std;
 
int main()
{
    vector<string> vec;
    string st = "800";
    vec.push_back(st);
    int grand;
    grand = (int)vec[0][0] + 1;//это не правильно
    cout << grand;//печатает 55. так как см выше
    system("pause");
    return 0;
}
0
Sergey_007
0 / 0 / 0
Регистрация: 02.06.2015
Сообщений: 25
02.06.2015, 22:52  [ТС] 3
Убрал +1, но все равно не правильно выводит
0
akaAxeL
66 / 66 / 59
Регистрация: 14.07.2013
Сообщений: 251
02.06.2015, 22:55 4
Лучший ответ Сообщение было отмечено Sergey_007 как решение

Решение

А вот так правильно
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <vector>
 
using namespace std;
 
int main()
{
    vector<string> vec;
    string st = "800";
    vec.push_back(st);
    int grand;
    grand = atoi(vec[0].c_str());
    cout << grand;
    system("pause");
    return 0;
}
Добавлено через 2 минуты
Если не работает atoi то #include <stdlib.h>
1
Sergey_007
0 / 0 / 0
Регистрация: 02.06.2015
Сообщений: 25
02.06.2015, 23:14  [ТС] 5
Вообще не компилит( Что ж я не везучий такой то.

Добавлено через 6 минут
Заработало, спасибо)
0
02.06.2015, 23:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.06.2015, 23:14

структура array предназначена для хранения строки типа char. Структура имеет функцию, которая позволяет изменить символ
структура array предназначена для хранения строки типа char. Структура имеет функцию, которая...

Структура DateTime, битовая структура
Условие: Структура содержит информацию о дате и времени некоторого события: struct datetime...

Структура, доступная из всех файлов проекта ("глобальная" структура)
Есть четыре структуры (body, gun, enemy, st), описанные в main.cpp. К main.cpp подключен хедер...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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