Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 1
Регистрация: 15.01.2018
Сообщений: 30
1

Ввод чисел (численных данных) через указатель

23.02.2018, 13:28. Показов 691. Ответов 1

Здравствуйте. Согласно заданию, мне было нужно составить программу, в которой будут использоваться структура и объединение. Также необходимо использование различных указателей. Возникла проблема с вводом чисел через указатели на их тип. В листинге программы указаны объявления этих указателей (строки 15 и 26) и места ввода данных(строки 48 и 74). Если это возможно, то как реализовать ввод данных с помощью этих указателей?
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
#include <iostream>
#include <cstdio>
#include <locale.h>
#include <conio.h>
 
 using namespace std;
 
 const int N=10;
 
 struct PlaneDescr 
{
     char *PlaneName;
     float FlightDistance;
     int PlaceNumb;
     int *EngineNumb; //объявление указателя на тип int как составляющего структуры
     double DepartureTime;
     int FlightHours;
     int FlightMinutes;
     double ArrivalTime;
 } Planes[N];
 
 union
 {
     char CompanyName[20];
     float Rating;
     double *TicketPrice; //объявление указателя на тип double как составляющего объединения
 } PlaneExtra[N];
 
 int main()
{
     setlocale(LC_ALL, "Russian");
     PlaneDescr *PointPlane=new PlaneDescr;
      
     cout<<"\n\t\t\tВВОД ИНФОРМАЦИИ В СТРУКТУРУ\n"<<endl;
     int Count=0;
     int a=1;
         while (a&&Count<N)
{
            cout<<"Введите название самолёта: ";
            cin>>Planes[Count].PlaneName;
            cout<<"Введите дальность полёта (через '.', в километрах): ";
            cin>>PointPlane->FlightDistance;
            cin.ignore();
            cout<<"Введите количество мест: ";
            cin>>Planes[Count].PlaceNumb;
            cin.ignore();
            cout<<"Введите количество двигателей: ";
            cin>>PointPlane->EngineNumb; //ошибка error C2678: бинарный ">>": не найден оператор, принимающий левый операнд типа "std::istream" (или приемлемое преобразование отсутствует)
            cin.ignore();
            cout<<"Введите время вылета (через '.'): ";
            cin>>Planes[Count].DepartureTime;
            cin.ignore();
            cout<<"Введите количество часов, проведённых в воздухе (через '.'): ";
            cin>>PointPlane->FlightHours;
            cin.ignore();
            cout<<"Введите количество минут, проведённых в воздухе (через '.'): ";
            cin>>Planes[Count].FlightMinutes;
            cin.ignore();
            cout<<"Введите время прибытия (через '.'): ";
            cin>>PointPlane->ArrivalTime;
            cin.ignore();
            cout<<"\nХотите ввести дополнительную информацию о самолёте? y/n"<<endl;
            char ans1=getche();
            cout<<endl;
            if (ans1=='n'||ans1=='N') a=0;
            else
            {
                cout<<"Введите название авиакомпании: ";
                cin.getline(PlaneExtra[Count].CompanyName, sizeof(PlaneExtra[Count].CompanyName)); 
                cout<<"Введите рейтинг авиакомпании (в %): ";
                cin>>PlaneExtra[Count].Rating;
                cin.ignore();
                cout<<"Введите стоимость билета (в $): ";
                cin>>PlaneExtra[Count].TicketPrice; //точно такая же ошибка, что и в строке 48
                cin.ignore();
            }
            cout<<"\nЖелаете продолжить ввод информации? y/n"<<endl;
            char ans2=getche();
            if (ans2=='n'||ans2=='N') a=0;
            cout<<endl;
            cout<<endl;
            Count++;
        }
    cout<<"\n\n\t\t\tВЫВОД ЭЛЕМЕНТОВ МАССИВА СТРУКТУР\n"<<endl;
    for (int i=0; i<Count; i++)
    {
        cout<<"\t\t\t\tДАННЫЕ О САМОЛЁТЕ №"<<i+1<<endl;
        cout<<"\t\tНазвание самолёта: "<<Planes[i].PlaneName<<"\tДальность полёта: "<<Planes[i].FlightDistance<<" км"<<endl;
        cout<<"\t\tКоличество мест: "<<Planes[i].PlaceNumb<<"\tКоличество двигателей: "<<Planes[i].EngineNumb<<endl;
        cout<<"\t\tВремя вылета: "<<Planes[i].DepartureTime<<"\tВремя в воздухе: "<<Planes[i].FlightHours<<" час(ов)"<<" "<<Planes[i].FlightMinutes<<" минут"<<endl;
        cout<<"\t\tВремя прибытия: "<<Planes[i].ArrivalTime<<endl;
        if(PlaneExtra[Count].TicketPrice!=0&&PlaneExtra[Count].Rating!=0)
        {
            cout<<"\n\t\t[ДОПОЛНИТЕЛЬНЫЕ ДАННЫЕ О САМОЛЁТЕ №"<<i+1<<"]"<<endl;
            cout<<"\t\tНазвание авиакомпании: "<<PlaneExtra[i].CompanyName<<"\tРейтинг авиакомпании: "<<PlaneExtra[i].Rating<<" %"<<endl;
            cout<<"\t\tСтоимость билета: "<<PlaneExtra[i].TicketPrice<<" $"<<endl;
        }
        cout<<endl;
        cout<<endl;
    }
    delete [] PointPlane;
    system ("pause");
    return 0;
 }
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.02.2018, 13:28
Ответы с готовыми решениями:

Ввод данных в одномерный массив через указатель
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &quot;cmath&quot; #include &quot;conio.h&quot; using namespace...

Ввод данных в структуру через указатель на структуру
#include &quot;stdafx.h&quot; #include &quot;ctime&quot; #include &quot;iostream&quot; #pragma warning(disable : 4996) ...

Ввод массива через указатель
написал такой код, но после ввода сразу закрывается программа с ошибкой.почему так? int n,a; ...

Потоковый ввод в контейнер через указатель
Выдает ошибку void tretichServer::changeLogs(QVector&lt;float&gt; *x_, QVector&lt;float&gt; *y_,...

1
6988 / 6027 / 2737
Регистрация: 14.04.2014
Сообщений: 25,792
23.02.2018, 13:57 2
Указатель должен быть, во-первых, инициализирован, во-вторых, разыменован при вводе.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.02.2018, 13:57

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Передача данных через указатель
#include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;string&gt; #include &lt;fstream&gt;...

В массиве найти сумму чисел кратных трем через указатель
Ребят, нужно написать код с использованием указателей. Сама задача вот такая: Найти сумму...

Голосовой ввод данных и вывод данных через динамики
На Android есть приложение &quot;Pasal N-IDE&quot; Там есть модули для ввода и вывода данных через микрофон...

Вывести минимальный элемент введенного с клавиатуры массива целых чисел (через указатель)
Как написать программу, которая выводит минимальный элемент введенного с клавиатуры массива целых...


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

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

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