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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.04.2010, 18:50   #1
daniil2010
Пользователь
 
Регистрация: 29.03.2010
Сообщений: 12
Вопрос ПЕРЕВЕСТИ НА c++

Написал прогу на Паскале

Вот условие:
Дан массив из N целых чисел. Его значения- только нули и единицы. Найти номер элемента, с которого начинается самая длинная последовательность одинаковых чисел.

А как это реализовать на С++?

текст программы:

uses
CRT;

const
n = 10;

var
x: array [1..n] of integer;
i, max, max1, k, s, kk, ss, j: integer;

begin
ClrScr;
for i := 1 to n do
begin
{ввод и проверка данных}
repeat
write(i, ' '); readln(x[i]);
until (x[i] = 0) or (x[i] = 1);
end;
{вывод исходной последовательности}

//(1) данная часть практически и дентична (2)//
// часть (1)

for i := 1 to n do
write(x[i]);
writeln;
s := 0; max := 0;
for i := 1 to n do
if x[i] = 0 then inc(s)
else if s > max then
begin
max := s; k := i - 1; s := 0
end;

{Если самая длинная подпоследовательность
в конце последовательности}
if s > max then
begin
max := s; k := n
end;
{вывод результата}

writeln(max, ' ', k - max + 1, ' ', k);
readln;

//часть (2)

for j := 1 to n do
write(x[j]);
writeln;
ss := 0; max1 := 0;
for j := 1 to n do
if x[j] = 1 then inc(ss)
else if ss > max1 then
begin
max1 := ss; kk := j - 1; ss := 0
end;

{Если самая длинная подпоследовательность
в конце последовательности}
if ss > max1 then
begin
max1 := ss; kk := n
end;
{вывод результата}
writeln(max1, ' ', kk - max1 + 1, ' ', kk);
readln;

if max > max1 then writeln('sam dlin posled=', max, ' ', 'nachin c posic ', k - max + 1, ' do pos ', ' ', k)
else writeln('sam dlin posled=', max1, ' ', 'nachin c posic ', kk - max1 + 1, ' ', ' do pos ', kk);
readln;


end.

Последний раз редактировалось daniil2010; 20.04.2010 в 19:22.
daniil2010 вне форума Ответить с цитированием
Старый 20.04.2010, 19:51   #2
[CODER]
Форумчанин
 
Аватар для [CODER]
 
Регистрация: 02.02.2010
Сообщений: 305
По умолчанию

В той код не вникал, форматирование кода ужасное
Код:
#include <iostream.h>
int _tmain(int argc, _TCHAR* argv[]) {
short maxi=0, maxj=0, flag=2, mas[10], i, numb, number, n=10;
	   for (i = 0; i < 10; i++) {
		 m:
		  cout<<i+1<<" = ";
		  cin>>mas[i];
		  if (mas[i]>1 || mas[i]<0)
			 goto m;
	   }
for (i=0; i<=n; i++){
  if (mas[i]!=flag) {
		  flag=mas[i];
		   number=i;
		  if (maxi>maxj) {
			   maxj=maxi;
			   maxi=0;
			   numb=number-maxj;
		  }
  } else {
	   maxi++;
  }
}
 cout<<"Element № "<<numb<<endl;
 system("pause");
	return 0;
}
Skype: CODERua
[CODER] вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ПЕРЕВЕСТИ НА c++ daniil2010 Помощь студентам 1 19.04.2010 18:28
Перевести на СИ DartDayring Общие вопросы C/C++ 4 30.03.2010 17:46
перевести Betman Помощь студентам 0 26.10.2009 22:39
ассемблер перевести на С++ rudolfe Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 10.03.2009 20:10
перевести из C++ в C AlinAA Фриланс 8 06.03.2009 20:41