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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.04.2020, 13:03   #1
madeofpixels
Новичок
Джуниор
 
Регистрация: 18.04.2020
Сообщений: 1
Печаль Код работает, но не выдает нужный ответ

Здравствуйте! Примите зов отчаяния начинающего программиста. Написала две программы: в первой надо использовать процедуру ввода одномерного массива и функцию вычисления количества четных отрицательных элементов, а во второй - составить процедуру, которая заменяет все гласные буквы в строке на цифру 5. Объясните кто-нибудь, пожалуйста, где ошибки и как их исправить.

Код:
const n=10;
type Mas=array[1..n] of integer;
var kol:integer;
      Line:Mas;
      procedure Vvod(a:Mas);
                var i:integer;
         begin
          for i:=1 to n do
           begin
            write('vvedite element s indexom ',i,'='); readln(a[i])
           end;
         end;
      function Cet(a:Mas):integer;
             var i,k:integer;
         begin
            k:=0;
            for i:=1 to n do
              if (a[i] mod 2=0) and (a[i]<0) then inc(k);
            if k>0 then writeln('kolvo cetnyh otriz elementov= ',k)
                      else writeln('cetnyh otriz elementov net');
           Cet:=k
         end;
begin
 Vvod(Line);
 kol:=Cet(Line);
 readln
end.
Код:
var str:string;
      procedure Zamena(s:string);
                var i:integer;
      begin
       for i:=1 to length(s) do
         if (s[i]='a') or (s[i]='e') or (s[i]='i') or (s[i]='o') or
         (s[i]='io') or (s[i]='y') or (s[i]='iu') or (s[i]='ia') then
         Insert('5',s,i);
      end;
begin
 write('vvedite stroku= '); readln(str);
 Zamena(str);
 writeln('izmenennaya stroka= ',str);
 readln
end.
madeofpixels вне форума Ответить с цитированием
Старый 18.04.2020, 15:48   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

ЕСЛИ мы хотим чтобы изменения параметров процедур "остались" и после работы оных, то надо
Код:
procedure Vvod(var line: Mas);
Код:
procedure Zamena(var s: string);
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 18.04.2020, 19:05   #3
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,304
По умолчанию

Немного расширю ответ.
Передача параметров в подпрограмму (процедуру, функцию) может выполняться двумя путями.
1. Передаём собственно значение.
2. Передаём адрес, где находится значение.
Транслятору надо указать каким способом вы оформили такую передачу.
В Паскале это указание выполняется через запись, перед аргументом, волшебного слова var или const.
Если таких "волшебных" слов нет, то в п/п передаётся значение.
Если указано слово var, то в п/п передаётся адрес, и п/п может как получить значение по этому адресу, так и изменить это значение на новое.
Если указано слово const, то п/п может только получить значение по этому адресу, но изменить это значение не может (это элемент безопасности).
Более интересно и подробно о передаче параметров написано в книге: Т.А. Павловская, Программирование на ЯВУ. Паскаль.
Книга лежит в литературе этого раздела (предпоследняя страница).

PS: Меня, за повторные ссылки на эту книгу, скоро станут считать ...
Но это очень хорошая книга по Паскалю: достаточно строгое, но внятное изложение материала с большим числом примеров.
Кроме этого в ней представлен широкий диапазон знания - от синтаксиса Паскаля, до понимания ООП и программирования в Windows.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Си Бинарное дерево , неправильный ответ выдает функция maximo171 Помощь студентам 0 10.12.2018 16:52
C# Можете объяснить почему программа выдает неправильный ответ? shkap Помощь студентам 4 07.06.2017 18:41
Выдает неправильный ответ - метод половинного деления. Срочно!!! cyx Помощь студентам 0 15.05.2015 23:56
выдает ложный ответ win32dll Общие вопросы C/C++ 1 26.12.2013 10:02
Программа выдает неверный ответ(c++) inmanika Помощь студентам 5 17.11.2011 21:23