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

Нюансы синтаксиса: как сравнить каждый элемент массива с переменной в условии оператора if ?

16.09.2016, 10:22. Показов 1050. Ответов 8
Метки нет (Все метки)

Привет всем дорогие друзья с толкнулся с такой проблемой, начал ходить на уроки с++ и приступил к изучению массива
сталкнулся с такой проблемой, учитель сказал что код в порядке но массив не работает так как один из 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
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
#include <iostream>
#include <string>
using namespace std;
int main()
 
{
 
    string h;
metka:
    cout << "prognos pogodi" << endl;
    cin >> h;
 
    string prognos[] = { "ponedelnik", "vtornik", "sreda", "chetverk", "patynica", "sybota" };
 
 
 
 
    if (h != prognos[0,1,2,3,4,5])
    {
        cout << "ne verno" << endl;
    }
 
 
    else if (h == prognos[0])
    {
        cout << "dnem + 30    noh +29 " << endl;
    }
    else if (h == prognos[1])
    {
        cout << "dnem + 35    noh +28 " << endl;
    }
 
    else if (h == prognos[2])
    {
        cout << "dnem + 30    noh +25 " << endl;
    }
    else if (h == prognos[3])
    {
        cout << "dnem + 26    noh +19 " << endl;
    }
    else if (h == prognos[4])
    {
        cout << "dnem + 24    noh +16 " << endl;
    }
    else    if (h == prognos[5])
    {
        cout << "dnem + 30    noh +29 " << endl;
    }
 
 
 
    goto metka;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.09.2016, 10:22
Ответы с готовыми решениями:

Нюансы синтаксиса: что значит std::cin в условии цикла while?
do { int v1, v2; cout &lt;&lt; &quot;Please enter two numbers of sum:&quot;; if (cin &gt;&gt; v1, v2) cout...

Нюансы синтаксиса: оператор & после переменной
Здравствуйте, разбираю исходник одной программы, не могу понять, что означает оператор &amp; после...

Осуществить перебор по элементам массива и каждый элемент сравнить с регуляркой
Имеется строковый массив, надо осуществить перебор по элементам массива и каждый элемент сравнить с...

Сравнить каждый элемент массива и присвоить ему новое значение в соотвествии с условиями
Добрый день! Задача - сравнить каждый элемент массива и присвоить ему новое значение в...

__________________

Записывайтесь на профессиональные курсы C++ разработчиков
8
381 / 275 / 478
Регистрация: 09.05.2014
Сообщений: 769
16.09.2016, 11:02 2
Лучший ответ Сообщение было отмечено Chip_men как решение

Решение

Chip_men, строку 18 поменяйте на
C++
1
 if (h != prognos[0]&&h != prognos[1]&&h != prognos[2]&&h !=prognos[3]&&h != prognos[4]&&h != prognos[5])
P.S.- вместо лестницы if-else тут лучше использовать swich.
P.P.S.- за goto учитель должен бить по рукам.
1
0 / 0 / 0
Регистрация: 04.01.2016
Сообщений: 36
16.09.2016, 11:24  [ТС] 3
lawr, а что тогда использовать вместо go to return 0 лили system pause???
спасибо вам огромное
0
381 / 275 / 478
Регистрация: 09.05.2014
Сообщений: 769
16.09.2016, 11:28 4
Chip_men, в данном случае while (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
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
#include <iostream>
#include <string>
using namespace std;
int main()
 
{
 
    string h;
while (1){
    cout << "prognos pogodi" << endl;
    cin >> h;
 
    string prognos[] = { "ponedelnik", "vtornik", "sreda", "chetverk", "patynica", "sybota" };
 
 
 
 
    if (h != prognos[0,1,2,3,4,5])
    {
        cout << "ne verno" << endl;
    }
 
 
    else if (h == prognos[0])
    {
        cout << "dnem + 30    noh +29 " << endl;
    }
    else if (h == prognos[1])
    {
        cout << "dnem + 35    noh +28 " << endl;
    }
 
    else if (h == prognos[2])
    {
        cout << "dnem + 30    noh +25 " << endl;
    }
    else if (h == prognos[3])
    {
        cout << "dnem + 26    noh +19 " << endl;
    }
    else if (h == prognos[4])
    {
        cout << "dnem + 24    noh +16 " << endl;
    }
    else    if (h == prognos[5])
    {
        cout << "dnem + 30    noh +29 " << endl;
    }
}
}
system pause используется для того, чтобы консоль не закрывалась сразу после завершения программы, а return 0- это собственно нормальное завершение main.
0
58 / 16 / 26
Регистрация: 07.02.2015
Сообщений: 345
16.09.2016, 11:29 5
Вместе можно

C++
1
2
system("pause");
return 0
0
0 / 0 / 0
Регистрация: 04.01.2016
Сообщений: 36
16.09.2016, 11:33  [ТС] 6
lawr, нет учитель хороший он очень хорошо объясняет но все карты не раскрывает и за этого он даёт мне иструментарий которуму я у него учусь и даёт задачу а я должен ёё выполнеть после чего он мне указывает на мои минусы. Честно сказать я очень мало трачу время на это в частности не знаю как у меня получаеться выполнить задачу хоть я трачу минут 10-15 на это дело и когда он проверяет он говорит это это - ищи ощибку и сделай легче и ты напрягаешь мозг и делаешь идеально написсаный код без всякого калла просто когда я делаю за 10-15 минут получаеться шаблон как выше а когда трачу 20-40 мин получаеться очень даже отлично это немного моя вина А вам спасибо у меня было в голове также сделать но я думал что с 18 строкой все впорядке оказываеться синтаксис нарушался.
0
С чаем беда...
Эксперт CЭксперт С++
8636 / 4310 / 1186
Регистрация: 18.10.2014
Сообщений: 9,363
16.09.2016, 19:38 7
Цитата Сообщение от Chip_men Посмотреть сообщение
C++
1
if (h != prognos[0,1,2,3,4,5])


Что имелось в виду под этим сравнением?
0
381 / 275 / 478
Регистрация: 09.05.2014
Сообщений: 769
16.09.2016, 20:24 8
TheCalligrapher, зато учитель хороший
0
0 / 0 / 0
Регистрация: 04.01.2016
Сообщений: 36
17.09.2016, 13:39  [ТС] 9
lawr,
к этому я пришел сам, он подсказал что в одном из if есть проблема из за чего не работает массив сказал чтоб я сам разобрался
и нашел ошибку
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.09.2016, 13:39

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Нюансы синтаксиса: наиболее правильный способ передачи массива в функцию
Подскажите, пожалуйста, что считается более комильфошным, правильным: объявить указатели на массивы...

Нюансы синтаксиса: куда прижимать звёздочку при объявлении указателя - к имени типа или к имени переменной?
Скажите, пожалуйста, в чём отличие таких записей: int *px int* px int *px = new int int *px =...

Сравнить каждый элемент массива из 20 целых чисел с его правым соседом и поменяь местами при несовпадении. Ошибка.
Сравнить каждый элемент массива из 20 целых чисел с его правым соседом и меняющий их местами, если...

Нюансы синтаксиса: как напечатать логическое И в C++?
Как напечатать логическое И в с++?


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

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

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