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

Почему с помощью std::cin не получается считать с клавиатуры массив пользовательского типа?

24.09.2016, 20:10. Показов 1717. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Нашёл приме объвления класса комп. чисел и выполнения основных операций. Я пытал преобразовать коод таким образом, чтобы из текстового файла считывались данные в формате (1,2) что означает 1+2i, но почему то вообще даже не получается считать из файла хоть как-то. Привожу пример программы не изменённой:
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
class Complex
{ 
private:
    float realPart, imaginaryPart; // описание класса Complex
    int j;
public:
Complex(); // конструктор
Complex(float real_part,float im_part); // конструктор
Complex operator + (Complex) const;
Complex operator - (Complex ) const;
 
float getReal(){return realPart;};
float getIm(){return imaginaryPart;};
void show();
void input();
 
};
Complex Complex::operator+ (Complex d) const
{
    return Complex(realPart+d.getReal(), imaginaryPart+d.getIm()); 
}
Complex Complex::operator- (Complex d) const
{
    return Complex(realPart-d.getReal(), imaginaryPart-d.getIm()); 
}
Complex :: Complex() // определение конструктора
{ 
    realPart = 0;
    imaginaryPart = 0;
}
 
Complex :: Complex(float real_part,float im_part) // определение конструктора
{ 
    realPart =  real_part;
    imaginaryPart = im_part;
}
 
 
 
void Complex :: input() // описание функции input
{
std::cout <<"Введите действительную часть комплекстного числа\n";
std::cin>> realPart;
std::cout <<"Введите мнимую часть комплексного числа \n";
std::cin>> imaginaryPart;
}
 
using namespace std;
 
void Complex :: show()
{
printf_s("(%.3f+%.3f*j)\n", realPart, imaginaryPart);
}
int main()
{
setlocale(LC_ALL, "Russian");
char namesob[50];
Complex a,b,c,d;
/*cin>> namesob;
    strcat_s(namesob, ".txt");
    ifstream sch;
    sch.open(namesob);
    if(!sch)
        cout<<"Файл не может быть открыт"<<endl;
    else
    {
    while(!sch.eof())
    {
        sch>>a;
        //a.input();
    }
    }
    //k=k-1;
    sch.close();*/
a.input();
b.input();
c=a+b;
d=a-b;
c.show();
d.show();
_getch();
return 0;
}
Как видно пытался считать из файла и сразу записать в комплексную величину а . компилятор ругается. А если мне надо ввести всё это в массив комплексных чисел, то как объявлять. В исходном примере действительная и мнимая часть отдельно вводятся с клавиатуры.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.09.2016, 20:10
Ответы с готовыми решениями:

Считать строку с пробелами с помощью Std::cin
перехожу с чистого си на плюсы, начал разбираться с cin и заметил такую штуку что она читает введенную строку только до первого же...

Считать число с клавиатуры, не присвоив при этом это число никакой переменной - std::cin
Всем привет. Можно ли в с++ std::cin - ом считать какое-либо число, и при этом не присвоив это число никакой переменной?

Как заставить std::set хранить объекты пользовательского типа?
Здравствуйте. Как заставить set хранить объекты некоторого класса или структуры? #include &lt;iostream&gt; #include...

4
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
24.09.2016, 20:26
Лучший ответ Сообщение было отмечено gru74ik как решение

Решение

Чтобы так работало, перегрузи операцию >> для класса.
1
0 / 0 / 0
Регистрация: 23.11.2014
Сообщений: 260
Записей в блоге: 1
24.09.2016, 21:36  [ТС]
nmcf, Спаисбо за ответ, добавил, не ругается больше. ПОдскажите пожалуйста как сделать, чтобы комплексные числа обрабатывались как двумерный массив. Пытался объявить вот так Complex a[100][500]. Ничего не получилось Укажите пожалуйста в чём моя ошибка.

Добавлено через 23 минуты
nmcf, И ещё один вопросик. В текстовом файле если вводить данные так 2 3, то хоршо понимает где действ , а где мнимая часть, а если (2,3) то не понимает. пытался преобразовать через cin.ignore() результатов не дало.. ЧТо подскажете по этому поводу?
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
24.09.2016, 21:50
Цитата Сообщение от Non_stop Посмотреть сообщение
cin.ignore() результатов не дало..
cin.ignore() какое отношение к чтению из файла имеет?
1
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
24.09.2016, 22:12
Цитата Сообщение от Non_stop Посмотреть сообщение
Пытался объявить вот так Complex a[100][500]. Ничего не получилось
Что именно не получилось? Какая ошибка?
Цитата Сообщение от Non_stop Посмотреть сообщение
а если (2,3) то не понимает
А зачем эти лишние символы? Только время тратить на их набор. Надо их пропускать тогда.
C++
1
2
3
4
5
char ch;
float realPart, imaginaryPart;
 
cin >> ch >> realPart >> ch >> imaginaryPart;
cin.ignore(numeric_limits<streamsize>::max(), '\n');
И лучше не используй запятую. Точку с запятой возьми или ещё что-то.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.09.2016, 22:12
Помогаю со студенческими работами здесь

Можно ли ввести с помощью std::cin значения элементов двух массивов?
Скажите можно ли вести с помощью cin два массива? Я начал вот делать, но почему то водится только один массив.Что может тут быть...

Каким компонентом и как вывести std::list параметризованный объектом пользовательского типа?
Создал класс: class Dannie { public: int Et; int EtMy; int KK; int KKMy; double P; double PMy;

Не воспринимает ни std::cout, ни std::cin. Вобщем ничего из std. Также не понимает iostream
Здравствуйте! Я хотел начать изучать язык C++. Набрал литературы. Установил Microsoft Visual C++ 2005 Express Edition. Образ диска...

Защита от дурака при вводе текста с помощью: cin.get cin.clear cin.sync
Доброго времени суток. На С++ учусь с недавних пор. Имеется стандартная &quot;защита от дурака&quot; на ввод. Не пойму предназначение cin.get()...

Необходимо задать массив типа 100×100, считать с клавиатуры натуральное число n≤100, построить соответствующую матрицу типа n×n и вывести ее на экран
37. Решить задачу в Turbo Pascal.Необходимо задать массив типа 100×100, считать с клавиатуры натуральное число n≤100, построить...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru