Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
МАРКИЗОЧКА
1 / 1 / 1
Регистрация: 29.05.2014
Сообщений: 148
1

Проверить есть ли в символьном массиве нужный элемент?

26.04.2015, 10:23. Просмотров 572. Ответов 15
Метки нет (Все метки)

Проверить есть ли в символьном массиве нужный элемент?

C
1
2
3
4
5
6
7
8
9
10
11
12
13
char cell[9] = { '-', '-', '-', '-', '-', '-', '-', '-', '-'};
 
 
char move;
    cout << ("Please enter move. \n");
    while (cin >> move)
    {   
            while (cell[move-1] == '-')
            {
                cout << ("You make move \n");
                return move;
            }
    }

Почему не работает? в чем причина?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.04.2015, 10:23
Ответы с готовыми решениями:

Проверить, есть ли в массиве А [n] числа В и С и определить, какое из чисел встречается в массиве чаще
1. Проверить, есть ли в массиве А числа В и С и определить, какое из чисел...

Найти нужный элемент в массиве и вывести его индекс, если такого нет, то вывести -1
Нужно найти нужный элемент в массиве и вывести его индекс, если такого нету, то...

Есть ли в данном массиве элемент, равный заданному числу? Если есть, то вывести номер одного из них.
Есть ли в данном массиве элемент, равный заданному числу? Если есть, то вывести...

Проверить, есть ли пароль в массиве
Есть такой код: string z; string x = {&quot;11111ab&quot;, &quot;22222cd&quot;,...

Проверить, есть ли слово в массиве
Нужна помощь. Вообщем , есть символьный массив , пользователь вводит слово и...

15
zss
Модератор
Эксперт С++
7368 / 6773 / 4285
Регистрация: 18.12.2011
Сообщений: 17,904
Завершенные тесты: 1
26.04.2015, 11:56 2
Цитата Сообщение от МАРКИЗОЧКА Посмотреть сообщение
while (cell[move-1] == '-')
зачем while? Он эквивалентен if, т.к. внутри стоит return,
и тело цикла выполняется не более 1 раза.

Добавлено через 1 минуту
кстати
Цитата Сообщение от МАРКИЗОЧКА Посмотреть сообщение
cell[move-1] == '-'
Индекс за границей массива, т.к. код символа '-' равный 61 явно больше 9,
т.е. адресуется cell[61-1], а у Вас последний элемент cell[8]
0
МАРКИЗОЧКА
1 / 1 / 1
Регистрация: 29.05.2014
Сообщений: 148
28.04.2015, 09:07  [ТС] 3
zss, спасибо.
насколько я поняла нужно сделать проверку.
а подскажите тогда в чем моя ошибка

C
1
2
3
4
5
6
7
8
9
10
11
12
char cell[9] = { '-', '-', '-', '-', '-', '-', '-', '-', '-'};
 
int move;
printf ("Please enter move.(1-9) \n");
scanf_s ("%u",&move);
        if ((move < 49) || (move > 58) || (cell[move - 1] != '-'))
            cell[move - 1] = 'X';   
else
                    {
                        printf("Please enter corect move.(1-9) \n");
                        scanf_s("%u",&move);
                    }
если ввести литерал, то вообще цикл зависает. (но считывать нужно сишным кодом, без cin>>)
0
Даценд
Модератор
Эксперт .NET
4200 / 3966 / 2625
Регистрация: 20.04.2015
Сообщений: 7,199
28.04.2015, 09:25 4
C++
1
2
3
4
5
6
7
8
9
10
11
char move;
cout << ("Please enter move. \n");
cin >> move;
for (int i=0; i<9; i++)
{   
   if(cell[i] == move)
   {
      cout << ("You make move \n");
      return move; // только куда возвращается move и что возвращается, если символа нет?
   }
}
0
МАРКИЗОЧКА
1 / 1 / 1
Регистрация: 29.05.2014
Сообщений: 148
28.04.2015, 09:32  [ТС] 5
Даценд, нет. есть массив чаров с 9 элементов.
нужно ввести номер элемента, с клавиатуры (move) в который мы занесем символ.
но считывать нужно сишным кодом, без cin>>

вообщем считать scanf_s ("%u",&move); знаю как, но как проверить не символ ли это, и входит ли число в промежуток 1-9?
0
Даценд
Модератор
Эксперт .NET
4200 / 3966 / 2625
Регистрация: 20.04.2015
Сообщений: 7,199
28.04.2015, 12:18 6
C++
1
2
3
4
5
6
7
8
int move;
printf ("Please enter move. \n");
scanf ("%d" &move);
while (move<0 || move>=9 )
}
     printf ("Please enter corect move. \n");
     scanf ("%d" &move);
}
0
МАРКИЗОЧКА
1 / 1 / 1
Регистрация: 29.05.2014
Сообщений: 148
28.04.2015, 12:30  [ТС] 7
Даценд, не будет адекватно работать если ввести символ. как этого избежать?
0
Даценд
Модератор
Эксперт .NET
4200 / 3966 / 2625
Регистрация: 20.04.2015
Сообщений: 7,199
28.04.2015, 12:39 8
А зачем вводить символ, если
Цитата Сообщение от МАРКИЗОЧКА Посмотреть сообщение
нужно ввести номер элемента
0
МАРКИЗОЧКА
1 / 1 / 1
Регистрация: 29.05.2014
Сообщений: 148
28.04.2015, 13:13  [ТС] 9
Даценд, да вы правы, но это если пользователь будет неопытным и ткнет на букву. просто в задании указано, что все действия неопытных пользователей нужно предусмотреть
0
daslex
1291 / 535 / 177
Регистрация: 02.08.2011
Сообщений: 2,756
28.04.2015, 14:17 10
Цитата Сообщение от МАРКИЗОЧКА Посмотреть сообщение
в чем моя ошибка
Во всем.
Почему если Вам надо СИ, вы спрашиваете у С++??? Это очень похожие, но С и С++ это РАЗНЫЕ ЯЗЫКИ. На этом форуме есть раздел http://www.cyberforum.ru/c-beginners/
или мы тут такие хорошие, что прямо лучше них и в отношении к людям и даже СИ лучше Сишников знаем?
А Вы русская? У Вас вопросы очень трудно понять, как будто Вы с трудом на русский язык с родного переходите. Очень тяжело переводить ваш вопрос с русского на русский. Вообще непонятно чего надо.

