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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.10.2011, 23:29   #11
_kilik_
Пользователь
 
Аватар для _kilik_
 
Регистрация: 16.08.2011
Сообщений: 69
По умолчанию

Поправил синтаксические ошибки.
Но честно говоря не пойму условия задачи.
Если подробно опишешь задачу подправлю чтоб корректно работала
Код:

#include <cstdlib>
#include <iostream>

using namespace std;
const int max_size= 100;

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[max_size]; 
 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(a[n-1]) || (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); 
		cout << "Sequence-result: ";
		for (int 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;
}
_kilik_ вне форума Ответить с цитированием
Старый 13.10.2011, 09:55   #12
Caged
Пользователь
 
Регистрация: 10.10.2011
Сообщений: 33
Радость

Цитата:
Но честно говоря не пойму условия задачи.
Ну смотрите, _kilik_, тут требуется ввести последовательность из целых чисел. Затем вы смотрите на сумму цифр последнего элемента и ищите в массиве элементы, сумма цифр которых совпадает с суммой цифр последнего. Далее из них вы составляете новую послед-ть и выводите на экран.

Пример.

Из "45 5 104 18 90" вы должны получить "45 18 90"

P.S. что-то я не так намутил(( Check_mas некорректно работает, попробую исправить ))

Последний раз редактировалось Caged; 13.10.2011 в 10:08.
Caged вне форума Ответить с цитированием
Старый 13.10.2011, 14:12   #13
_kilik_
Пользователь
 
Аватар для _kilik_
 
Регистрация: 16.08.2011
Сообщений: 69
По умолчанию

чтоб было понятней старался ничего не менять


Код:

#include <cstdlib>
#include <iostream>

using namespace std;
const int max_size= 100;

int Dsum (int a){//находим сумму чисел
	int  x,s=0;
	x=a; 
	while (x !=0 ){ 
		s +=(x%10);
		x=x/10;
	}
	return s; 
}
//принимает массив количество елементов первого массива, указател на количество елементов второго массива
int * Work_ouT (int a[], int n,int &j){//возращает адрес второго массива
	int *b= new int [max_size]; 
	int i=0;
	for (i=0; i<n; i++){ 
		if (Dsum(a[i])== Dsum(a[n-1])){//если сумма равна
			j++; 
			b[j-1]=a[i];
		}
	}
	return b;
}

int Check_mas (int a[], int n) {
	//если есть число сумма которыого равна последнему и это число не последнее
    for(int i=0;i<n;i++) 
		if ((Dsum(a[i]) == Dsum(a[n-1]))&&(i!=n-1))
			return 1;
	return 0;
}
void free(int*a){delete []a;};//должны удалить второй массив так ка был создан при помощи new

int main(int argc, char *argv[]){
	setlocale(LC_ALL,"Russian");
	int mass [max_size];
	int l, k; 
	int l_1=0;//размер второго массив
    cout << "введите количество елементов в массиве (<100)"<<endl;
    cin >> l;
    cout << "заполним массив" << endl;
    for (k=0; k<l; k++) 
		cin >> mass [k];

	if (Check_mas(mass, l)==1){
		int *mass_b = Work_ouT(mass, l,l_1); 
		cout << "выведем результат ";
		for (int m=0; m<l_1; m++) 
			cout << mass_b[m] << " ";
		cout << endl;
		free(mass_b);
	}   
	else 
		cout << "Sorry, your case is trivial. Sequence-result: " << mass[l-1] << endl; 
    system("PAUSE");
    return 0;
}
_kilik_ вне форума Ответить с цитированием
Старый 13.10.2011, 19:32   #14
Caged
Пользователь
 
Регистрация: 10.10.2011
Сообщений: 33
По умолчанию

Cпасибо большое) я даже не рассчитывал на такую помощь)) Пойду разбираться в задаче)

а что значит строка
Код:
setlocale(LC_ALL,"Russian");
?

Последний раз редактировалось Caged; 13.10.2011 в 19:41.
Caged вне форума Ответить с цитированием
Старый 13.10.2011, 21:38   #15
_kilik_
Пользователь
 
Аватар для _kilik_
 
Регистрация: 16.08.2011
Сообщений: 69
По умолчанию

в visual studio корректно отображает русские символы при выполнении программы
_kilik_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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