Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 01.12.2015
Сообщений: 120
1

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

13.05.2016, 09:33. Показов 1282. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите пожалуйста перевести, заранее спасибо
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <algorithm>
#include <iostream>
#include <cstdio>
 
using namespace std;
 
int a[100111];
 
int main()
{
    int n, k;
    scanf("%d%d", &n, &k);
 
    for (int i = 0; i < n; i++)
        scanf("%d", &a[i]);
 
    for (int i = 0; i < k; i++)
    {
        int x;
        scanf("%d", &x);
 
        int l = 0;
        int r = n - 1;
        while (l < r)
        {
            int d = (l + r) / 2;
            if (a[d] < x) l = d + 1; else r = d;
        }
 
        if (a[l] != x)
        {
            printf("0\n");
            continue;
        }
 
        int left = l;
 
        l = 0;
        r = n;
        while (l < r)
        {
            int d = (l + r) / 2;
            if (a[d] <= x) l = d + 1; else r = d;
        }
 
        int right = r - 1;
 
        printf("%d %d\n", left + 1, right + 1);
    }
}
Дано два списка чисел, числа в первом списке упорядочены по неубыванию. Для каждого числа из второго списка определите номер первого и последнего появления этого числа в первом списке.

Входные данные
В первой строке входных данных записано два числа N и M (1NM20000 ). Во второй строке записано N упорядоченных по неубыванию целых чисел — элементы первого списка. В третьей строке записаны M целых неотрицательных чисел - элементы второго списка. Все числа в списках - целые 32-битные знаковые.

Выходные данные

Программа должна вывести M строчек. Для каждого числа из второго списка нужно вывести номер его первого и последнего вхождения в первый список. Нумерация начинается с единицы. Если число не входит в первый список, нужно вывести одно число 0.

Примеры
входные данные
10 5
1 1 3 3 5 7 9 18 18 57
57 3 9 1 179
выходные данные
10 10
3 4
7 7
1 2
0
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.05.2016, 09:33
Ответы с готовыми решениями:

Перевести на Паскаль программу
Помогите пожалуйста решить задание

Перевести программу с C++ на Паскаль
Помогите с С++ переделать на Паскаль???? #include&lt;iostream&gt; #include &quot;time.h&quot; using namespace...

Перевести программу на Паскаль
Помогите, пожалуйста, перевести задачу на Pascal

Перевести программу с фортрана на паскаль
Переведите плиз на паскаль a,b,c=map(int,input().split()) sum=0 s=input() A=*10 for i in...

2
CAPITAL OF ROCK!
 Аватар для JokeR.BY
1281 / 708 / 982
Регистрация: 03.03.2010
Сообщений: 2,286
13.05.2016, 11:44 2
Лучший ответ Сообщение было отмечено Derzky как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
var
    x, i, d, n, m, l, r, left, right: Integer;
    a: Array[0..100110] Of Integer;
begin
    ReadLn(n, m);
    for i := 0 to n - 1 do
        Read(a[i]);
    for i := 0 to m - 1 do
    begin
        Read(x);
        l := 0; r := n - 1;
        while (l < r) do
        begin
            d := (l + r) div 2;
            if (a[d] < x)
            then
                l := d + 1
            else
                r := d;
        end;
        if (a[l] <> x)
        then
        begin
            WriteLn(0);
            Continue;
        end;
        left := l;
        l := 0;
        r := n - 1;
        while (l < r) do
        begin
            d := (l + r) div 2;
            if (a[d] <= x)
            then
                l := d + 1
            else
                r := d;
        end;
        right := r - l;
        WriteLn(left + 1, ' ', right + 1);
    end;
end.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7797 / 4620 / 2831
Регистрация: 22.11.2013
Сообщений: 13,125
Записей в блоге: 1
13.05.2016, 13:56 3
JokeR.BY,
В строке 39 ошибка: должна быть единица вместо L.
Строка 32 в C++ вычисляется иначе, чем в Паскале, результатом чего является ошибка при вычислении правой границы:
Ввод
Код
10 5
1 1 3 3 5 7 9 18 18 57
57 3 9 1 179
Вывод
Код
10 9
...
Для приведенного примера данных и строки 32 перевода значения d в программе на C++: 5, 8, 9, на Паскаль: 4, 7, 8.
Исправление:
Pascal
29
        r := n;

Если не ограничиваться просто переводом:
1<=NM<=20000, все числа в списках - целые 32-битные знаковые.
Pascal
1
2
3
4
var
    a: array[0..20000-1] of Longint;
    x: Longint;
    i, d, n, m, l, r, left, right: Integer;
Pascal
27
28
29
30
31
  left:=l+1;
...
  right:=r;
...
  WriteLn(left,' ',right);
Добавлено через 1 час 30 минут
В сухом остатке:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
var
  i, d, n, m, l, r, left, right: Integer;
  a: array[0..20000-1] of Longint;
  x: Longint;
