Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 04.07.2020, 16:53   #1 (permalink)
masha484
Новичок
 
Регистрация: 02.07.2020
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Перевод из 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.
Нужно перевести на С++. Так как не владею синтаксисом Паскаля прошу помощи у знающих.
masha484 вне форума   Ответить с цитированием

Старый 04.07.2020, 16:53
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Зачастую можно найти решение сразу, если обратить внимание на похожие темы

Перевод с Pascal на СИ
Перевод c C++ на Pascal
Перевод win 7

Старый 04.07.2020, 19:08   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от masha484 Посмотреть сообщение
Так как не владею синтаксисом Паскаля прошу помощи у знающих.
Уважаемая Маша, а синтаксисом 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, не пишу.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Метки
c++, pascal


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 19:11.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.