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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.85
Flame's
 Аватар для Flame's
0 / 0 / 0
Регистрация: 21.01.2012
Сообщений: 20
23.01.2012, 18:17     Проверить, существует ли число в массиве #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
#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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.01.2012, 18:17     Проверить, существует ли число в массиве
Посмотрите здесь:

C++ Проверить, существует ли строгое чередование 0 и 1 в массиве
Проверить существует ли диск C++
Сформировать массив из п элементов (n <50), которыми могут быть только целые числа 0 и 1. Проверить, существует строгое чередование 0 и 1. C++
Проверить, имеется ли в массиве число, введенное пользователем. Если да – вывести его индекс C++
Открытие файла. Как проверить существует ли файл не трогая содержимое C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
go
Эксперт C++
3582 / 1362 / 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;
}
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 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;
}
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
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 << "Извините вашего числа нету в массиве!";
}
R136a1
 Аватар для 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);
}
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
23.01.2012, 23:03     Проверить, существует ли число в массиве #6
R136a1, компилить пробовали? http://liveworkspace.org/code/7e8514...8c6c32babb4302
даже если заставить скомпилироваться, результат не верен
http://liveworkspace.org/code/aadd51...0fd5240e5d9f10
rinat_w
89 / 85 / 4
Регистрация: 13.11.2011
Сообщений: 183
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;
}
R136a1
 Аватар для R136a1
142 / 111 / 15
Регистрация: 14.04.2011
Сообщений: 261
23.01.2012, 23:10     Проверить, существует ли число в массиве #8
go, ???
Миниатюры
Проверить, существует ли число в массиве  
rinat_w
89 / 85 / 4
Регистрация: 13.11.2011
Сообщений: 183
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 не прав?
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
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() не угодил?
R136a1
 Аватар для R136a1
142 / 111 / 15
Регистрация: 14.04.2011
Сообщений: 261
23.01.2012, 23:21     Проверить, существует ли число в массиве #11
rinat_w, в первой ссылке мой косяк. Исправил
Цитата Сообщение от go Посмотреть сообщение
даже если заставить скомпилироваться, результат не верен
http://liveworkspace.org/code/aadd51...0fd5240e5d9f10
вот этой фразы я не понял
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
23.01.2012, 23:32     Проверить, существует ли число в массиве #12
Цитата Сообщение от R136a1 Посмотреть сообщение
вот этой фразы я не понял
Ну тут я немного, просто сравни
http://liveworkspace.org/code/aadd51...0fd5240e5d9f10
и
http://liveworkspace.org/code/a6be3a...0334496562d78a
Код
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
R136a1
 Аватар для R136a1
142 / 111 / 15
Регистрация: 14.04.2011
Сообщений: 261
23.01.2012, 23:37     Проверить, существует ли число в массиве #13
go, спасибо за замечание) странно что у меня gcc ворнинги не выдал
NoMasters
Псевдослучайный
1737 / 1080 / 69
Регистрация: 13.09.2011
Сообщений: 3,093
23.01.2012, 23:47     Проверить, существует ли число в массиве #14
-Wall ему в флаги(и -Wextra по желанию). Свежие версии по умолчанию ноль возвращают для функций с целым типом возвращаемого значения.
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 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 не прав?
Конечно если писать всё в одну строку, их будет меньше
rinat_w
89 / 85 / 4
Регистрация: 13.11.2011
Сообщений: 183
24.01.2012, 19:08     Проверить, существует ли число в массиве #16
BumerangSP, согласись и код тоже оптимальный
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
24.01.2012, 19:23     Проверить, существует ли число в массиве #17
Цитата Сообщение от rinat_w Посмотреть сообщение
BumerangSP, согласись и код тоже оптимальный

Не по теме:

Соглашусь)

easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
24.01.2012, 21:03     Проверить, существует ли число в массиве #18
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <algorithm>
 
int main(){
    const int SIZE(5);
    int arr[SIZE] = { 1, 2, 3, 4, 5 }, val1 = 4, val2 = 6, * ptr;
 
    if ( ( ptr = (int*)std::find(arr, arr + SIZE, val1) ) == arr + SIZE )
        std::cout << "Value " << val1 << " not found." << std::endl;
    else
        std::cout << "Found value " << val1 << " at index " << ( ptr - arr ) << std::endl;
 
    if ( ( ptr = (int*)std::find(arr, arr + SIZE, val2) ) == arr + SIZE )
        std::cout << "Value " << val2 << " not found." << std::endl;
    else
        std::cout << "Found value " << val2 << " at index " << ( ptr - arr ) << std::endl;
 
    return 0;
}
http://codepad.org/ajpIs4Jf
Flame's
 Аватар для Flame's
0 / 0 / 0
Регистрация: 21.01.2012
Сообщений: 20
24.01.2012, 21:31  [ТС]     Проверить, существует ли число в массиве #19
Всем спасибо за участие) Очень рад, что так много людей проявили фантазию, в не большой работе) Были бы конфеты, дал бы каждому Если нужно, могу еще пару задач интересных выложить)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.01.2012, 21:34     Проверить, существует ли число в массиве
Еще ссылки по теме:

Функции. Проверить, простое число или нет. Увеличить его значение на натуральное число M. Проверить, осталось ли оно простым C++
Сформировать случайным образом массив X(N), элементами которого могут быть только 0 и 1. Проверить, существует ли строгое чередование 0 и 1 C++
Проверить, есть ли в массиве А [n] числа В и С и определить, какое из чисел встречается в массиве чаще C++

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

Или воспользуйтесь поиском по форуму:
easybudda
24.01.2012, 21:34     Проверить, существует ли число в массиве
  #20

Не по теме:

Цитата Сообщение от Flame's Посмотреть сообщение
Если нужно, могу еще пару задач интересных выложить)
Том Соер таким макаром забор покрасил...

Yandex
Объявления
24.01.2012, 21:34     Проверить, существует ли число в массиве
Ответ Создать тему
Опции темы

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