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

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

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

Ошибка несоответствия! - C++

02.11.2013, 17:30. Просмотров 581. Ответов 18
Метки нет (Все метки)

C++ (Qt)
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
#include <iostream>
#include <string>
using namespace std;
 
struct mecenats {
       string name;
       double donate;
       };
 
int main()
{
    int num;
    cout << "Ââåäèòå êîëè÷åñòâî ìåöåГ*Г*òîâ: ";
    cin >> num;
    mecenats * ps = new mecenats [num];
    int i = 0;
    while (i < num) {
          cout << "Ââåäèòå èìÿ ìåöåГ*Г*ГІГ*: ";
          getline(cin, (ps -> name[i]));
          cout << "Ââåäèòå ñóììó ïîæåðòâîâГ*Г*ГЁГ©: ";
          cin >> (ps -> donate[i]);
          cin.get();
          ++i;
          }
    int j;
    while (j < num) {
    while (j == 0)
    cout << "GRAND PATRONS:\n";
    if ((ps -> donate[j]) >= 10000)
       cout << ps -> name[j] << endl; 
       if (j == (num - 1))
            cout << "Others patrons:\n";
       else if ((ps -> donate[j]) <= 10000) {
       int i = 0;
       while (i < num) { 
            if ((ps -> donate[i]) <= 10000)
            cout << (ps -> name[i]) << endl;
            }
            }
       
        ++j;
}
        delete [] ps;
        
        system("pause >> void");
        
        return 0;
        }
Выполняю задачки из книги. Вот задание:
Постройте программу, которая отслеживает пожертвования в Общество
Защиты Влиятельных Лиц. Она должна запрашивать у пользователя
количество меценатов, а затем приглашать вводить их имена и суммы пожертвований от
каждого. Информация должна сохраняться в динамически выделяемом массиве
структур. Каждая структура должна иметь два члена: символьный массив (или
объект string) для хранения имени и переменную-член типа double — для
хранения суммы пожертвования. После чтения всех данных программа должна
отображать имена и суммы пожертвований тех, кто не пожалел $10 000 и
более. Этот список должен быть озаглавлен меткой "Grand Patrons". После этого
программа должна выдать список остальных жертвователей. Он должен быть
озаглавлен "Patrons". Если в одной из двух категорий не окажется никого,
программа должна напечатать "попе". Помимо отображения двух категорий,
никакой другой сортировки делать не нужно.

Ps выскакивает ошибка типа
19 C:\Dev-Cpp\Examples\My work\6.6.cpp no matching function for call to `getline(std::istream&, char&)'
и типа
21 C:\Dev-Cpp\Examples\My work\6.6.cpp invalid types `double[int]' for array subscript
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.11.2013, 17:30     Ошибка несоответствия!
Посмотрите здесь:

C++ функция reverse(). ошибка несоответствия типов

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vua72
414 / 414 / 85
Регистрация: 28.11.2010
Сообщений: 1,177
Завершенные тесты: 1
02.11.2013, 17:44     Ошибка несоответствия! #2
А что Вы ожидали увидеть? У вас поля структуры - не массивы.
C++
1
ps[i].name
JaySeven
1 / 1 / 0
Регистрация: 24.05.2013
Сообщений: 41
02.11.2013, 17:46  [ТС]     Ошибка несоответствия! #3
Про один элемент можно по-подробней.
vua72
414 / 414 / 85
Регистрация: 28.11.2010
Сообщений: 1,177
Завершенные тесты: 1
02.11.2013, 17:47     Ошибка несоответствия! #4
Цитата Сообщение от JaySeven Посмотреть сообщение
Про один элемент можно по-подробней.
недосмотрел.
JaySeven
1 / 1 / 0
Регистрация: 24.05.2013
Сообщений: 41
02.11.2013, 17:49  [ТС]     Ошибка несоответствия! #5
Сейчас поля структуры поставил как безразмерные массивы. Программа откомпилировалась, но после ввода пожертвований она вылетает
alsav22
5413 / 4809 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
02.11.2013, 17:50     Ошибка несоответствия! #6
Цитата Сообщение от JaySeven Посмотреть сообщение
Сейчас поля структуры поставил как безразмерные массивы.
Зачем? Там было всё правильно.
JaySeven
1 / 1 / 0
Регистрация: 24.05.2013
Сообщений: 41
02.11.2013, 17:52  [ТС]     Ошибка несоответствия! #7
Может посмотрит кто-нибудь программу и скажет какие есть ошибки.
alsav22
5413 / 4809 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
02.11.2013, 17:52     Ошибка несоответствия! #8
Первая часть программы:
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
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
struct mecenats {
       string name;
       double donate;
       };
 
