Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.01.2008, 04:22   #1
Smed
Новичок
Джуниор
 
Регистрация: 14.01.2008
Сообщений: 1
По умолчанию Одномерный массив - разминка для мозгов

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

Есть решение, но не уверен что оно оптимальное... Возможно ли использование массива меньше 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;

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++;
      }
}

Последний раз редактировалось Smed; 14.01.2008 в 05:11.
Smed вне форума Ответить с цитированием
Старый 17.01.2008, 10:58   #2
Stranger2048
Пользователь
 
Регистрация: 30.10.2007
Сообщений: 12
По умолчанию

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

Есть решение, но не уверен что оно оптимальное... Возможно ли использование массива меньше 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;

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++;
      }
}
Можно использовать всего 5 байт, ведь числа от 1 до 10 отлично вмещаются в 4 бита.
Stranger2048 вне форума Ответить с цитированием
Старый 23.01.2008, 14:23   #3
n@sok
Пользователь
 
Регистрация: 24.11.2007
Сообщений: 46
По умолчанию

Достаточно двух байт
Код:
short a=0;
int i,num;

for(i=0;i<100;i++)
{
  cout<<"Enter number #"<<i+1<<" "
  cin>>num;

  //проверяем не было ли такого числа...
  if ((a>>num)==0)
  {
    cout<<num<<endl;
    a|=1<<num;
  }
}
n@sok вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
одномерный массив ldx Паскаль, Turbo Pascal, PascalABC.NET 4 06.06.2008 17:45
Разминка для мозгов Dog Помощь студентам 0 29.05.2008 20:56
VBA. Одномерный массив ExMatiss Microsoft Office Excel 9 07.05.2008 05:57
одномерный массив fatdog Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 23.02.2008 10:05
Одномерный массив SkyDreamer Помощь студентам 1 01.12.2007 21:22