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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.11.2016, 19:06   #1
KatyaV
Новичок
Джуниор
 
Регистрация: 06.11.2016
Сообщений: 2
По умолчанию Заменить все элементы массива, которые делятся без остатка на «3», на единицы (9);

Что делаю не так?
Код:
uses crt;
const nmax=9;
var a:array[1..nmax] of integer;
    n,i:integer;
begin
radomize;
repeat
write('Введите элементы массива,в том числе ноли:');
for i:=1 to n do
begin 
  write ('a[',i,']=');
  read(a[i]);
  end;
clrscr;
writeln('Исходный массив:');
for i:=1 to n do
write(a[i],' ');
writeln;
writeln('Замена всех элементов массива, которые делятся без остатка на 3:');
for i:=1 to n do
 begin
  if a[i]<>0 then a[i]:=a[i]/3;
  write(a[i],' ');
 end;
end.

Последний раз редактировалось Аватар; 06.11.2016 в 19:35.
KatyaV вне форума Ответить с цитированием
Старый 06.11.2016, 21:57   #2
Sweta
Форумчанин
 
Регистрация: 22.11.2007
Сообщений: 664
По умолчанию

Код:
for i:=1 to n do
 begin
  if a[i]<>0 then a[i]:=a[i]/3;
В этой части. Сначала необходимо проверить делится ли a[i] на 3 без остатка (используя функцию mod), а потом присвоить a[i] значение 1.
Неприятности приходят и уходят, а жизнь продолжается!

Последний раз редактировалось Sweta; 06.11.2016 в 22:07.
Sweta вне форума Ответить с цитированием
Старый 07.11.2016, 10:32   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Sweta абсолютно права.

но у Вас в коде ещё куча ошибок. начиная от чисто синтаксических (посмотрите, например, как у Вас записан вызов функции иницилизации генератора псевдослучайных чисел: Randomize;
и заканчивая тем, что Вы количество элементов n используете, а нигде её не вводите.


сравните со своим кодом, проанализируйте,
если есть вопросы - спрашивайте:
Код:

uses
  crt;

const
  nmax = 9;

var
  a: array[1..nmax] of integer;
  n, i: integer;

begin
  repeat
    Write('Введите количество элементов в массиве n: ');
    ReadLn(n);
    if n < 1 then WriteLn('Неверно, число n должно быть больше нуля');
    if n > nmax then WriteLn('Неверно, число n должно быть меньше максимально заданного числа, меньше ', nmax);
  until (n >= 1) and (n <= nmax);
  write('Введите элементы массива,в том числе ноли:');
  for i := 1 to n do
  begin
    write('a[', i, ']=');
    read(a[i]);
  end;
  Readln;  
  clrscr;
  writeln('Исходный массив:');
  for i := 1 to n do
    write(a[i], ' ');
  writeln;
  
  writeln('Замена всех элементов массива, которые делятся без остатка на 3:');
  for i := 1 to n do 
  begin
    if a[i] mod 3 = 0 then a[i] := 1;
    write(a[i], ' ');
  end;
  writeln;
  ReadLn
end.

Последний раз редактировалось Serge_Bliznykov; 07.11.2016 в 10:39.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсчитать элементы последовательности которые делятся на 3 studentus1985 Паскаль, Turbo Pascal, PascalABC.NET 20 21.10.2014 22:16
Обработка массива с числами (разделить на два отдельных массива и вывести все числа, которые делятся на X ) Grag963 Помощь студентам 2 21.11.2013 16:51
заменить все отрицательные числа массива на единицы (программа есть написаная правильно, но нужно сделать её в виде подпрограммы) программирование Помощь студентам 1 04.06.2013 08:26
Файлы. Выбрать все значения, которые делятся нацело на 2 и 4, но не делятся на 6 MrRuslanBB Visual C++ 3 31.05.2013 22:27
заменить элементы одномерного массива, стоящие перед минимальным - на нули, а стоящие после максимального - на единицы (Паскаль) Женька Good Помощь студентам 2 01.12.2011 06:22