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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.10.2011, 22:36   #1
Caged
Пользователь
 
Регистрация: 10.10.2011
Сообщений: 33
По умолчанию Вопрос по задаче на массивы

Здравствуйте, товарищи программисты. Прошу помочь с задачкой, собственно вот она:

Цитата:
Из входного потока вводится последовательность целых чисел. Количество чисел в последовательности произвольно, но не превышает 100.
Сформировать новую последовательность, элементами которой являются чис-ла исходной последовательности, сумма цифр которых совпадает с суммой цифр последнего числа в исходной последовательности.
Например, для исходной последовательности: 12, 101, 2, 7, 178, 30, 41, 201 должны получить: 12, 30, 201.
я в принципе знаю в теории, как это реализовать.. По ходу решения возник вопросец:

как определить функцию, которая возвращает массив?

код на данный момент такой:

Код:
#include <cstdlib>
#include <iostream>

using namespace std;
int Dsum (int a) {
int c, x, r=0;
c=a; 
while (c > 10){
x=(c-c%10)/10; 
c=c%10, r+=c;
c=x;
}
return r+c; 
}
void Work_ouT (int a[], int n){
 int b[n]; int i=0, j=0;
  for (; i<n; i++) 
   if (Dsum(a[i])== Dsum(a[n]) {
     b[j]=a[i]; j++; 
     }
                           
}

int main(int argc, char *argv[])
{
    system("PAUSE");
    return EXIT_SUCCESS;
}
Собственно я Work_ouT хочу из void в int-массив переделать, чтоб потом его вывести)

Заранее спасибо
Caged вне форума Ответить с цитированием
Старый 10.10.2011, 22:41   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

А смысл? Массивы же не по значению передаются, что мешает его вне функции создать?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 10.10.2011, 22:43   #3
Caged
Пользователь
 
Регистрация: 10.10.2011
Сообщений: 33
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
А смысл?
ну чтоб потоком его вывести...

Цитата:
Массивы же не по значению передаются, что мешает его вне функции создать?
не совсем понял..
Caged вне форума Ответить с цитированием
Старый 10.10.2011, 22:45   #4
Caged
Пользователь
 
Регистрация: 10.10.2011
Сообщений: 33
По умолчанию

Вы имеете в виду в самой void-функции распечатывать или как?
Caged вне форума Ответить с цитированием
Старый 10.10.2011, 22:51   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну вы для чего массив возвращать хотите? Что мешает передать массив в функцию (возвращающую void), сделать в ней с ним, что надо и после завершения работы этой функции делать с ним, что угодно и где угодно?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 10.10.2011, 22:54   #6
Caged
Пользователь
 
Регистрация: 10.10.2011
Сообщений: 33
По умолчанию

Alex11223, а разве после выполнения функции массив не пропадёт? он же локально объявлён ..
Caged вне форума Ответить с цитированием
Старый 10.10.2011, 22:59   #7
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Если создать его в функции — пропадет, если передать в нее — нет.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 10.10.2011, 23:04   #8
Caged
Пользователь
 
Регистрация: 10.10.2011
Сообщений: 33
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Если создать его в функции — пропадет, если передать в нее — нет.
ага...

а как лучше сделать: преобразовывать старый, который я передаю изначально, или передавать новый - пустой, который я заполню по ходу выполнения? и вообще можно ли так?
Caged вне форума Ответить с цитированием
Старый 10.10.2011, 23:18   #9
Caged
Пользователь
 
Регистрация: 10.10.2011
Сообщений: 33
По умолчанию

Вопрос исчерпан.. Спасибо))
Caged вне форума Ответить с цитированием
Старый 12.10.2011, 23:03   #10
Caged
Пользователь
 
Регистрация: 10.10.2011
Сообщений: 33
По умолчанию

Наваял бетку программы, помогите исправить ошибки) заранее спасибо)))

Код:
#include <cstdlib>
#include <iostream>

using namespace std;

int Dsum (int a) {
int c, x, r=0;
c=a; 
while (c > 10){
x=(c-c%10)/10; 
c=c%10, r+=c;
c=x;
}
return r+c; 
}

void Work_ouT (int a[], int n){
 int b[n]; int i=0, j=0;
  for (; i<n; i++) 
   if (Dsum(a[i])== Dsum(a[n]) {
     b[j]=a[i]; j++; 
     }
 b[j+1]=a[n];
 for (i=0; i<n; i++) a[i]=0;
 n = j+1; 
 for (j=0; i< n; j++) a[j]=b[j];                         
}

int Check_mas (int a[], int n) {
    int i=0;
    while (Dsum(a[i])==Dsum[n-1]) or (i!=n) i++;
    if (i==n) {return 0} else {return 1}   
}

int main(int argc, char *argv[])
{
  int mass [100];
  int l, k;  
    cout << "how many elements do you wish to have? (<100)"<<endl;
    cin >> l;
    cout << "Insert the sequence" << endl;
    for (k=0; k<l; k++) 
     cin >> mass [k];
 if (Check_mas(mass[l])==1) {
 Work_ouT(mass[l], l) 
 cout << "Sequence-result: ";
 for (m=0; m<l; m++) cout << mass[m] << " ";
 cout << endl;
}   
  else cout << "Sorry, your case is trivial. Sequence-result: " << mass[l-1] << endl; 
 
    system("PAUSE");
    return EXIT_SUCCESS;
}
Caged вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по задаче Delphi Vla9240 Помощь студентам 2 15.05.2009 16:15
Вопрос по задаче VadEr Помощь студентам 3 10.05.2009 11:11
Вопрос по задаче на Паскаль Ser Паскаль, Turbo Pascal, PascalABC.NET 5 04.04.2009 20:23
Вопрос по задаче file Паскаль, Turbo Pascal, PascalABC.NET 20 03.06.2008 17:37
Вопрос по задаче Freeman12 Помощь студентам 5 26.05.2008 17:40