Вот это надо?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
char cell[9] = { '-', '-', '-', '-', '-', '-', '-', '-', '-'};
char move[2];
 
 
int count=0;
while (move[0]<'0' || move[0]>'9'){
 
        if (count){printf ("Please enter corect move. \n");}
        else printf ("Please enter move.(1-9)\n");
                     scanf("%s",&move);
                     move[1]='\0';
                     count++;
} cell[move[0]-'0']='X';  //Ну или 1
0
МАРКИЗОЧКА
1 / 1 / 1
Регистрация: 29.05.2014
Сообщений: 148
28.04.2015, 14:32  [ТС] 11
daslex, мне не нужен сишный код. разве я об этом писала??
без cin>>)
а это маленькое условие!!!!!

А Вы русская?
живу в Америке. если эта информация Вам столь необходима.

тяжело переводить ваш вопрос с русского на русский
а если, все же Вы не только обидеть хотели, но и помочь, то спасибо, но я сама разобралась.
0
daslex
1291 / 535 / 177
Регистрация: 02.08.2011
Сообщений: 2,756
28.04.2015, 14:40 12
МАРКИЗОЧКА,
Англ. язык для этого форума официально разрешается. Если Вам трудно с русским, дублируйте задачу на английском. (Если это не проблема), то просто понятнее будет.
Цитата Сообщение от МАРКИЗОЧКА Посмотреть сообщение
а это маленькое условие!!!!!
а у меня оно не выполнено. Где у меня cin??

Добавлено через 4 минуты

Не по теме:

Цитата Сообщение от МАРКИЗОЧКА Посмотреть сообщение
без cin
это значит и без cout, а без cout и без cin C++ кастрируется и превращается в С:D

0
МАРКИЗОЧКА
1 / 1 / 1
Регистрация: 29.05.2014
Сообщений: 148
28.04.2015, 14:44  [ТС] 13
пфф..без cin это не значит что без cout!!!!! был конкретный вопрос. просто считывать не используя cin. но запрет на cin, это не запрет на все прелести плюсов!!!!!!!! не накручивайте себе
0
daslex
1291 / 535 / 177
Регистрация: 02.08.2011
Сообщений: 2,756
28.04.2015, 14:51 14
Нельзя скрещивать printf с cin и scanf с cout, категорически нельзя.
0
МАРКИЗОЧКА
1 / 1 / 1
Регистрация: 29.05.2014
Сообщений: 148
28.04.2015, 14:54  [ТС] 15
daslex, а как по другому считать с консоли на плюсах не используя cin
0
daslex
1291 / 535 / 177
Регистрация: 02.08.2011
Сообщений: 2,756
28.04.2015, 17:23 16
С++ поддерживает С, поэтому либо на С, либо включить режим: "Я сегодня гений" и написать свой собственный класс для ввода информации с клавиатуры и вывода информации на экран.

Добавлено через 2 минуты
Сама задача (если я ее правильно сделал) не включает в себя ничего от С++. Иногда вероятны такие задачи, в которых может быть требование отказаться от потокового ввода, вывода (cin,cout), но использовать разрешат любые остальные преимущества С++. Это вполне возможно.

Не по теме:

И обижать я вас вообще не хотел.



Добавлено через 23 минуты
Цитата Сообщение от МАРКИЗОЧКА Посмотреть сообщение
а как по другому считать с консоли на плюсах не используя cin
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <vector>
#include <stdio.h>
 
using namespace std;
 
int main(){
      int move=-1;
      vector<char> cell(10);
      fill(cell.begin(),cell.begin()+9,'-');
 
      cout<<"input cell [1..9]\n";
      while (move<1 || move>10){
        scanf("%d",&move);
        fflush(stdin);
        if (move<1 || move>10) printf("Retry input\n");
      }
      cell[move-1]='x';
 
      for (int i=0;i<10;i++) cout<<cell[i]<<"  ";
 
   return 0;
}
0
28.04.2015, 17:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.04.2015, 17:23

Проверить, есть ли в массиве заданное число
Добрый день, мне задали в институте задачу по ссылкам и указателям по C++ ...

Проверить есть ли в массиве одинаковые числа
Как можно проверить есть ли в массиве числа с одинаковым значением? числа...

Проверить есть ли в строке матрицы элемент, меньший нуля
#include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;stdio.h&gt; using namespace...


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

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

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