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

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

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

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

02.11.2013, 17:30. Просмотров 634. Ответов 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
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.11.2013, 17:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка несоответствия! (C++):

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

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

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

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

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

Ошибка несоответствия типов данных при удалении из Access - C#
При попытке удалить поля возникает ошибка несоответствия типов данных в выражении условия отбора. cmd.CommandText = &quot;DELETE * FROM...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
vua72
415 / 415 / 85
Регистрация: 28.11.2010
Сообщений: 1,183
Завершенные тесты: 1
02.11.2013, 17:44 #2
А что Вы ожидали увидеть? У вас поля структуры - не массивы.
C++
1
ps[i].name
1
JaySeven
1 / 1 / 0
Регистрация: 24.05.2013
Сообщений: 41
02.11.2013, 17:46  [ТС] #3
Про один элемент можно по-подробней.
0
vua72
415 / 415 / 85
Регистрация: 28.11.2010
Сообщений: 1,183
Завершенные тесты: 1
02.11.2013, 17:47 #4
Цитата Сообщение от JaySeven Посмотреть сообщение
Про один элемент можно по-подробней.
недосмотрел.
0
JaySeven
1 / 1 / 0
Регистрация: 24.05.2013
Сообщений: 41
02.11.2013, 17:49  [ТС] #5
Сейчас поля структуры поставил как безразмерные массивы. Программа откомпилировалась, но после ввода пожертвований она вылетает
0
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
02.11.2013, 17:50 #6
Цитата Сообщение от JaySeven Посмотреть сообщение
Сейчас поля структуры поставил как безразмерные массивы.
Зачем? Там было всё правильно.
0
JaySeven
1 / 1 / 0
Регистрация: 24.05.2013
Сообщений: 41
02.11.2013, 17:52  [ТС] #7
Может посмотрит кто-нибудь программу и скажет какие есть ошибки.
0
alsav22
5419 / 4815 / 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;
    }
0
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;
    }
Отредактировал, но все равно не помогло те же ошибки
0
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
02.11.2013, 18:02 #10
Цитата Сообщение от JaySeven Посмотреть сообщение
те же ошибки
Те же - это какие?
0
Croessmah
Эксперт CЭксперт С++
13205 / 7476 / 839
Регистрация: 27.09.2012
Сообщений: 18,379
Записей в блоге: 3
Завершенные тесты: 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
JaySeven
1 / 1 / 0
Регистрация: 24.05.2013
Сообщений: 41
02.11.2013, 18:03  [ТС] #12
Цитата Сообщение от alsav22 Посмотреть сообщение
Те же - это какие?
Те, которые я в заголовке указал
0
alsav22
5419 / 4815 / 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;
}
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;
        }

какой результат ожидаете от
Чтобы программа после компиляции сразу не закрывалась
0
alsav22
5419 / 4815 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
02.11.2013, 18:05 #15
Цитата Сообщение от JaySeven Посмотреть сообщение
Те, которые я в заголовке указал
В каких местах кода? Разве в том коде, который я выложил?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.11.2013, 18:05
Привет! Вот еще темы с ответами:

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

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

несоответствия в условиях - Delphi
Вообщем такая проблема что неправильно выполняется условие. Нужно подсчитать сумму элементов(с 1 по 10) из 2-й строки StringGrid1'а. Далее...

цвет заливки несоответствия - PHP
есть фотоальбом у фоток есть превью превью сделаные скритом где несоответствие заливается белым вот в чем вопрос у меня задний фон...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
02.11.2013, 18:05
Ответ Создать тему
Опции темы

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