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

Структура и база - C++

02.06.2015, 22:33. Просмотров 238. Ответов 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
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Структура и база (C++):

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

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

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

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

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

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

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 / 2
Регистрация: 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 / 2
Регистрация: 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
Привет! Вот еще темы с решениями:

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

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

Структура и вложенная структура
Подскажите как сделать задание, такого рода Иванов Математика 80 ...

Тип структура. Описать, используя тип структура
Описать, используя тип структура, данные на учеников (фамилия, улица, дом,...


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

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

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