int main()
{
    int num;
    cout << "Введите количество меценатов: ";
    cin >> num;
    mecenats * ps = new mecenats [num];
    int i = 0;
    while (i < num) 
    {
          cout << "Введите имя мецената: ";
          getline(cin, (ps[i].name));
          cout << "Введите сумму пожертвований: ";
          cin >> ps[i].donate;
          cin.get();
          ++i;
    }
JaySeven
1 / 1 / 0
Регистрация: 24.05.2013
Сообщений: 41
02.11.2013, 18:00  [ТС]     Ошибка несоответствия! #9
Цитата Сообщение от alsav22 Посмотреть сообщение
Первая часть программы:
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
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
struct mecenats {
       string name;
       double donate;
       };
 
int main()
{
    int num;
    cout << "Введите количество меценатов: ";
    cin >> num;
    mecenats * ps = new mecenats [num];
    int i = 0;
    while (i < num) 
    {
          cout << "Введите имя мецената: ";
          getline(cin, (ps[i].name));
          cout << "Введите сумму пожертвований: ";
          cin >> ps[i].donate;
          cin.get();
          ++i;
    }
Отредактировал, но все равно не помогло те же ошибки
alsav22
5413 / 4809 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
02.11.2013, 18:02     Ошибка несоответствия! #10
Цитата Сообщение от JaySeven Посмотреть сообщение
те же ошибки
Те же - это какие?
Croessmah
Модератор
Эксперт CЭксперт С++
12730 / 7190 / 802
Регистрация: 27.09.2012
Сообщений: 17,738
Записей в блоге: 2
Завершенные тесты: 1
02.11.2013, 18:02     Ошибка несоответствия! #11
Цитата Сообщение от JaySeven Посмотреть сообщение
как безразмерные массивы.
это какие?
C++
1
2
//getline(cin, (ps -> name[i]));
getline(cin, ps[i].name);//<--во так везде
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
#include <iostream>
#include <string>
using namespace std;
 
struct mecenats {
       string name;
       double donate;
       };
 
int main()
{
    int num;
    cout << "Введите количество меценатов: ";
    cin >> num;
    mecenats * ps = new mecenats [num];
    int i = 0;
    while (i < num) {
          cout << "Введите имя мецената: ";
          getline(cin, ps[i].name);
          cout << "Введите сумму пожертвований: ";
          cin >> ps[i].donate;
          cin.get();
          ++i;
          }
    int j;
    while (j < num) {
    while (j == 0)
    cout << "GRAND PATRONS:\n";
    if ((ps[j].donate) >= 10000)
       cout << ps -> name[j] << endl; 
       if (j == (num - 1))
            cout << "Others patrons:\n";
       else if ((ps[j].donate) <= 10000) {
       int i = 0;
       while (i < num) { 
            if (ps[i].donate <= 10000)
            cout << (ps[i].name) << endl;
            }
            }
       
        ++j;
}
        delete [] ps;
        
       system("pause >> void");
        
        return 0;
        }

какой результат ожидаете от
Цитата Сообщение от JaySeven Посмотреть сообщение
C++
1
system("pause >> void");
JaySeven
1 / 1 / 0
Регистрация: 24.05.2013
Сообщений: 41
02.11.2013, 18:03  [ТС]     Ошибка несоответствия! #12
Цитата Сообщение от alsav22 Посмотреть сообщение
Те же - это какие?
Те, которые я в заголовке указал
alsav22
5413 / 4809 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
02.11.2013, 18:04     Ошибка несоответствия! #13
Доделать под задание несложно.
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
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
 
struct mecenats {
       string name;
       double donate;
       };
 
int main()
{
    setlocale(0, "");
    
    int num;
    cout << "Введите количество меценатов: ";
    (cin >> num).get();
    mecenats * ps = new mecenats [num];
    int i = 0;
    while (i < num) 
    {
          cout << "Введите имя мецената: ";
          getline(cin, (ps[i].name));
          cout << "Введите сумму пожертвований: ";
          cin >> ps[i].donate;
          cin.get();
          ++i;
    }
    
    int j = 0;
    while (j < num) 
    {
        if ((ps[j].donate) >= 10000)
        {
            cout << "GRAND PATRONS:\n";
            cout << ps[j].name << ' ' << ps[j].donate << endl;
        }
        else
        {
            cout << "Others patrons:\n";
            cout << ps[j].name << ' ' << ps[j].donate << endl;
        }
       
        ++j;
    }
    delete [] ps;
        
    system("pause >> void");
        
    return 0;
}
JaySeven
1 / 1 / 0
Регистрация: 24.05.2013
Сообщений: 41
02.11.2013, 18:04  [ТС]     Ошибка несоответствия! #14
Цитата Сообщение от Croessmah Посмотреть сообщение
это какие?
C++
1
2
//getline(cin, (ps -> name[i]));
getline(cin, ps[i].name);//<--во так везде
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
#include <iostream>
#include <string>
using namespace std;
 
struct mecenats {
       string name;
       double donate;
       };
 
int main()
{
    int num;
    cout << "Введите количество меценатов: ";
    cin >> num;
    mecenats * ps = new mecenats [num];
    int i = 0;
    while (i < num) {
          cout << "Введите имя мецената: ";
          getline(cin, ps[i].name);
          cout << "Введите сумму пожертвований: ";
          cin >> ps[i].donate;
          cin.get();
          ++i;
          }
    int j;
    while (j < num) {
    while (j == 0)
    cout << "GRAND PATRONS:\n";
    if ((ps[j].donate) >= 10000)
       cout << ps -> name[j] << endl; 
       if (j == (num - 1))
            cout << "Others patrons:\n";
       else if ((ps[j].donate) <= 10000) {
       int i = 0;
       while (i < num) { 
            if (ps[i].donate <= 10000)
            cout << (ps[i].name) << endl;
            }
            }
       
        ++j;
}
        delete [] ps;
        
       system("pause >> void");
        
        return 0;
        }

какой результат ожидаете от
Чтобы программа после компиляции сразу не закрывалась
alsav22
5413 / 4809 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
02.11.2013, 18:05     Ошибка несоответствия! #15
Цитата Сообщение от JaySeven Посмотреть сообщение
Те, которые я в заголовке указал
В каких местах кода? Разве в том коде, который я выложил?
Croessmah
Модератор
Эксперт CЭксперт С++
12730 / 7190 / 802
Регистрация: 27.09.2012
Сообщений: 17,738
Записей в блоге: 2
Завершенные тесты: 1
02.11.2013, 18:05     Ошибка несоответствия! #16
Цитата Сообщение от JaySeven Посмотреть сообщение
Чтобы программа после компиляции сразу не закрывалась
а теперь посмотрите на файл void, который появился в Вашей файловой системе
JaySeven
1 / 1 / 0
Регистрация: 24.05.2013
Сообщений: 41
02.11.2013, 18:10  [ТС]     Ошибка несоответствия! #17
Цитата Сообщение от Croessmah Посмотреть сообщение
а теперь посмотрите на файл void, который появился в Вашей файловой системе
Где именно смотреть и какие от него побочки поделитесь пожалуста

Добавлено через 1 минуту
Цитата Сообщение от JaySeven Посмотреть сообщение
Где именно смотреть и какие от него побочки поделитесь пожалуста
И если он вреден, то, пожалуста, предложите альтернативы.
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6366 / 3013 / 297
Регистрация: 04.12.2011
Сообщений: 8,112
Записей в блоге: 3
02.11.2013, 18:35     Ошибка несоответствия! #18
как вариант
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
#include <iostream>
#include<string>
#include <windows.h>
using namespace std;
struct Mecenats{
string name;
double money;
};
int main()
{
SetConsoleCP (1251); SetConsoleOutputCP (1251);
int num=0;
cout<<"Введите количество меценатов ";
cin>>num;
Mecenats *mecenats = new Mecenats[num];
int *who_is_hu= new int[num];
double not_hu=10000;
int i = 0;
while(i < num){
cout<<"name ";
cin>>mecenats[i].name;
cout<<"money ";
cin>>mecenats[i].money;
if(mecenats[i].money>=not_hu)who_is_hu[i]=1;
else
who_is_hu[i]=0;
++i;
}
cout << endl;
cout<<"Not_hu"<<endl;
i=0;
while(i<num){
if(who_is_hu[i]==1)cout<<mecenats[i].name<<endl;
++i;
}
cout << endl;
cout<<"Hu"<<endl;
i=0;
while(i<num){
if(who_is_hu[i]==0)cout<<mecenats[i].name<<endl;
++i;
}
cout << endl;
system ("pause" );
    return 0;
}
Chang875
1 / 1 / 0
Регистрация: 14.01.2015
Сообщений: 12
06.03.2015, 15:21     Ошибка несоответствия! #19
Вот мой вариант решения, но возникли проблемы, как я подозреваю, с перегрузкой функций.
Данный вариант работает, но если я пробую применить метод getline к строчке cin >> pzvl[i].name;
т. е. getline (cin, pzvl[i].name), то программа вылетает с ошибкой. Получается что читает только имя спонсора, а не имя и фамилию.=

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
/*Постройте программу, которая отслеживает пожертвования в Общество
Защиты Влиятельных Лиц.Она должна запрашивать у пользователя
количество меценатов, а затем приглашать вводить их имена и суммы пожертвований от
каждого.Информация должна сохраняться в динамически выделяемом массиве
структур.Каждая структура должна иметь два члена : символьный массив(или
объект string) для хранения имени и переменную - член типа double — для
хранения суммы пожертвования.После чтения всех данных программа должна
отображать имена и суммы пожертвований тех, кто не пожалел $10 000 и
более.Этот список должен быть озаглавлен меткой "Grand Patrons".После этого
программа должна выдать список остальных жертвователей.Он должен быть
озаглавлен "Patrons".Если в одной из двух категорий не окажется никого,
программа должна напечатать "попе".Помимо отображения двух категорий,
никакой другой сортировки делать не нужно.*/
#include <iostream>
#include <string>
using namespace std;
    struct zvl
    {
        string name;
        double pojert;
    };
 
    int main()
{
    setlocale(LC_ALL, "Russian");
    
    int kolvo_spons = 0;
        cout << "Введите количество спонсоров: ";
        cin >> kolvo_spons;
        cout << endl;
        
        zvl *pzvl = new zvl[kolvo_spons];
        
        for (int i = 0; i != kolvo_spons; i++)
        {
            cout << "Введите имя спонсора: ";
            cin >> pzvl[i].name;
            cout << endl;
            cout << "Введите сумму пожертвования: ";
            cin >> pzvl[i].pojert;
            cout << endl;
        }
        
        cout << "\tGrand Patrons\n\n";
        
        for (int j = 0; j != kolvo_spons; j++)
        {
            if (pzvl[j].pojert > 10000)
            {
                
                cout << "Пожертвовавшие свыше 10 000: ";
                cout << "имя: " << pzvl[j].name << endl;
                cout << "сумма : " << pzvl[j].pojert << endl;
                cout << endl;
            }
        }
        cout << "\tPatrons\n\n" << endl;
        for (int j = 0; j != kolvo_spons; j++)
        {
            if (pzvl[j].pojert < 10000)
            {
                cout << "Пожертвовавшие ниже 10 000: ";
                cout << "имя: " << pzvl[j].name << endl;
                cout << "сумма : " << pzvl[j].pojert << endl;
                cout << endl;
            }else
                cout << "none";
 
            delete[] pzvl;
 
            system("pause");
            return 0;
}
Yandex
Объявления
06.03.2015, 15:21     Ошибка несоответствия!
Ответ Создать тему
Опции темы

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