Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Bestseller
0 / 0 / 0
Регистрация: 27.12.2013
Сообщений: 28
#1

Не получется отладить программу - C++

22.12.2015, 12:03. Просмотров 237. Ответов 7
Метки нет (Все метки)

Программа ведомость результатов экзаменационной сессии.

выдает такие ошибки:

1>c:\documents\visual studio 2010\projects\vedomost\vedomost\sourse.cpp(10): error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'std::basic_string<_Elem,_Traits,_Ax>' (or there is no acceptable conversion)
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>,
1> _Ax=std::allocator<char>
1> ]
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\ostream(679): could be 'std::basic_ostream<_Elem,_Traits> &std::operator <<<char,std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,const char *)'
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\ostream(726): or 'std::basic_ostream<_Elem,_Traits> &std::operator <<<char,std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,char)'
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]

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
160
161
162
163
164
165
166
167
168
169
170
#include <iostream>
#include <fstream>
#include <windows.h>
#include <vector>
using namespace std;
struct Student
{
    void fn_student_list()///Выводим список студентов
    {
        for(unsigned int i=0;i<vec_FIO.size();++i)cout<<vec_FIO[i]<<endl;
    }
    vector<string>vec_FIO;
    vector<int> vec_math,vec_physics,vec_chemistry,vec_geometry,vec_rus;
    void fn_student_exam_5()///Список студентов которые сдали все экзамены только на пять
    {
        bool five=false;
        for(unsigned int i=0;i<vec_FIO.size();++i)
        {
            unsigned int sum=0;
            if(vec_math[i]==5)sum+=5;
            if(vec_physics[i]==5)sum+=5;
            if(vec_chemistry[i]==5)sum+=5;
            if(vec_geometry[i]==5)sum+=5;
            if(vec_rus[i]==5)sum+=5;
            if(sum==25)
            {
                cout<<vec_FIO[i]<<endl;
                five=true;
            }
 
        }
        if(five==false)cout<<"Таких студентов нет :("<<endl;
    }
    void fn_student_exam_3()///Список студентов которые имеют хотя-бы одну тройку по экзаменам
    {
        bool three=false;
        for(unsigned int i=0;i<vec_FIO.size();++i)
        {
            unsigned int sum=0;
            if(vec_math[i]==3)sum++;
            if(vec_physics[i]==3)sum++;
            if(vec_chemistry[i]==3)sum++;
            if(vec_geometry[i]==3)sum++;
            if(vec_rus[i]==3)sum++;
            if(sum>=1)
            {
                cout<<vec_FIO[i]<<endl;
                three=true;
            }
        }
        if(three==false)cout<<"Таких студентов нет :("<<endl;
    }
    void fn_student_exam_2()///Список студентов у которых есть двойки
    {
        bool two=false;
        for(unsigned int i=0;i<vec_FIO.size();++i)///удаляем студентов у котороыъ больше одной двойки
        {
            int sum=0;
            if(vec_math[i]==2)sum++;
            if(vec_physics[i]==2)sum++;
            if(vec_chemistry[i]==2)sum++;
            if(vec_geometry[i]==2)sum++;
            if(vec_rus[i]==2)sum++;
            if(sum>=2)
            {
                vec_FIO.erase(vec_FIO.begin()+i);
                vec_math.erase(vec_math.begin()+i);
                vec_physics.erase(vec_physics.begin()+i);
                vec_chemistry.erase(vec_chemistry.begin()+i);
                vec_geometry.erase(vec_geometry.begin()+i);
                vec_rus.erase(vec_rus.begin()+i);
            }
        }
        for(unsigned int i=0;i<vec_FIO.size();++i)///Выводим список студентов
        {
            unsigned int sum=0;
            if(vec_math[i]==2)sum++;
            if(vec_physics[i]==2)sum++;
            if(vec_chemistry[i]==2)sum++;
            if(vec_geometry[i]==2)sum++;
            if(vec_rus[i]==2)sum++;
            if(sum>=1)
            {
                cout<<vec_FIO[i]<<endl;
                two=true;
            }
        }
        if(two==false)cout<<"Таких студентов нет :("<<endl;
    }
};
int main()
{
    Student student;
    string str,fstr;
    SetConsoleOutputCP(1251);
    int value,math,physics,chemistry,geometry,rus,number_of_students=0;
    ifstream in("file.txt");
    if(!in)///Если не смогли открыть файл
    {
        cout<<"Can't open file\n";
        return 1;
    }
    getline(in,str);
    while(in>>str)
    {
        fstr+=str+' ';
        for(int i=0;i<2;++i)
        {
            in>>str;
            fstr+=str+' ';
        }
        student.vec_FIO.push_back(fstr);
        fstr.clear();
        in>>math;
        student.vec_math.push_back(math);
        in>>physics;
        student.vec_physics.push_back(physics);
        in>>chemistry;
        student.vec_chemistry.push_back(chemistry);
        in>>geometry;
        student.vec_geometry.push_back(geometry);
        in>>rus;
        student.vec_rus.push_back(rus);
        number_of_students++;
        if(number_of_students==20)break;
    }
    in.close();///Закрыли файл
    start:cout<<"\n1. Список студентов (ФИО)"<<endl;
    cout<<"2. Список студентов которые сдали все экзамены только на пять."<<endl;
    cout<<"3. Список студентов которые имеют хотя-бы одну тройку по экзаменам."<<endl;
    cout<<"4. Список студентов у которых есть двойки."<<endl;
    cout<<"(если студент имеет больше одной двойки он исключается из списка)."<<endl;
    cout<<"5. Введите 'q' для выхода"<<endl;
    cout<<"Пожалуйста сделайте свой выбор: ";
    char c;
    cin>>c;
    switch(c)
    {
        case '1':
        {
            student.fn_student_list();
            goto start;
        }
        case '2':
        {
            student.fn_student_exam_5();
            goto start;
        }
        case '3':
        {
            student.fn_student_exam_3();
            goto start;
        }
        case '4':
        {
            student.fn_student_exam_2();
            goto start;
        }
        case 'q':
        {
                return 0;
        }
        default:
        {
            cout<<"Неверный ввод :( Попробуйте снова\n";
            goto start;
        }
    }
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.12.2015, 12:03
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Не получется отладить программу (C++):

Разработать алгоритм и тесты, написать и отладить программу Выполнить программу, проанализировать результат - C++
Из матрицы У(k, k) получить вектор Т, элементами которого являются элементы главной диагонали матрицы.

отладить программу - C++
программа компилируется,но выводит какие то иероглифы,помогите найти ошибки #include&lt;assert.h&gt; #include&lt;iostream&gt; #include&lt;string&gt; ...

Не получается отладить программу - C++
В двумерном массиве удалить все строки, в которых среднее арифметическое элементов является двузначным числом. Не получаются два...

В С++ 2012 не получается отладить программу - C++
На с++ 2012 г. при отладке выскакивает окно присоединение к процессору, из-за чего и не работает программа. Не знаю, что делать. Как можно...

Как отладить консольную программу? - C++
Как делать отладку в VS если мы вызываем наш проект в консоли в windows и передаем параметры в этой же консоли int main(int argv, char*...

Отладить программу циклического процесса - C++
Необходимо отладить программу циклического процесса \prod_{K=1}^{N}(1+sin(KX)/K! ...

7
rikimaru2013
C++ Game Dev
2471 / 1140 / 241
Регистрация: 30.11.2013
Сообщений: 3,709
22.12.2015, 12:05 #2
Цитата Сообщение от Bestseller Посмотреть сообщение
cout<<vec_FIO[i]<<endl;
std::cout не знает, что делать когда ему передают std::string


C++
1
 std::cout<< vec_FIO[i].c_str() << std::endl;
0
Kerry_Jr
Эксперт PHP
2210 / 2006 / 702
Регистрация: 14.05.2014
Сообщений: 5,869
Записей в блоге: 1
Завершенные тесты: 5
22.12.2015, 12:10 #3
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
C++
1
std::cout<< vec_FIO[i].c_str() << std::endl;
а не проще ли
C++
1
#include <string>
???
2
rikimaru2013
C++ Game Dev
2471 / 1140 / 241
Регистрация: 30.11.2013
Сообщений: 3,709
22.12.2015, 12:13 #4
Kerry_Jr, я прочитал только 1 ошибку компилятора - зачем мне искать все его ошибки ??????

P.S. Поставил 6 шт "?", которое получено множением вашего количества на 2 - круто вышло да?
0
Ilot
Эксперт С++
1826 / 1184 / 232
Регистрация: 16.05.2013
Сообщений: 3,119
Записей в блоге: 5
Завершенные тесты: 1
22.12.2015, 12:13 #5
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
std::cout не знает, что делать когда ему передают std::string
Глупости. Учите мат. часть http://www.cplusplus.com/reference/string/string/operator%3C%3C/
Как правильно указал Kerry_Jr отсутствует заголовочный файл.
C++
1
#include <string>
2
rikimaru2013
22.12.2015, 12:16
  #6

Не по теме:

Да, вы что сговорились ??? ??? ???

P.S. 9 шт зацени!

0
Kerry_Jr
Эксперт PHP
2210 / 2006 / 702
Регистрация: 14.05.2014
Сообщений: 5,869
Записей в блоге: 1
Завершенные тесты: 5
22.12.2015, 13:00 #7
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
круто вышло да?
я поставил три вопроса просто для того, чтобы после блока с кодом знак вопрос был лучше виден, и не более того.
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
std::cout не знает, что делать когда ему передают std::string
Этой одной ошибки вполне достаточно, чтобы понять, что оператор << перегружен для класса std::string в заголовочном файле string.
2
Bestseller
0 / 0 / 0
Регистрация: 27.12.2013
Сообщений: 28
22.12.2015, 14:15  [ТС] #8
Спасибо

Добавлено через 50 минут
Помогите включить в этот список добавление новых студентов в файл?
подойдет ли этот код и как его правильно вставить? Оценок должно быть 5
C++
1
2
3
4
5
6
7
8
9
10
11
12
cout << "Введите кол-во студентов: ";
    cin >> n;
    for (int i = 0; i < n; i++)
    {
        cout << "ФИО студента (Иванов А. И) " << i+1 << "-го" << " студента: ";
        cin >> name;
 
              for (int j = 0; j < 5; j++)
        {
            cout << j+ 1 << "-ая" << " оценка: ";
            cin >> scores[j];
        }
0
22.12.2015, 14:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.12.2015, 14:15
Привет! Вот еще темы с ответами:

Средствами С++ составить и отладить программу - C++
Средствами С++ составить и отладить программу, позволяющую определить лежит ли точка с произвольной координатой (Х и У) внутри...

Составить и отладить резидентную программу часы (C++) - C++
Составить и отладить резидентную программу часы, которая выдает в нижнем левом углу экрана текущее значение времени в числовой форме....

Составить и отладить программу с использованием цикла for - C++
Даны действительные числа х, а, натуральное число n. Вычислить : ((… ((х+а)2+…а)2+а)2+а (n cкобок).

Составить и отладить программу редактор текстов - C++
помогите сделать Составить и отладить программу редактор текстов со следующими обязательными операциями: - Вставка символа; -...


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

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

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