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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 20.06.2015, 22:13   #1
Fantom_pamyati
 
Регистрация: 18.06.2015
Сообщений: 9
По умолчанию Ошибка C2296

Прошу подсказать студенту, где у меня ошибка! ))) Только, плиз, не пишите код - самому разобраться надо, чтоб таких глупостей не делать! Заранее благодарен!

ЗЫ. Да, гуглил, да, форум читал, да, перевел ошибку, нет, не понял где ло.....ошибся...

Код:
/*Найти все двузначные числа, сумма квадратов цифр которых делится на 13*/

#include <iostream>
#include <math.h>

using std::cout;
using std::cin;
using std::endl;
using std::pow;

void main(){

	for (int x = 10; x < 100 && (pow(x/10,2)+pow(x%10,2)) % 13 = 0; x++)

		//сумма цифр двузначного числа x: (x/10)+(x%10)
			//сумма квадратов цифр двузначного числа x: pow((x/10),2)+pow((x%10),2)
			//сумма квадратов цифр двузначного числа x делится на 13 без остатка: (pow((x/10),2)+pow((x%10),2))%13 = 0

		cout << x << endl;
}

Последний раз редактировалось Вадим Мошев; 20.06.2015 в 23:54.
Fantom_pamyati вне форума
Старый 20.06.2015, 22:22   #2
miss twin
Пользователь
 
Регистрация: 19.06.2015
Сообщений: 15
По умолчанию

1. После первой точки с запятой у фора условие выхода - т.е. цифры выводится будут до первого нужного
2. Сравнение в С++ - это ==, а не =
miss twin вне форума
Старый 20.06.2015, 22:29   #3
Fantom_pamyati
 
Регистрация: 18.06.2015
Сообщений: 9
По умолчанию

Цитата:
Сообщение от miss twin Посмотреть сообщение
1. После первой точки с запятой у фора условие выхода - т.е. цифры выводится будут до первого нужного
2. Сравнение в С++ - это ==, а не =
1. Да, но, скорее, пока условие выполняется в рамках диапазона.
2. Не помогло.... (((
Fantom_pamyati вне форума
Старый 21.06.2015, 00:02   #4
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Я C++ плохо знаю, поэтому вряд ли смогу дать полезный совет.
Меня смущают конструкции в начале листинга программы:
Код:
using std::cout;
using std::cin;
using std::endl;
using std::pow;
Не знаю, как правильно, но, может быть, убрать эти конструкции, а вместо них написать using namespace std?

Add. Только что погуглил и почитал результаты поиска по диагонали. Эта ошибка означает: "Недопустимый левый операнд".
Тут надо знать, какая строка подсвечивается. Лично я бы придрался вот к этому:
Код:
for (int x = 10; x < 100 && (pow(x/10,2)+pow(x%10,2)) % 13 = 0; x++)
Я всё же советую заключать операнды логических выражений (в вашем случае && - логическое И) в скобки. Попробуйте.

То есть, я предлагаю такой вариант:
Код:
for (int x = 10; (x < 100) && (pow(x/10,2) + pow(x%10,2) % 13 == 0); x++)
Ещё хотел бы обратить ваше внимание на вторую часть условия (после &&) - вы там неправильно расставили скобки.
Ну и про сравнение вас уже сказали

Последний раз редактировалось Вадим Мошев; 21.06.2015 в 00:13.
Вадим Мошев вне форума
Старый 21.06.2015, 00:25   #5
Fantom_pamyati
 
Регистрация: 18.06.2015
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Вадим Мошев Посмотреть сообщение
Add. Только что погуглил и почитал результаты поиска по диагонали. Эта ошибка означает: "Недопустимый левый операнд".
Тут надо знать, какая строка подсвечивается. Лично я бы придрался вот к этому:
Код:
for (int x = 10; x < 100 && (pow(x/10,2)+pow(x%10,2)) % 13 = 0; x++)
Я всё же советую заключать операнды логических выражений (в вашем случае && - логическое И) в скобки. Попробуйте.

То есть, я предлагаю такой вариант:
Код:
for (int x = 10; (x < 100) && (pow(x/10,2) + pow(x%10,2) % 13 == 0); x++)
Ещё хотел бы обратить ваше внимание на вторую часть условия (после &&) - вы там неправильно расставили скобки.
Ну и про сравнение вас уже сказали

Расставление скобок не помогло....
Fantom_pamyati вне форума
Старый 21.06.2015, 00:38   #6
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Так, я напутал приоритет операций:
Код:
(x < 100) && ( ( pow(x/10,2) + pow(x%10,2) ) % 13 == 0)
Да, и покажите строку, которая подсвечивается при ошибке.
Вадим Мошев вне форума
Старый 21.06.2015, 00:50   #7
Fantom_pamyati
 
Регистрация: 18.06.2015
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Вадим Мошев Посмотреть сообщение
Так, я напутал приоритет операций:
Код:
(x < 100) && ( ( pow(x/10,2) + pow(x%10,2) ) % 13 == 0)
Да, и покажите строку, которая подсвечивается при ошибке.
Вы правы, именно эта! error C2296: '%' : illegal, left operand has type 'double' - подчеркивает вторую скобку после И в Вашем коде.... (((
Fantom_pamyati вне форума
Старый 21.06.2015, 00:56   #8
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Всё, я понял.
Функция pow возвращает результат типа double, а оператор % (получить остаток) требует, чтобы его операнды были типа int (целого, а не действительного)
Здесь можно вообще обойтись без Pow.
Попробуйте так написать:
Код:
(x < 100) && ( ( (x/10)*(x/10) + (x%10)*(x%10) ) % 13 == 0)
Вадим Мошев вне форума
Старый 21.06.2015, 01:09   #9
Fantom_pamyati
 
Регистрация: 18.06.2015
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Вадим Мошев Посмотреть сообщение
Всё, я понял.
Функция pow возвращает результат типа double, а оператор % (получить остаток) требует, чтобы его операнды были типа int (целого, а не действительного)
Здесь можно вообще обойтись без Pow.
Попробуйте так написать:
Код:
(x < 100) && ( ( (x/10)*(x/10) + (x%10)*(x%10) ) % 13 == 0)
Благодарю, так не ругается! Значит, введу дополнительную переменную и переприсвою тип!
Fantom_pamyati вне форума
Старый 21.06.2015, 01:13   #10
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Зачем? Что вы хотите этим добиться?
Вадим Мошев вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Где ошибка в этом исходном коде на языке Си? Или ошибка в Excel? ArchiCurtis Помощь студентам 2 07.04.2012 14:16
Ошибка run-time Error 1004 общая ошибка ODBC kaval88 Microsoft Office Excel 0 27.02.2011 20:20
Ошибка в коде, ошибка в css или это проблема с совместимостью с браузерами? ankris HTML и CSS 5 23.11.2010 16:58
Это ошибка Delphi или моя ошибка??? bloodeagle Общие вопросы Delphi 3 12.11.2009 15:26
...Ошибка 101 (net::ERR_CONNECTION_RESET): Неизвестная ошибка... infrared Помощь студентам 0 16.04.2009 17:44