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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.75
Smed
0 / 0 / 0
Регистрация: 14.01.2008
Сообщений: 3
#1

C++, Одномерный массив - разминка для мозгов - C++

14.01.2008, 04:35. Просмотров 1956. Ответов 4
Метки нет (Все метки)

Есть следующая задачка:
"Используйте одномерный массив для решения. Считать 100 чисел, каждый из которых между 1 и 10 включительно(подразумевается использование только int). После считывания каждого числа, вывести его на экран только если он не повторяет уже считанное и показанное число. Используйте наименьший возможный массив для решения."

Есть решение, но не уверен что оно оптимальное... Возможно ли использование массива меньше 10 ??? (естественно не используя 10 int)

Код
int arr[10]={0,0,0,0,0,0,0,0,0,0};
int num=0,i=0,j=0,k=0;
bool key;
  /* считывание 100-та чисел */
 for(i=0;i<100;i++)
 {
  cout<<"Enter number #"<<i+1<<" ";                 
   cin>>num;
   key=false;
   j=0;

   /* проверка былоли уже такое число*/
   while(j<10 && key==false)
       if (arr[j]==num)
           key=true; 
       else
           j++;

   /* если не было */
   if (key==false)
      {
        cout<<num<<endl;
        arr[k]=num;
        k++;
      }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.01.2008, 04:35     C++, Одномерный массив - разминка для мозгов
Посмотрите здесь:

C++ Cформировать одномерный массив Y, для элементов которого выполняется условие
У меня нехватает мозгов на это задание C++
C++ Разминка для мозгов
Для заданой квадратной матрицы сформулировать одномерный массив из ее диагональных элементов. C++
C++ Написать ф-ю,которая сортирует одномерный массив по возрастанию или убыванию(задается пользователем),и программу для ее тестирования
Одномерный массив. Вычислить значение функции для отрицательных элементов массива и подсчитать их количество C++
C++ Разработать программу для работы с массивами: отобразить в обратном порядке одномерный массив
C++ Одномерный массив!
C++ Для каждой строки матрицы найти номер первого по порядку четного числа и получить одномерный массив этих номеров
Для матрицы А(4 строки ,4 столбца) сформировать одномерный массив B из 4 элементов C++
Для заданной квадратной матрицы сформировать одномерный массив из ее диагональных элементов C++
C++ Цикл для вывода min чисел в одномерный массив

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vadim55
0 / 0 / 0
Регистрация: 01.01.2008
Сообщений: 6
14.01.2008, 10:44     C++, Одномерный массив - разминка для мозгов #2
Вам понадобится массив всего из одного элемента!
в целом числе 4 байта,32 бита.
придеться работать с битами и >> или <<
подумайте в этом направлении...

для 1 нужен 1 бит, для 2 нужно 2 бита, для 3 нужно 2 бита и.т.д
думайте!
Smed
0 / 0 / 0
Регистрация: 14.01.2008
Сообщений: 3
15.01.2008, 04:45  [ТС]     C++, Одномерный массив - разминка для мозгов #3
В принципе можно вообще без массива написать, но тогда придется вводить довольно таки много не совсем нужных переменных... Вы имеете в виду побитное сравнение ввода? Тогда не совсем понятно что будет хранится в элементе массива...
vadim55
0 / 0 / 0
Регистрация: 01.01.2008
Сообщений: 6
15.01.2008, 10:31     C++, Одномерный массив - разминка для мозгов #4
я сейчас понял как совсем просто можно решить
1.берем массив из одного элемента
2.если первый раз например число 1
3.устанавливаем первый бит в 1.
если второй раз пришло число 1 проверяем с помощью маски
например if(num & 0x01)
для каждого числа использовать 1 бит(поднят или нет)
и соответствующую маску для проверки

начните писать и я вам помогу
Smed
0 / 0 / 0
Регистрация: 14.01.2008
Сообщений: 3
18.01.2008, 07:45  [ТС]     C++, Одномерный массив - разминка для мозгов #5
Цитата Сообщение от vadim55 Посмотреть сообщение
я сейчас понял как совсем просто можно решить
1.берем массив из одного элемента
2.если первый раз например число 1
3.устанавливаем первый бит в 1.
если второй раз пришло число 1 проверяем с помощью маски
например if(num & 0x01)
для каждого числа использовать 1 бит(поднят или нет)
и соответствующую маску для проверки
начните писать и я вам помогу
красивый алгоритм и что важнее рабочий... спасибо!
Yandex
Объявления
18.01.2008, 07:45     C++, Одномерный массив - разминка для мозгов
Ответ Создать тему
Опции темы

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