Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
1 / 1 / 0
Регистрация: 24.05.2013
Сообщений: 41
1

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

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

Author24 — интернет-сервис помощи студентам
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
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.11.2013, 17:30
Ответы с готовыми решениями:

функция reverse(). ошибка несоответствия типов
где-то накосячил с указателями видимо... объясните, пожалуйста, где и почему. суть задания -...

Ошибка несоответствия типов
Sub AleVToS1k() Dim L() Dim M() n = 8 ReDim L(n) ReDim M(n) For i = 1 To n ...

Ошибка несоответствия типов
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics,...

Ошибка несоответствия типов при вычислениях
Помогите, пожалуйста, найти ошибку! Type mismatch...не могу понять почему? Dim R, BS, TI As...

18
419 / 418 / 167
Регистрация: 28.11.2010
Сообщений: 1,183
02.11.2013, 17:44 2
А что Вы ожидали увидеть? У вас поля структуры - не массивы.
C++
1
ps[i].name
1
1 / 1 / 0
Регистрация: 24.05.2013
Сообщений: 41
02.11.2013, 17:46  [ТС] 3
Про один элемент можно по-подробней.
0
419 / 418 / 167
Регистрация: 28.11.2010
Сообщений: 1,183
02.11.2013, 17:47 4
Цитата Сообщение от JaySeven Посмотреть сообщение
Про один элемент можно по-подробней.
недосмотрел.
0
1 / 1 / 0
Регистрация: 24.05.2013
Сообщений: 41
02.11.2013, 17:49  [ТС] 5
Сейчас поля структуры поставил как безразмерные массивы. Программа откомпилировалась, но после ввода пожертвований она вылетает
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
02.11.2013, 17:50 6
Цитата Сообщение от JaySeven Посмотреть сообщение
Сейчас поля структуры поставил как безразмерные массивы.
Зачем? Там было всё правильно.
0
1 / 1 / 0
Регистрация: 24.05.2013
Сообщений: 41
02.11.2013, 17:52  [ТС] 7
Может посмотрит кто-нибудь программу и скажет какие есть ошибки.
0
5498 / 4893 / 831
Регистрация: 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;
    }
0
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;
    }
Отредактировал, но все равно не помогло те же ошибки
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
02.11.2013, 18:02 10
Цитата Сообщение от JaySeven Посмотреть сообщение
те же ошибки
Те же - это какие?
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,737
Записей в блоге: 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");
1
1 / 1 / 0
Регистрация: 24.05.2013
Сообщений: 41
02.11.2013, 18:03  [ТС] 12
Цитата Сообщение от alsav22 Посмотреть сообщение
Те же - это какие?
Те, которые я в заголовке указал
0
5498 / 4893 / 831
Регистрация: 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;
}
0
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;
        }

какой результат ожидаете от
Чтобы программа после компиляции сразу не закрывалась
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
02.11.2013, 18:05 15
Цитата Сообщение от JaySeven Посмотреть сообщение
Те, которые я в заголовке указал
В каких местах кода? Разве в том коде, который я выложил?
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,737
Записей в блоге: 1
02.11.2013, 18:05 16
Цитата Сообщение от JaySeven Посмотреть сообщение
Чтобы программа после компиляции сразу не закрывалась
а теперь посмотрите на файл void, который появился в Вашей файловой системе
0
1 / 1 / 0
Регистрация: 24.05.2013
Сообщений: 41
02.11.2013, 18:10  [ТС] 17
Цитата Сообщение от Croessmah Посмотреть сообщение
а теперь посмотрите на файл void, который появился в Вашей файловой системе
Где именно смотреть и какие от него побочки поделитесь пожалуста

Добавлено через 1 минуту
Цитата Сообщение от JaySeven Посмотреть сообщение
Где именно смотреть и какие от него побочки поделитесь пожалуста
И если он вреден, то, пожалуста, предложите альтернативы.
0
Комп_Оратор)
Эксперт по математике/физике
8950 / 4704 / 629
Регистрация: 04.12.2011
Сообщений: 13,999
Записей в блоге: 16
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;
}
0
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;
}
0
06.03.2015, 15:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.03.2015, 15:21
Помогаю со студенческими работами здесь

Замена элементов в массиве и ошибка несоответствия типов
for(int i=0;i&lt;h;i++) for(int j=0;j&lt;w;j++) { if(rand()%10==iStarsCount) { mas =...

Ошибка несоответствия типов при ComboBox1.ItemIndex:=true
Всем программистам здравствуйте! Вот есть кусочек программки: if (ComboBox1.ItemIndex:=true) then...

Ошибка несоответствия типов данных при удалении из Access
При попытке удалить поля возникает ошибка несоответствия типов данных в выражении условия отбора. ...

При передаче XDTO пакета из базы в базу ошибка несоответствия типа
Соап отрабатывает сервис без ошибок, все красиво, а вот если его запустить из другой 1ски пишет что...

Вывод таблицы соответствия кодов ASCII и символов алфавита. Ошибка несоответствия типов
program asc2; uses crt; var smb: array of char; Smb: integer; i: integer; const n=25; begin...

несоответствия в условиях
Вообщем такая проблема что неправильно выполняется условие. Нужно подсчитать сумму элементов(с 1 по...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru