• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Перевод из Pascal в C++

  • Автор темы Автор темы masha484
  • Дата начала Дата начала

masha484

Ученик
Регистрация
2 Июл 2020
Сообщения
4
Реакции
0
Баллы
0
Перевод из Pascal в C++

Есть задача: Найти в каждой строке матрицы координаты элемента, равного k (если он есть). Метод поиска - последовательный с барьером.
Есть решение на языке Pascal:
Код:
var
  a: array[,] of integer;
 
BEGIN
  var n := ReadlnInteger('Введите кол-во строк массива: ');
  var m := ReadlnInteger('Введите кол-во столбцов массива: '); 
  
  SetLength(a, n, m + 1); 
  var k := ReadlnInteger('Введите искомый элемент K: ');
  
  for var i := 0 to n - 1 do 
  begin
    for var j := 0 to m - 1 do 
      a[i, j] := ReadLnInteger('Введите элемент массива: ');
    a[i, m] := k;
  end;
  
  for var i := 0 to n - 1 do 
  begin
    var j := 0;
    while k <> a[i, j] do inc(j); 
    if j <> m then
      writeln('Строка: ', i, '; элемент находится в столбце: ', j)
    else writeln('В строке №', i, ' искомого элемента нет');
  end;
END.
Нужно перевести на С++. Так как не владею синтаксисом Паскаля прошу помощи у знающих.
 
Так как не владею синтаксисом Паскаля прошу помощи у знающих.
Уважаемая Маша, а синтаксисом C++ Вы владеете? Если да, то постараюсь Вам помочь, просто изложив то, что представлено в этой программе, а дальше уж Вы сами. Между прочим, это, увы, не Pascal в классическом смысле, а Pascal ABC.NET, язык, в который впихнуты СИ-подобные структуры. Ну ладно, короче говоря, так:

1. Объявляется двумерный целочисленный массив неопределённой размерности (классический Pascal такого не умеет, если только через динамические структуры-указатели).

2. Вводится количество строк (n) и количество столбцов (m). Сразу отмечу, что реально программа работает с количеством столбцов m+1, т.е. от 0 до m.

3. Стандартно двойным циклом от 0 до n-1 по строкам и от 0 до m-1 по столбцам с подсказкой вводятся значения элементов матрицы; причем тело цикла по строкам содержит ещё один дополнительный оператор, которым последнему элементу строки присваивается значение k. Таким образом, все элементы последнего столбца одинаковы и равны k.

4. Ищем совпадения. Делаем цикл по строкам (от 0 до n-1), а в нём цикл с предусловием по столбцам, прерывающийся, когда элемент строки совпадёт с k. Если номер столбца такого элемента меньше m, то выводим номера строки и столбца, если этот номер равен m, то пишем, что искомого элемента в строке нет.

Как-то так.

К сожалению, на C++, да и вообще на C, не пишу.
 
Назад
Сверху