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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2010, 23:11   #1
Horus92
Форумчанин
 
Аватар для Horus92
 
Регистрация: 04.05.2009
Сообщений: 147
По умолчанию Консольное приложение

помогите с задачей на C++ не когда не программирывал :
Дан массив размера N. Определить количество участков, на которых его элементы монотонно возрастают1|убывают2.
Horus92 вне форума Ответить с цитированием
Старый 10.12.2010, 00:17   #2
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Так напишите на том, на чем программировали. На Паскале, например.
А я переведу вам на С++
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 10.12.2010, 00:25   #3
Horus92
Форумчанин
 
Аватар для Horus92
 
Регистрация: 04.05.2009
Сообщений: 147
По умолчанию

Код:
Program odnomer23;
const n=10;
var i,t,t2:integer;
a:array[1..n] of integer;
begin
   t:=0;
   t2:=0;
      for i:=1 to n do a[i]:=random(10);
      for i:=1 to n do write(a[i]:3);
      for i:=1 to n-1 do begin
         if (a[i]=a[i+1]-1) then t:=t+1
           else if (a[i]=a[i+1]+1) then t2:=t2+1;
end;
writeln;
writeln('kol-vo uchstkov,gde vozrastaet:');
writeln(t);
writeln('kol-vo uchastkov,gde ubivaet:');
writeln(t2);
end.
Horus92 вне форума Ответить с цитированием
Старый 10.12.2010, 00:43   #4
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,365
По умолчанию

Вот переведенный код слово-в-слово
Код:
#include <iostream>
#include <Ctime>
using namespace std;

int main(){
	srand(time(0));
	const int n = 10;
	int t = 0, t2 = 0;
	int a[n];
	
	for(int i = 0; i < n; i++){
		a[i] = rand()%10;
	}
	
	for(int i = 0; i < n; i++){
		cout<<a[i]<<" ";
	}
	cout<<endl;
      
	for(int i = 0; i < n - 1; i++){
		if(a[i]==a[i+1]-1){
			t++;
		}else if(a[i]==a[i+1]+1){
			t2++;
		}
	}
      
	cout<<"kol-vo uchstkov,gde vozrastaet: "<<t<<endl;	
	cout<<"kol-vo uchastkov,gde ubivaet: "<<t2<<endl;
	
	getchar();

	return 0;
}
Только алгоритм здесь, по-моему, неправильный.
Если сгенерируется массив, например, 1 2 3 4 5 8 2 4 8 9, то прога скажет, что здесь пять участков. Хотя здесь всего лишь два. Ну это как я вижу...
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать

Последний раз редактировалось ACE Valery; 10.12.2010 в 00:50.
ACE Valery вне форума Ответить с цитированием
Старый 10.12.2010, 09:45   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Предлагаю резко упростить решение:
Код:
	int a[10]={5, 1,2,3, 8, 4,3, 1, 8,9};
	int cnt=0,cnk=0,il=0; 
	for(int i=0;i<9;i++){
		if(abs(a[i]-a[i+1])!=1){
			cnt++;
			if(i-il==1) cnk++;
			il=i;
		}
	}
	printf("%d",abs(cnk-cnt));
	getchar();
	return 0;
Кто за?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Консольное приложение Lag Общие вопросы C/C++ 3 05.05.2010 08:02
Консольное приложение shock-in Общие вопросы Delphi 2 19.12.2009 22:03
Консольное приложение Arkuz Общие вопросы Delphi 3 25.09.2008 23:59
Консольное приложение a_priori Общие вопросы Delphi 6 12.03.2008 08:33
Консольное приложение MAcK Общие вопросы Delphi 2 03.12.2006 18:28