Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.11.2011, 22:14   #1
L6go1as
Форумчанин
 
Регистрация: 20.10.2011
Сообщений: 433
По умолчанию Когда cin >> ошибка

Уважаемые, почему cin ">>" вдруг стало ошибкой ? (error ">>" no operaror matches these operands)
Конкретно вот в этом коде:

Код:
#include <iostream>
 
using namespace std;

const int number = 20;
struct funs {
	char name[number];
	int money[number];
};

int main()
{
	cout << "How much funs came to us?" << endl;
	int gold = 0;
	cin >> gold;

	funs *ps = new funs[gold];

	for (int i = 0; i < gold; i++)
	{
		cout << "Please enter name: ";
		cin >> ps[i].name;
		cout << "Please enter amount of money: ";
		cin >> ps[i].money;
	}

	delete [] ps;
	system("pause");
}

Последний раз редактировалось L6go1as; 23.11.2011 в 22:16.
L6go1as вне форума Ответить с цитированием
Старый 23.11.2011, 22:47   #2
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

L6go1as

Уважаемые, почему cin ">>" вдруг стало ошибкой ? (error ">>" no operaror matches these operands)

Я полагаю, что с момента принятия стандарта c++

оно кагбэ в массив не умеет вводить. ): "Вот такая, вот, загогулина, понимаешь..." (c)
Rififi вне форума Ответить с цитированием
Старый 23.11.2011, 22:58   #3
L6go1as
Форумчанин
 
Регистрация: 20.10.2011
Сообщений: 433
По умолчанию

Эм, как тогда предлагаете вводить данные в массив структур ?

Причем первый ввод cin >> ps[i].name - работает, а вот второй ввод cin >> ps[i].money уже нет ...
L6go1as вне форума Ответить с цитированием
Старый 23.11.2011, 23:03   #4
_Ч_
Форумчанин
 
Регистрация: 07.01.2010
Сообщений: 141
По умолчанию

ps[i].name = это char*, а ps[i].money - int*
у потоков особые отношения с указателями на символы. для них оператор >> определен, а вот для указателей на инты - нет
_Ч_ вне форума Ответить с цитированием
Старый 23.11.2011, 23:09   #5
L6go1as
Форумчанин
 
Регистрация: 20.10.2011
Сообщений: 433
По умолчанию

Хм, ошибку нашел.

Она была в "int money[number];", стоило убрать [number] - все заработало ...
L6go1as вне форума Ответить с цитированием
Старый 23.11.2011, 23:29   #6
_Ч_
Форумчанин
 
Регистрация: 07.01.2010
Сообщений: 141
По умолчанию

ну да. после этого ps[i].money стало интом, а для инта оператор ввода есть.
_Ч_ вне форума Ответить с цитированием
Старый 23.11.2011, 23:49   #7
L6go1as
Форумчанин
 
Регистрация: 20.10.2011
Сообщений: 433
По умолчанию

А не подскажите, можно ли все выкладки с if спрятать в функции ?
Что бы можно было ввести в main функции, а вот выводить через подключаемые функции.

Код:
#include <iostream>

using namespace std;

const int number = 20;

struct investors
{
	char name[number];
	double money;
};

int main()
{
	cout << "How many funs came to us: ";
	int list = 0;
	cin >> list;

	investors *ps = new investors[list];

	int i;
	for (i = 0; i < list; i++)
	{
		cout << "Please enter name of " << i+1 << " investor: ";
		cin >> ps[i].name;
		cout << "Please enter amount of money: ";
		cin >> ps[i].money;
	}

	cout << "\nOur famouse investors:" << endl;
	for (i = 0; i < list; i++)
	{
		if (ps[i].money > 10000)
		{
			cout << ps[i].name << endl;
		}
		else cout << "No!" << endl;
	}
	
	cout << "\nOur investors:" << endl;
	for (i = 0; i < list; i++)
	{
		if (ps[i].money < 10000)
		{
			cout << ps[i].name << endl;
		}
		else cout << "No!" << endl;
	}
	
	cout << "\n";
	delete [] ps;
	system("pause");
}
L6go1as вне форума Ответить с цитированием
Старый 23.11.2011, 23:56   #8
_Ч_
Форумчанин
 
Регистрация: 07.01.2010
Сообщений: 141
По умолчанию

не совсем понял вопроса, но выделение чего-то в ф-ии\классы - всегда хорошо.
ваш код мог бы выглядеть так:

Код:
	int i;
	for (i = 0; i < list; i++)
             InputInvestor(&ps[i]);

	cout << "\nOur famouse investors:" << endl;
	for (i = 0; i < list; i++)
              FamouseЧегоТоТам(&ps[i])

// ну и так далее.
В main-е не было бы кучи кода, который мешает понимать, что же происходит. У вас его пока что мало. Но тут на форуме обычно выкладывают длиннющие портянки фором, ифов и прочего кода, который можно было бы рассувать по ф-иям.
_Ч_ вне форума Ответить с цитированием
Старый 24.11.2011, 00:09   #9
L6go1as
Форумчанин
 
Регистрация: 20.10.2011
Сообщений: 433
По умолчанию

А не могли бы показать полный пример работы с функциями в моем случае ?
Просто если переносить как Вы показали то программа отказывается работать, ссылаясь на не определенные значения в самих функциях и на на большое кол-во аргументов в вызываемой функции.
L6go1as вне форума Ответить с цитированием
Старый 24.11.2011, 00:27   #10
_Ч_
Форумчанин
 
Регистрация: 07.01.2010
Сообщений: 141
По умолчанию

вот например как можно было бы переделать тот код, который в самом начале топика

добавленны ф-ии для ввода и печати.

Код:
using namespace std;

const int number = 20;
struct funs
{
  char name[number];
  int money;
};

void InputFuns(funs* f)
{
  cout << "Please enter name: ";
  cin >> f->name;
  cout << "Please enter amount of money: ";
  cin >> f->money;
}

void PrintFuns(const funs* f)
{
  cout << "funs:" << endl;
  cout << "\t" << f->name << endl;
  cout << "\t" << f->money << endl;
}

int main()
{
  cout << "How much funs came to us?" << endl;
  int gold = 0;
  cin >> gold;

  funs *ps = new funs[gold];

  for (int i = 0; i < gold; i++)
    InputFuns(&ps[i]);

  for (int i = 0; i < gold; i++)
    PrintFuns(&ps[i]);

  delete [] ps;
  system("pause");

  return 0;
}
_Ч_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
cin и cin.get NightEagle Общие вопросы C/C++ 8 30.03.2011 18:23
Ошибка когда вставляю на страницу ссесию. Bushel PHP 2 17.11.2010 10:07
cin ReaktiV Общие вопросы C/C++ 3 31.05.2010 15:57
Почему когда integer cтановиться =100001,выходит ошибка Дима я Общие вопросы Delphi 8 21.12.2009 11:33
Как узнать когда браузер скачивает, а когда нет? iPod Работа с сетью в Delphi 1 07.05.2007 15:16