begin
  ReadLn(n,m);
  for i:=0 to n-1 do Read(a[i]);
  for i:=0 to m-1 do begin
    Read(x);
    l:=0; r:=n-1;
    while l<r do begin
      d:=l+(r-l) div 2;
      if a[d]<x then l:=d+1 else r:=d;
    end;
    if a[l]<>x then begin
      WriteLn(0);
      Continue;
    end;
    left:=l+1;
    r:=n;
    while l<r do begin
      d:=l+(r-l) div 2;
      if a[d]<=x then l:=d+1 else r:=d;
    end;
    right:=r;
    WriteLn(left,' ',right);
  end;
end.
Добавлено через 1 минуту
или:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
var
  i, d, n, m, l, r, left, right: Integer;
  a: array[0..20000-1] of Longint;
  x: Longint;
begin
  ReadLn(n,m);
  for i:=0 to n-1 do Read(a[i]);
  for i:=0 to m-1 do begin
    Read(x);
    l:=0; r:=n-1;
    while l<r do begin
      d:=l+(r-l) div 2;
      if a[d]<x then l:=d+1 else r:=d;
    end;
    if a[l]=x then begin
      left:=l+1;
      r:=n;
      while l<r do begin
        d:=l+(r-l) div 2;
        if a[d]<=x then l:=d+1 else r:=d;
      end;
      right:=r;
      WriteLn(left,' ',right);
    end else WriteLn(0);
  end;
end.
0
13.05.2016, 13:56
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.05.2016, 13:56
Помогаю со студенческими работами здесь

Перевести программу из делфи в паскаль
unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils,...

Перевести на Паскаль
#include &lt;iostream&gt; using namespace std; int main(){ int a={0}, i, b, j, n, t; ...

Перевести С++ в Паскаль
Здравствуйте, помогите перевести на язык Паскаля функцию #include &lt;iostream&gt; #include &lt;math.h&gt;...

Перевести с C++ на Паскаль
#pragma hdrstop #include &lt;iostream&gt; #include &lt;Windows&gt; #include &lt;conio.h&gt; using namespace std;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Как клонировать определенную ветку в Git
bytestream 24.01.2025
Одной из ключевых функций Git является возможность клонирования веток, что позволяет создавать локальные копии удаленных репозиториев и работать с определенными версиями проекта. Этот механизм. . .
Как в цикле обойти строки DataFrame в Pandas Python
bytestream 24.01.2025
DataFrame представляет собой одну из основных структур данных в библиотеке Python Pandas, которая организует информацию в виде двумерной таблицы с строками и столбцами. Эта структура данных особенно. . .
Как получить имя текущей ветки в Git
bytestream 24.01.2025
При работе с Git часто возникает необходимость определить имя текущей ветки, в которой ведется разработка. Знание текущей ветки является критически важным аспектом для эффективного управления. . .
Как отсортировать массив объектов по значению поля объекта в JavaScript
bytestream 24.01.2025
При разработке веб-приложений на JavaScript разработчики часто сталкиваются с необходимостью работать с массивами объектов. Эти структуры данных представляют собой упорядоченные наборы элементов, где. . .
Ошибка "src refspec master does not match any" при пуше коммита в Git
bytestream 24.01.2025
При работе с системой контроля версий Git разработчики нередко сталкиваются с различными ошибками, одной из которых является сообщение "src refspec master does not match any". Эта ошибка возникает. . .
Как округлить не более двух цифр после запятой в JavaScript
bytestream 24.01.2025
При работе с числами в JavaScript разработчики часто сталкиваются с необходимостью округления десятичных значений до определенного количества знаков после запятой. Это особенно важно при работе с. . .
Как сделать UPDATE из SELECT в SQL Server
hw_wired 24.01.2025
В современных системах управления базами данных операции обновления и выборки данных являются фундаментальными инструментами для работы с информацией. SQL Server предоставляет мощные команды UPDATE и. . .
Как вставить элемент в массив на указанный индекс в JavaScript
hw_wired 24.01.2025
Массивы являются одной из фундаментальных структур данных в JavaScript, предоставляющей разработчикам мощный инструмент для хранения и управления упорядоченными наборами данных. Они позволяют хранить. . .
Чем отличаются HashMap и Hashtable в Java
hw_wired 24.01.2025
В мире разработки на Java существует множество инструментов для работы с коллекциями данных, и среди них особое место занимают структуры данных для хранения пар ключ-значение. HashMap и Hashtable. . .
Как конвертировать видео в GIF
hw_wired 24.01.2025
В современном мире анимированные изображения стали неотъемлемой частью цифровой коммуникации. Формат GIF (Graphics Interchange Format) представляет собой особый тип файлов, который позволяет. . .
Как скопировать текст в буфер обмена на JavaScript во всех браузерах
hw_wired 24.01.2025
Копирование текста в буфер обмена стало неотъемлемой частью современных веб-приложений, значительно улучшающей пользовательский опыт и упрощающей работу с контентом. В эпоху активного обмена. . .
Как скрыть клавиатуру на Android
hw_wired 24.01.2025
При разработке Android-приложений часто возникает необходимость управлять видимостью экранной клавиатуры для улучшения пользовательского опыта. Одним из наиболее эффективных способов контроля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru