Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [С++] массивы 
:(
    Опции темы
Veina
Дата 25.11.2009, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 25.11.2009

Репутация: нет
Всего: нет



Найти в массиве натуральных чисел все группы элементов, имеющих одинаковую сумму цифр. Массив вводится пользователем с клавы через пробелы. Я сама не программист и программирование не учу, но мне очень нужна эта задача.  Помогите, пожалуйста...
PM MAIL   Вверх
bsa
Дата 25.11.2009, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 1
Всего: 196



Для домашних заданий, курсовых, существует "Центр Помощи"

Тема перенесена! 
PM   Вверх
t_gran
Дата 26.11.2009, 06:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 621
Регистрация: 13.11.2007
Где: г.Усть-Илимск

Репутация: 33
Всего: 37



Более подробно можно? Не очень понятно, что вам в итоге нужно получить. Проверять все возможные комбинации, если да, то учитывать ли перестановки? Пожалуйста уточните.


--------------------
Я знаю, что ничего не знаю© Сократ
user posted image
PM MAIL WWW   Вверх
Veina
Дата 26.11.2009, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 25.11.2009

Репутация: нет
Всего: нет



Перестановки можно не учитывать. Просто вывести по группам те числа, у которых сумма цифр одинакова.
PM MAIL   Вверх
t_gran
Дата 27.11.2009, 09:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 621
Регистрация: 13.11.2007
Где: г.Усть-Илимск

Репутация: 33
Всего: 37



Код

#include <iostream>
#include <iterator>
#include <vector>

using namespace std;

typedef vector<int> TIntArray;
//----------------------------------------------//
// Ручной ввод данных. Завершение при вводе "0"
TIntArray &InputData (TIntArray &theArray)
{
   cout << "Input integer data ('0' for exit)" << endl;
   int d;
   do
   {
      cin >> d;
      if (d)
         theArray.push_back(d);
   }
   while (d);
   return theArray;
}
//----------------------------------------------//
// Перебор элементов на поиск равных сумм группы чисел
// и вывод их на экран. Работает по принципу:
// 4 3 2 1
// (4)[3] 2  1  -> (4)[3  2] 1                 => 4 < 5 переходим
// (4) 3 [2] 1  -> (4) 3 [2  1]                => переход
// (4) 3  2 [1]                                => переход
//  4 (3)[2] 1  ->  4 (3) [2] 1 -> 4 (3)[2  1] => найдена сумма, выводим
// и т.д.
void PrintGroup (TIntArray theArray)
{
   typedef TIntArray::iterator TIntIterator;

   for (TIntIterator i= theArray.begin(); i != theArray.end()-1; ++i)
   {
      int baseSumm= 0;
      for (TIntIterator j= i; j != theArray.end()-1; ++j)
      {
         baseSumm+= *j;
         for (TIntIterator g= j+1; g != theArray.end(); ++g)
         {
            int currSumm= 0;
            for (TIntIterator k= g; k != theArray.end(); ++k)
            {
               currSumm+= *k;
               if (baseSumm <  currSumm)
                  break;
               else if (baseSumm == currSumm)
               {
                  copy(i, j+1, ostream_iterator<int>(cout, " "));
                  cout << "AND ";
                  copy(g, k+1, ostream_iterator<int>(cout, " "));
                  cout << endl;
               }
            }
         }
      }
   }
}
//----------------------------------------------//
int main (int argc, char **argv)
{
   TIntArray array;
   InputData(array);
   PrintGroup(array);
   return 0;
}


Результат выполнения:
Код

Input integer data ('0' for exit)
1
2
3
4
9
8
7
6
5
0
1 2 AND 3
1 2 3 AND 6
2 3 AND 5
2 3 4 AND 9
2 3 4 9 AND 7 6 5
3 4 AND 7
4 9 AND 7 6


Это сообщение отредактировал(а) t_gran - 27.11.2009, 10:48


--------------------
Я знаю, что ничего не знаю© Сократ
user posted image
PM MAIL WWW   Вверх
Veina
Дата 27.11.2009, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 25.11.2009

Репутация: нет
Всего: нет



у меня почему-то ничего не выводит, просто игнорит. Среда Microsoft Visual Studio.net 2005
Код

#include <iostream>
#include <iterator>
#include <vector>
using namespace std;
typedef vector<int> TIntArray;

TIntArray &InputData (TIntArray &theArray)
{
   cout << "Input integer data ('0' for exit)" << endl;
   int d;
   do
   {
      cin >> d;
      if (d)
         theArray.push_back(d);
   }
   while (d);
   return theArray;
}

void PrintGroup (TIntArray theArray)
{
   typedef TIntArray::iterator TIntIterator;
   for (TIntIterator i= theArray.begin(); i != theArray.end()-1; ++i)
   {
      int baseSumm= 0;
      for (TIntIterator j= i; j != theArray.end()-1; ++j)
      {
         baseSumm+= *j;
         for (TIntIterator g= j+1; g != theArray.end(); ++g)
         {
            int currSumm= 0;
            for (TIntIterator k= g; k != theArray.end(); ++k)
            {
               currSumm+= *k;
               if (baseSumm <  currSumm)
                  break;
               else if (baseSumm == currSumm)
               {
                  copy(i, j+1, ostream_iterator<int>(cout, " "));
                  cout << "AND ";
                  copy(g, k+1, ostream_iterator<int>(cout, " "));
                  cout << endl;
               }
            }
         }
      }
   }
}
//----------------------------------------------//
int main (int argc, char **argv)
{
   TIntArray array;
   InputData(array);
   PrintGroup(array);
   return 0;
}


PM MAIL   Вверх
Veina
Дата 27.11.2009, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 25.11.2009

Репутация: нет
Всего: нет



уже все работает. спасибо

Это сообщение отредактировал(а) Veina - 29.11.2009, 12:55
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0469 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.