Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.85
Flame's
0 / 0 / 0
Регистрация: 21.01.2012
Сообщений: 20
#1

Проверить, существует ли число в массиве - C++

23.01.2012, 18:17. Просмотров 3300. Ответов 22
Метки нет (Все метки)

Программа проверяет существует ли число в массиве вводимое пользователем, если да, то выводит индекс этого числа в массиве, иначе выводит сообщение, что числа нету. Программа работает, но я уверен, что ее можно сделать легче ( по объему ) поэтому кому интересно) Жду варианты_)

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
#include <iostream>
#include <iomanip>
 
int main()
{
    int x;
    int t;
        const int arraySize = 10;
        int massiv[arraySize] = {34,23,1,54,32,0,45,76,29,12};
        bool ExitFlag = false;
 
 std:: cout << "Введите число, которое хотите найти: ";
 std:: cin >> t;
 
        while(!ExitFlag)
        {
                int count = 0;
 
                for(int i = 0; i < arraySize; i++) {
 
                    if(massiv[i] != t) {
                        if (i >= arraySize-1 ) { 
                            ExitFlag = true; std:: cout << "Извините вашего числа нету в массиве!";
                        }
                        count++;
                    }
                    else {
                      std:: cout << "Индекс вашего числа в массиве равен: ";
                      std:: cout << i;
                      ExitFlag = true;         
                    }
                }
        }
 
 
 std:: cin >> x;
        return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.01.2012, 18:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проверить, существует ли число в массиве (C++):

Проверить, существует ли строгое чередование 0 и 1 в массиве - C++
Сформировать массив из N элементов (N&lt;50) , которыми могут быть только целые числа 0 и 1. Проверить, существует ли строгое чередование 0 и...

Проверить, существует ли четырехзначное натуральное число - C++
Задание 11. Проверить, существует ли четырехзначное натуральное число, сумма пятых степеней цифр которого равна самому числу. Помогите...

Массив: Проверить, присутствует ли в массиве введённое пользователем число - C++
Проверить, присутствует ли в массиве введённое пользователем число x. Поиск элемента в массиве оформить как функцию. Программа...

Проверить, что в массиве ни одно четное число не расположено после нечетного - C++
2.Дан массив целых чисел. Если в нем ни одно четное число не расположено после нечетного, то получить из исходного массива массив только...

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

Проверить, имеется ли в массиве число, введенное пользователем. Если да – вывести его индекс - C++
кто-нибудь может подсказать как сделать? Язык С++. только мне по самому простому, только начинаю учить язык, через цикл for, и это...

22
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
23.01.2012, 18:26 #2
C++
1
2
3
4
5
6
7
template <typename Iter, typename T> Iter search(Iter firat, Iter last, T val)
{
    for ( ; first != last ; ++first )
        if ( *first == val )
            return first;
    return NULL;
}
0
BumerangSP
4287 / 1409 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
23.01.2012, 18:43 #3
Правда всего на десять с лишним меньше
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
#include <iostream>
#include <iomanip>
using namespace std;
 int main()
{
 const int arraySize = 10;
 int t,i,massiv[arraySize] = {34,23,1,54,32,0,45,76,29,12};;
 bool ExitFlag;
 cout<<"Введите число, которое хотите найти: ";
 cin>>t;
 for(i=0; i<arraySize; i++)
  {
   if(massiv[i]!=t)
    ExitFlag=false;
    else
     {
      ExitFlag=true;
      cout << "Индекс вашего числа в массиве равен: ";
      cout<<i+1;
      break;
     }
  }
  if (ExitFlag==false)
   cout << "Извините, вашего числа нету в массиве!";
  return 0;
}
0
rangerx
1935 / 1544 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
23.01.2012, 22:43 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
 
int main()
{
    const int arraySize = 10;
    int massiv[arraySize] = { 34, 23, 1, 54, 32, 0, 45, 76, 29, 12 };
 
    int t;
    std::cout << "Введите число, которое хотите найти: ";
    std::cin >> t;
 
    for(int i = 0; i < arraySize; i++)
    {
        if(massiv[i] == t)
        {
            std::cout << "Индекс вашего числа в массиве равен: " << i;
            return 0;
        }
    }
 
    std::cout << "Извините вашего числа нету в массиве!";
}
0
R136a1
142 / 111 / 15
Регистрация: 14.04.2011
Сообщений: 261
23.01.2012, 22:56 #5
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
#include <iostream>
#include <iomanip>
 
int search(const int [], int, int);
 
int main()
{
    int mass[10] = {1,2,3,4,5,6,7,8,9,10};
    int num;
 
    for(int i = 0; i < 10; i++)
        std::cout << std::setw(4) << mass[i];
 
    std::cout << "\nВведите число, которое нужно найти: ";
    std::cin >> num;
 
    int index = search(mass,9,num);
 
    if(index != -1)
        std::cout << "Число " << num << " найдено в позиции "
              << index << std::endl;
    else
        std::cerr << "Число не найдено" << std::endl;
 
    return 0;
}
 
int search(const int mass[], int step, int num)
{
    if(mass[step] == num)
        return step;
    else if(!step)
        return -1;
 
    search(mass,step-1,num);
}
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
23.01.2012, 23:03 #6
R136a1, компилить пробовали? http://liveworkspace.org/code/7e851485ee30d897698c6c32babb4302
даже если заставить скомпилироваться, результат не верен
http://liveworkspace.org/code/aadd51c40707d70aa00fd5240e5d9f10
0
rinat_w
89 / 85 / 4
Регистрация: 13.11.2011
Сообщений: 192
Завершенные тесты: 1
23.01.2012, 23:08 #7
хы вышло на 10 строк
C++
1
2
3
4
5
6
7
8
9
10
#include<iostream>
using namespace std;
int main(){
    int const asize=10;
    int a[asize]={1,2,3,4,5,6,7,8,9,10}, n;
    cout<<"your number ="; cin>>n;
    for(int i=0; i<asize; i++) if(a[i]==n) cout<<"a["<<i<<"]="<<n<<endl;
    system("pause");
    return 0;
}
0
R136a1
142 / 111 / 15
Регистрация: 14.04.2011
Сообщений: 261
23.01.2012, 23:10 #8
go, ???
0
Миниатюры
Проверить, существует ли число в массиве  
rinat_w
89 / 85 / 4
Регистрация: 13.11.2011
Сообщений: 192
Завершенные тесты: 1
23.01.2012, 23:15 #9
как и просил автор уменьшил объем максимально теперь на 9 строк!!
C++
1
2
3
4
5
6
7
8
9
#include<iostream>
int main(){
    int const asize=10;
    int a[asize]={1,2,3,4,5,6,7,8,9,10}, n;
    std::cout<<"your number ="; std::cin>>n;
    for (int i=0; i<asize; i++) if (a[i]==n) std::cout<<"a["<<i<<"]="<<n<<std::endl;
    system("pause");
    return 0;
}
R136a1, а в чем go не прав?
0
easybudda
Модератор
Эксперт CЭксперт С++
9695 / 5645 / 963
Регистрация: 25.07.2009
Сообщений: 10,850
23.01.2012, 23:15 #10
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
 
int * findval(const int * arr, size_t size, const int val) { 
    return ( ! size ) ? NULL : ( *arr == val ) ? (int*)arr : findval(arr+1, size-1, val); 
}
 
int main(void){
    int arr[] = { 3, 5, 6, 7, 9 }, val;
    
    while ( printf("VALUE: ") && scanf("%d", &val) == 1 ){
        int * found = findval(arr, sizeof(arr) / sizeof(*arr), val);
        
        if ( found )
            printf("ARRAY[%d] = %d\n", found - arr, *found);
        else
            printf("NOT FOUND.\n");
    }
    
    return 0;
}
А чем, кстати, std::find() не угодил?
0
R136a1
142 / 111 / 15
Регистрация: 14.04.2011
Сообщений: 261
23.01.2012, 23:21 #11
rinat_w, в первой ссылке мой косяк. Исправил
Цитата Сообщение от go Посмотреть сообщение
даже если заставить скомпилироваться, результат не верен
http://liveworkspace.org/code/aadd51...0fd5240e5d9f10
вот этой фразы я не понял
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
23.01.2012, 23:32 #12
Цитата Сообщение от R136a1 Посмотреть сообщение
вот этой фразы я не понял
Ну тут я немного, просто сравни
http://liveworkspace.org/code/aadd51c40707d70aa00fd5240e5d9f10
и
http://liveworkspace.org/code/a6be3a31c51de01c310334496562d78a
Код
Compilation output:
source.cpp: In function 'int search(const int*, int, int)':
source.cpp:36:1: warning: control reaches end of non-void function [-Wreturn-type]
Не надо return пропускать

Добавлено через 53 секунды
А вот codepad отработает, так как я и думал http://codepad.org/rHNhgKqA

Добавлено через 16 секунд
Код
cc1plus: warnings being treated as errors
In function 'int search(const int*, int, int)':
Line 36: warning: control reaches end of non-void function
1
R136a1
142 / 111 / 15
Регистрация: 14.04.2011
Сообщений: 261
23.01.2012, 23:37 #13
go, спасибо за замечание) странно что у меня gcc ворнинги не выдал
0
NoMasters
Псевдослучайный
1764 / 1107 / 73
Регистрация: 13.09.2011
Сообщений: 3,143
23.01.2012, 23:47 #14
-Wall ему в флаги(и -Wextra по желанию). Свежие версии по умолчанию ноль возвращают для функций с целым типом возвращаемого значения.
1
BumerangSP
4287 / 1409 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
24.01.2012, 01:21 #15
Цитата Сообщение от rinat_w Посмотреть сообщение
как и просил автор уменьшил объем максимально теперь на 9 строк!!
C++
1
2
3
4
5
6
7
8
9
#include<iostream>
int main(){
    int const asize=10;
    int a[asize]={1,2,3,4,5,6,7,8,9,10}, n;
    std::cout<<"your number ="; std::cin>>n;
    for (int i=0; i<asize; i++) if (a[i]==n) std::cout<<"a["<<i<<"]="<<n<<std::endl;
    system("pause");
    return 0;
}
R136a1, а в чем go не прав?
Конечно если писать всё в одну строку, их будет меньше
0
24.01.2012, 01:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.01.2012, 01:21
Привет! Вот еще темы с ответами:

Функции. Проверить, простое число или нет. Увеличить его значение на натуральное число M. Проверить, осталось ли оно простым - C++
Помогите пожалуйста 1. Дано натуральное число N, проверить, простое оно или нет. Увеличить его значение на натуральное число M....

Проверить существует ли диск - C++
У меня есть массив не жестких дисков которые есть в системе( a,e,f,g,h...) однако большинство из них просто есть,никакой флешки там не...

Rapidjson проверить существует ли объект - C++
Приветствую. Использую rapidjson и тут возникла следующая ситуация. Имеется JSON у которого при различных ситуация передаётся или не...

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


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

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

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