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

Синтаксис в операторах while и do while - C++

Войти
Регистрация
Восстановить пароль
 
ijonhson
 Аватар для ijonhson
47 / 47 / 1
Регистрация: 09.03.2011
Сообщений: 584
06.01.2013, 04:18     Синтаксис в операторах while и do 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
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
#include <iostream.h>
#include <conio.h>
int main()
{
    system ("chcp 1251");
    char sym1;
    int sym4;
    cout<<"Морской бой\n"<<"попробуй разбомби вражеский корабль он спрятан среди ноликов\n";
    
    char a='o',b='o',c='o',a1='o',b1='o',c1='o',a2='o',b2='o',c2='o';
    cout<<"          "<<"a"<<"b"<<"c\n";
    cout<<"        1 "<<a<<b<<c<<"\n";
    cout<<"        2 "<<a1<<b1<<c1<<"\n";
    cout<<"        3 "<<a2<<b2<<c2<<"\n";
    
   do
   {
    cout<<"введи горизонтальный символ a,b,c\n";
    cin>>sym1;
    cout<<"введи вертикальную цифру 1,2,3\n";
    cin>>sym4;
    if (sym1=='a'&&sym4==1)
    {
             
                
                            a='*';
    cout<<"не попал \n";
    cout<<"          "<<"a"<<"b"<<"c\n";
    cout<<"        1 "<<a<<b<<c<<"\n";
    cout<<"        2 "<<a1<<b1<<c1<<"\n";
    cout<<"        3 "<<a2<<b2<<c2<<"\n";
    cout<<"поробуй еще\n";                        
                       
                }
    if (sym1=='a'&&sym4==2)
                {
  
                
                            a1='*';
    cout<<"не попал \n";
    cout<<"          "<<"a"<<"b"<<"c\n";
    cout<<"        1 "<<a<<b<<c<<"\n";
    cout<<"        2 "<<a1<<b1<<c1<<"\n";
    cout<<"        3 "<<a2<<b2<<c2<<"\n";
    cout<<"поробуй еще\n";                        
                       
                }
if (sym1=='a'&&sym4==3)
                {
  
                
                            a2='*';
    cout<<"не попал \n";
    cout<<"          "<<"a"<<"b"<<"c\n";
    cout<<"        1 "<<a<<b<<c<<"\n";
    cout<<"        2 "<<a1<<b1<<c1<<"\n";
    cout<<"        3 "<<a2<<b2<<c2<<"\n";
    cout<<"поробуй еще\n";                        
                       
                }
                if (sym1=='b'&&sym4==1)
                {
  
                
                            b='*';
    cout<<"не попал \n";
    cout<<"          "<<"a"<<"b"<<"c\n";
    cout<<"        1 "<<a<<b<<c<<"\n";
    cout<<"        2 "<<a1<<b1<<c1<<"\n";
    cout<<"        3 "<<a2<<b2<<c2<<"\n";
    cout<<"поробуй еще\n";                        
                       
                }
                if (sym1=='b'&&sym4==2)
                {
  
                
                            b1='*';
    cout<<"не попал \n";
    cout<<"          "<<"a"<<"b"<<"c\n";
    cout<<"        1 "<<a<<b<<c<<"\n";
    cout<<"        2 "<<a1<<b1<<c1<<"\n";
    cout<<"        3 "<<a2<<b2<<c2<<"\n";
    cout<<"поробуй еще\n";                        
                       
                }
                if (sym1=='b'&&sym4==3)
                {
  
                
                            b2='*';
    cout<<"не попал \n";
    cout<<"          "<<"a"<<"b"<<"c\n";
    cout<<"        1 "<<a<<b<<c<<"\n";
    cout<<"        2 "<<a1<<b1<<c1<<"\n";
    cout<<"        3 "<<a2<<b2<<c2<<"\n";
    cout<<"поробуй еще\n";                        
                       
                }
                if (sym1=='c'&&sym4==1)
                {
  
                
                            c='*';
    cout<<"не попал \n";
    cout<<"          "<<"a"<<"b"<<"c\n";
    cout<<"        1 "<<a<<b<<c<<"\n";
    cout<<"        2 "<<a1<<b1<<c1<<"\n";
    cout<<"        3 "<<a2<<b2<<c2<<"\n";
    cout<<"поробуй еще\n";                        
                       
                }
                if (sym1=='c'&&sym4==2)
                {
  
                
                            c1='*';
    cout<<"не попал \n";
    cout<<"          "<<"a"<<"b"<<"c\n";
    cout<<"        1 "<<a<<b<<c<<"\n";
    cout<<"        2 "<<a1<<b1<<c1<<"\n";
    cout<<"        3 "<<a2<<b2<<c2<<"\n";
    cout<<"поробуй еще\n";                        
                       
                }
                }
                while(sym1!='c'&&sym4!=3);//вот здесь не хочет сравнивать 
//неравно ли sym1 c,выходит из цикла при любом
//значении  sym1
    c2='x';
    cout<<"он долго тонул";
    cout<<"          "<<"a"<<"b"<<"c\n";
    cout<<"        1 "<<a<<b<<c<<"\n";
    cout<<"        2 "<<a1<<b1<<c1<<"\n";
    cout<<"        3 "<<a2<<b2<<c2<<"\n";
                
               
  
                                
    getch();
    return 0;
}
да и ешё моментик а нельзя ли этот папирус как нить укоротить заранее спасибо
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Stanis
52 / 41 / 8
Регистрация: 16.12.2012
Сообщений: 144
06.01.2013, 05:49     Синтаксис в операторах while и do while #2
C++
1
while(sym1!='c'&& sym4!=3);
While выполняется пока условие в скобках true , а у тебя оно сразу станет false и выйдет из while как только введешь в sym1='c' (и уже не важно какой sym4 условие while false ) , или если введешь в sym4=3 (то неважно что стоит в sym1 условие while станет false). Короче если ввел хоть одну 3 то выход , если ввел хоть один символ 'c' выход. Я бы добавил int exit переменную и в зависимости от ее значений выходил из while. Все что у тебя после while перенес бы в еще один if до while. В общем вот так бы сделал.
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
    setlocale(0,"");
    char sym1;
    int sym4;
    cout<<"Морской бой\n"<<"попробуй разбомби вражеский корабль он спрятан среди ноликов\n";
    int exit=0;
    char a='o',b='o',c='o',a1='o',b1='o',c1='o',a2='o',b2='o',c2='o';
    cout<<"          "<<"a"<<"b"<<"c\n";
    cout<<"        1 "<<a<<b<<c<<"\n";
    cout<<"        2 "<<a1<<b1<<c1<<"\n";
    cout<<"        3 "<<a2<<b2<<c2<<"\n";
    
   do
   {
            cout<<"введи горизонтальный символ a,b,c\n";
            cin>>sym1;
            cout<<"введи вертикальную цифру 1,2,3\n";
            cin>>sym4;
            if (sym1=='a'&&sym4==1)
               {               
                    a='*';
                    cout<<"не попал \n";
                    cout<<"          "<<"a"<<"b"<<"c\n";
                    cout<<"        1 "<<a<<b<<c<<"\n";
                    cout<<"        2 "<<a1<<b1<<c1<<"\n";
                    cout<<"        3 "<<a2<<b2<<c2<<"\n";
                    cout<<"попробуй еще\n";                                              
               }
            if (sym1=='a'&&sym4==2)
               {                
                    a1='*';
                    cout<<"не попал \n";
                    cout<<"          "<<"a"<<"b"<<"c\n";
                    cout<<"        1 "<<a<<b<<c<<"\n";
                    cout<<"        2 "<<a1<<b1<<c1<<"\n";
                    cout<<"        3 "<<a2<<b2<<c2<<"\n";
                    cout<<"попробуй еще\n";                                             
                }
            if (sym1=='a'&&sym4==3)
               {
                  
                    a2='*';
                    cout<<"не попал \n";
                    cout<<"          "<<"a"<<"b"<<"c\n";
                    cout<<"        1 "<<a<<b<<c<<"\n";
                    cout<<"        2 "<<a1<<b1<<c1<<"\n";
                    cout<<"        3 "<<a2<<b2<<c2<<"\n";
                    cout<<"попробуй еще\n";                                              
                }
            if (sym1=='b'&&sym4==1)
               {                
                    b='*';
                    cout<<"не попал \n";
                    cout<<"          "<<"a"<<"b"<<"c\n";
                    cout<<"        1 "<<a<<b<<c<<"\n";
                    cout<<"        2 "<<a1<<b1<<c1<<"\n";
                    cout<<"        3 "<<a2<<b2<<c2<<"\n";
                    cout<<"попробуй еще\n";                                              
               }
            if (sym1=='b'&&sym4==2)
               {                  
                    b1='*';
                    cout<<"не попал \n";
                    cout<<"          "<<"a"<<"b"<<"c\n";
                    cout<<"        1 "<<a<<b<<c<<"\n";
                    cout<<"        2 "<<a1<<b1<<c1<<"\n";
                    cout<<"        3 "<<a2<<b2<<c2<<"\n";
                    cout<<"поробуй еще\n";                                              
               }
            if (sym1=='b'&&sym4==3)
                {               
                    b2='*';
                    cout<<"не попал \n";
                    cout<<"          "<<"a"<<"b"<<"c\n";
                    cout<<"        1 "<<a<<b<<c<<"\n";
                    cout<<"        2 "<<a1<<b1<<c1<<"\n";
                    cout<<"        3 "<<a2<<b2<<c2<<"\n";
                    cout<<"попробуй еще\n";                                              
                }
            if (sym1=='c'&&sym4==1)
                {                
                    c='*';
                    cout<<"не попал \n";
                    cout<<"          "<<"a"<<"b"<<"c\n";
                    cout<<"        1 "<<a<<b<<c<<"\n";
                    cout<<"        2 "<<a1<<b1<<c1<<"\n";
                    cout<<"        3 "<<a2<<b2<<c2<<"\n";
                    cout<<"поробуй еще\n";                                               
                }
            if (sym1=='c'&&sym4==2)
                {
                    c1='*';
                    cout<<"не попал \n";
                    cout<<"          "<<"a"<<"b"<<"c\n";
                    cout<<"        1 "<<a<<b<<c<<"\n";
                    cout<<"        2 "<<a1<<b1<<c1<<"\n";
                    cout<<"        3 "<<a2<<b2<<c2<<"\n";
                    cout<<"попробуй еще\n";                                             
                }
            if (sym1=='c' && sym4==3)
               {
                    c2='x';
                    cout<<"он долго тонул";
                    cout<<"          "<<"a"<<"b"<<"c\n";
                    cout<<"        1 "<<a<<b<<c<<"\n";
                    cout<<"        2 "<<a1<<b1<<c1<<"\n";
                    cout<<"        3 "<<a2<<b2<<c2<<"\n";
                    exit=1;
               }
                                                         }
    while(exit!=1);//вот здесь не хочет сравнивать 
