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

"warning C4804" при x <= 1 - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
xen0n
0 / 0 / 0
Регистрация: 25.07.2011
Сообщений: 7
26.07.2011, 12:37     "warning C4804" при x <= 1 #1
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
#include <iostream>;
using namespace std;
 
int main( void )
{
    int x; //исходное число
    int z; //ответ
    cin>>x;
 
    if ( x >= 1 || x <= 100 || x % 3 = 0) { // от 1 до 100 и делится без остатка на 3
        z=x*2;
        cout<<z;
    }
    else {
        if ( x >= 1 || x <= 100 ) { //от 1 до 100, но не делится на 3 без остатка
        z=x*3;
        cout<<z;
        }
 
        else {
            z=x*(x % 100); //умножает x на остаток от деления x на 100
                cout<<z;
        }
         }
}
В программировании краб, пользуюсь visual c++ 10. Лог:
1>------ Build started: Project: if, Configuration: Debug Win32 ------
1> main.cpp
1>c:\users\xen0n\documents\visual studio 2010\projects\if\if\main.cpp(1): warning C4067: unexpected tokens following preprocessor directive - expected a newline
1>c:\users\xen0n\documents\visual studio 2010\projects\if\if\main.cpp(10): warning C4804: '<=' : unsafe use of type 'bool' in operation
1>c:\users\xen0n\documents\visual studio 2010\projects\if\if\main.cpp(10): error C2106: '=' : left operand must be l-value
1>c:\users\xen0n\documents\visual studio 2010\projects\if\if\main.cpp(15): warning C4804: '<=' : unsafe use of type 'bool' in operation
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
кроме того программа подчеркивает красненькой волнистой линией x который сразу после первого if, если навести курсор пишет "error: expression must be a modifiable value". Если поменять местами х и 1 (и знак соответственно), то подчеркнута будет уже 1.

Текст задачи:
Напишите код, умножающий исходное число на 2, если оно принадлежит интервалу от 1 до 100 (включительно) и делится нацело на 3; в противном случае умножает на три, если число принадлежит интервалу от 1 до 100, но не делится нацело на три; и наконец, умножает число на остаток от его деления на 100, если число не принадлежит интервалу от 1 до 100.(Подсказка: используйте вложенные операторы if.)
Поиск юзал.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
26.07.2011, 12:38     "warning C4804" при x <= 1 #2
C++
1
if ( x >= 1 || x <= 100 || x % 3 = 0)
А должно быть

C++
1
if ( x >= 1 || x <= 100 || x % 3 == 0)
После iostream ; не нужна

Ну и операции >= <= оберните в скобочки. Итого.

C++
1
if ( (x >= 1) || (x <= 100) || ((x % 3) == 0))
И в 15 строчке аналогично со скобками.
mimicria
return (true);
 Аватар для mimicria
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
26.07.2011, 12:39     "warning C4804" при x <= 1 #3
C++
1
x % 3 = 0
==

опоздал =(
Zverit
Уничтожитель печенек
 Аватар для Zverit
277 / 205 / 21
Регистрация: 07.02.2010
Сообщений: 723
26.07.2011, 12:42     "warning C4804" при x <= 1 #4
C++
1
]( x >= 1 || x <= 100 || x % 3 == 0)
Вы сделали присваивание нуля

Не по теме:

Во время.. кхм..

xen0n
0 / 0 / 0
Регистрация: 25.07.2011
Сообщений: 7
26.07.2011, 13:19  [ТС]     "warning C4804" при x <= 1 #5
спасибо, компилируется, но вот еще вопрос: где я ошибся?
не правильные ответы выдает. если x число от 1 до 100 и делится на 3, то умножить его на два - все верно. но если ввести число от 1 до 100 которое НЕ делится на 3, то по идее оно должно умножиться 3, но почему-то оно все равно умножается на два, а если ввести число больше 100, то оно все равно просто умножает на два.

простов книге задание это дали в теме, в которой вобще не рассказывали ни о больше, ни о меньше, ни о =, ни даже о самом if...

собственно нынешний код:
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
#include <iostream>
using namespace std;
 
int main( void )
{
    int x; //исходное число
    int z; //ответ 
    cin>>x;
 
    if ( (x >= 1) || (x <= 100) || ( ( x % 3 ) == 0) ) { // от 1 до 100 и делится без остатка на 3
        z=x*2;
        cout<<z;
    }
    else {
        if ( (x >= 1) || (x <= 100) ) { //от 1 до 100, но не делится на 3 без остатка
        z=x*3;
        cout<<z;
        }
 
        else {
            z=x*(x % 100); //умножает x на остаток от деления x на 100
                cout<<z;
        }
         }
    
 
}
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
26.07.2011, 13:22     "warning C4804" при x <= 1 #6
Цитата Сообщение от xen0n Посмотреть сообщение
не правильные ответы выдает. если x число от 1 до 100 и делится на 3, то
Все || заменить на &&
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.07.2011, 13:39     "warning C4804" при x <= 1
Еще ссылки по теме:

Warning C4244: =: преобразование "double" в "float", возможна потеря данных C++
Warning C4244: инициализация: преобразование "__int64" в "int", возможна потеря данных C++
При компиляции ошибка: C2228: left of ".real",".imag" must have struct/class/union C++

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

Или воспользуйтесь поиском по форуму:
xen0n
0 / 0 / 0
Регистрация: 25.07.2011
Сообщений: 7
26.07.2011, 13:39  [ТС]     "warning C4804" при x <= 1 #7
спасибо, помогло
Yandex
Объявления
26.07.2011, 13:39     "warning C4804" при x <= 1
Ответ Создать тему
Опции темы

Текущее время: 20:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru