Форум программистов, компьютерный форум, киберфорум
Наши страницы
Алгоритмы
Войти
Регистрация
Восстановить пароль
 
topaz
0 / 0 / 0
Регистрация: 04.05.2016
Сообщений: 17
1

"Задача на поиск чего-либо в массиве"

05.01.2017, 19:08. Просмотров 354. Ответов 5

Представим ситуацию, что надо, например, проверить массив на наличие в нем, например, цифры 5. Понятное дело, надо создать цикл, в нем условие проверки на данный символ. Если символ есть, то вывести "Есть", если нет, то "Нету". НО.
Если цифра попадется 2 раза, то и сообщение будет выведено 2 раза.
Для решения этой проблемы я вводил новую переменную, изначально равную нулю, и в случае попадания символа, она увеличивалась на 1. Затем после выполнения цикла проверялось больше ли эта переменная нуля или равна ему, и в зависимости от результатов выводилось "Есть" или "Нету".
Но мне кажется этот способ слишком, как сказать, "громоздким", "затратным", "нерациональным": вводить переменную, для такой "мелочи".
Есть ли более простой способ на проверку наличия значения в массиве?
P.S. Пример этого кода на С:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
 
int main(void)
{
   int a[] = {1, 5, 3, 5, 7};
   for(int i = 0; i < 5; i++)
   {
      if (a[i] == 5)
         printf("Есть\n");
      else 
         printf("Нету\n");
   }
}
// Выведет Есть 2 раза
Пример кода с моим решением:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
 
int main(void)
{
   int ii = 0;
   int a[] = {1, 5, 3, 5, 7};
   for(int i = 0; i < 5; i++)
   {
      if (a[i] == 5)
         ii++;
   }
   if (ii > 0)
      printf("Есть\n");
   else 
      printf("Нету\n");
}
// Выведет Есть 1 раз
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.01.2017, 19:08
Ответы с готовыми решениями:

Поиск и вывод строки по заданному шаблону (с использованием симоволов "?", "*", "+")
Добрый день Имею такое задание: необходимо написать программу, которая сможет найти в файле...

Поиск максимального элемента в массиве методом "разделяй и властвуй"
Я в недоумении, поиск максимального элемента в массиве сводится к цикличной проверке всех его...

Посоветуйте, с чего начать. Дайте "толчок" =)
Приветствую! В общем такой вопрос, и даже не один. С чего собственно начать начинающему...

Нахождение кратчайшего пути в "циклическом" массиве
Добрый вечер! Я пишу простую игру (на Java). Персонаж должен убегать от гангстера. Поле это...

Математическая задача по дисциплине "Операционные системы"
Доброго времени суток. Имеется задача: Сколькими способами можно представить физический адрес...

5
Artmal
86 / 85 / 55
Регистрация: 14.11.2015
Сообщений: 1,015
05.01.2017, 19:45 2
Java
1
2
3
4
5
6
        for(int i = 0; i < 5; i++) {
            if (a[i] == 5) {
                System.out.println("Есть");
                break;
            }
        }
0
echs
Регистрация: 23.10.2013
Сообщений: 5,076
Записей в блоге: 8
07.01.2017, 18:25 3
topaz
Язык Си мне неизвестен, но вероятно там должен
быть оператор досрочного выхода из цикла и как
минимум есть оператор goto. То есть если один раз
попалось нужное число, то надо сразу использовать
выход из цикла.
0
topaz
0 / 0 / 0
Регистрация: 04.05.2016
Сообщений: 17
13.01.2017, 18:31  [ТС] 4
Но в случае если числа в массиве нет, оно ничего не выведет, а если дописать else со словом "нет", то оно выведет много раз, а если туда еще и дописать break, то оно как бы сразу и прервет цикл, после 1 проверки.
0
Nikitko_Cent
144 / 114 / 37
Регистрация: 27.10.2011
Сообщений: 690
Завершенные тесты: 3
13.01.2017, 19:19 5
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
 
int main(void)
{
   int a[] = {1, 5, 3, 5, 7, 10};
   int i = 0;
   for(; i < 6; i++)
   {
      if (a[i] == 5)
         break;
   }
   if (i == 6)
      printf("Есть\n");
   else 
      printf("Нету\n");
}
1
Dimension
Dimension
574 / 444 / 221
Регистрация: 08.04.2014
Сообщений: 1,709
Завершенные тесты: 1
14.01.2017, 22:46 6
C++
1
2
3
4
5
6
7
8
9
for(int i = 0; i < 5; i++)
   {
      if (a[i] == 5){
         printf("Есть\n");
         return 0;
      }
      
}
printf("Нету\n");
0
14.01.2017, 22:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.01.2017, 22:46

Типичная задача по теорверу "Стрелок стреляет."
Доброго времени суток вам, товарищи математики. Собственно я глупый студент, пытающийся разобраться...

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

Поиск частей внешнего контура по четырём сторонам с "захватом"
Вот так вот чудно я назвал тему =) Всем привет. В рамках проекта нужно придумать алгоритм поиска...


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

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

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