//неравно ли sym1 c,выходит из цикла при любом
//значении  sym1
    
                
               
  
                                
    getch();
    return 0;
}
0x10
2437 / 1609 / 235
Регистрация: 24.11.2012
Сообщений: 3,949
06.01.2013, 08:06     Синтаксис в операторах while и do while #3
По меньшей мере, надо почитать про функции...
ijonhson
 Аватар для ijonhson
47 / 47 / 1
Регистрация: 09.03.2011
Сообщений: 584
09.01.2013, 01:05  [ТС]     Синтаксис в операторах while и do while #4
да спасибо насчёт функций верно и ешё вопрос немного не по теме как создать массив символьных переменных именно переменных не констант это могло бы укоротить текст намного,чтоб в массиве можно было изменить по ходу выполнения программы значение ячейки символьного массива,может я пропустил что-то но вроде в учебнике описываются только строковые константы спасибо
Wolkodav
 Аватар для Wolkodav
600 / 453 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
09.01.2013, 01:30     Синтаксис в операторах while и do while #5
char Mas[размер массива] с указателями рановато наверное баловаться.
ну и типа strcpy(Mas,"Тут строка которую хотите");
или
char Mas[100]="Тут строка которую хотите";
ну можно считать с консоли(с файли не труднее(
потоковый cin>>Mas;
или printf("%s",Mas);
как-то так.

Добавлено через 46 секунд
Если я правильно понял вопрос.
ijonhson
 Аватар для ijonhson
47 / 47 / 1
Регистрация: 09.03.2011
Сообщений: 584
09.01.2013, 20:51  [ТС]     Синтаксис в операторах while и do while #6
извиняюсь неправильно поставил вопрос речь идёт о строковом массиве
Croessmah
09.01.2013, 20:53
  #7

Не по теме:

Цитата Сообщение от Wolkodav Посмотреть сообщение
или printf("%s",Mas);
и всё-таки
C++
1
scanf("%s",Mas);

Wolkodav
 Аватар для Wolkodav
600 / 453 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
09.01.2013, 21:08     Синтаксис в операторах while и do while #8
Да вы правы))

