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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2010, 17:59   #1
maks2020
Пользователь
 
Регистрация: 18.10.2010
Сообщений: 16
По умолчанию Из С++ в паскаль

Помогите компилировать программу из С++ в паскаль

Код:
// 

#include <iostream>

#define NMAX 40000

using namespace std;

main()
{
    int n;
    
    cin >> n;
    
    int a[NMAX];
    int i;
    
    for (i=0; i<n; i++) cin >> a[i];
    
    int l = 0, r = n-1;
    while (!a[l]) l++;
    while (a[r]) r--;
    
    int Q[2] = {0,0};
    
    for (i=l; i<=r; i++) Q[a[i]]++;
    
    cout << (Q[0] < Q[1] ? Q[0] : Q[1]);
}
maks2020 вне форума Ответить с цитированием
Старый 26.12.2010, 19:47   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Примерно так:
Код:
const nmax=40000;
var n,i,l,r:integer;
 a:array[1..nmax] of integer;
 q:array[1..2] of integer;
begin
 readln(n);
 for i:=1 to n do readln(a[i]);
 l:=0;r:=n-1;
 while a[l]<>0 do inc(l);
 while a[r]<>0 do dec(r);
 q[1]:=0;q[2]:=0;
 for i:=l to r do inc(q[a[i]]);
 if Q[0] < Q[1] then write(q[1]) else write(q[2]);
end.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.12.2010, 21:14   #3
maks2020
Пользователь
 
Регистрация: 18.10.2010
Сообщений: 16
По умолчанию

if Q[0] < Q[1] then write(q[1]) else write(q[2]); Константа нарушает границы
maks2020 вне форума Ответить с цитированием
Старый 27.12.2010, 06:07   #4
NioTo
Пользователь
 
Регистрация: 17.12.2007
Сообщений: 32
По умолчанию

Код:
const
  NMAX = 40000;

var
  n, i, r: LongInt;
  l: LongInt = 0;
  a: Array[0..NMAX - 1] of LongInt;
  Q: Array[0..1] of LongInt = (0, 0);

begin
  Read(n);

  for i := 0 to n - 1 do
    Read(a[i]);

  while a[l] = 0 do
    Inc(l);

  r := n - 1;
  while a[r] <> 0 do
    Dec(r);

  for i := l to r do
    Inc(Q[a[i]]);

  if Q[0] < Q[1] then
    Write(Q[0])
  else
    Write(Q[1]);
end.

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

Цитата:
maks2020
Я с потолка писал, а вот твое упущение в тупом копипасте. Стоит подумать почему эта ошибка выбивается, почитав книгу по паскалю, где сказано о том как описывать массив и его границы.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль, Борланд Паскаль-в чем разница??? Vremya-Dengy Паскаль, Turbo Pascal, PascalABC.NET 13 31.05.2011 18:23