Добавлено через 44 секунды
А массив строк,
Ну char Mas[200][200] (просто двух мерный массив).
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.01.2013, 19:42     Синтаксис в операторах while и do while
Еще ссылки по теме:

C++ Какие ограничения накладываются на объявления в операторах
Есть ли ошибка в операторах C++
C++ синтаксис
Подскажите в условных операторах C++
ошибка в условных операторах C++

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

Или воспользуйтесь поиском по форуму:
ijonhson
 Аватар для ijonhson
47 / 47 / 1
Регистрация: 09.03.2011
Сообщений: 584
10.01.2013, 19:42  [ТС]     Синтаксис в операторах while и do while #9
всем спасибо за участие по чуть чуть продвигаюсь вперёд по учебнику функуции и массивы прошёл без проблем а вот на указателях остановился.
Прошу вас не думайте что я из-за каждой мелочи вас беспокою перед тем как задать этот вопрос я просмотрел первые 10 страниц google "передача двухмерного массива в функцию" и т.д. а также перечитал тему указателей в двух учебниках вроде всё правильно передаю в функцию массив,в функции указатели на аргумент функции,но компилятор ругается.
Если не затруднит в чём всё таки ошибка?
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
#include <iostream.h>
int outable(int coordx,int coordy,int finish,char *tabmassive1)
{
    cout<<"               123456789\n";
    int n=1;
    char target;
    target='*';
    for(int i=1;i<=9;i++)
    {
                        cout<<"              "<<n;
                        for(int k=1;k<=9;k++){
                                *tabmassive1[i][k]='o';
                                if(finish==1)
                                {
                                                     target='x';
                                                     }
                                tabmassive[coordx][coordy]=target;
                                cout<<tabmassive[i][k];
                                }
                                cout<<"\n";
            n=n+1;
                        }
        
}
int main()
{
    char tabmassive[10][10];
    int x,y,exit=0;
    system("chcp 1251");
    cout<<"Морской бой\n"<<"попробуй разбомби вражеский корабль он спрятан среди ноликов\n";
    outable(0,0,0);
    do{
    cout<<"введите координаты удара(цифра по горизонтали и цифра по вертикали)\n";
    cin>>x;
    cin>>y;
    if (x==5&&y==8)
    {
                   exit=1;
                   }
    outable(x,y,exit,tabmassive);
    system("pause");
    
    }
    while(exit!=1);
    return 0;
    }
Yandex
Объявления
10.01.2013, 19:42     Синтаксис в операторах while и do while
Ответ Создать тему
Опции темы

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