М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
goida82
goida82
29.09.2020 14:20 •  Информатика

Pascal, убрать нули из массива вот код, он генерирует случайные числа и распределяет по массивам, в массив B-положительные, а в массив С-отрицательные. Но появилась проблема, на индексах где нет чисел появляются нули, подскажите как их убрать.

var N, i, j :integer;

A,B,C: array of integer;

begin

write('Введи N=');

readln(N);

setLength(A,N);

setlength(B,N);

setlength(C,N);

for i:=0 to n-1 do

begin

a[i]:=random(33)-14;

write(a[i]:7);

end;

writeln;

j:=0;

for i:=0 to n-1 do

begin

if a[i]>0

then

B[j]:=a[i]

else C[j]:=a[i];

J:=j+1;

end;

writeln;

write('massiv c');

for j:=0 to n-1 do

write(c[j]:7);

writeln;

write('massiv b');

for j:=0 to n-1 do

write(b[j]:7);

end.

👇
Ответ:
ашпшплщ
ашпшплщ
29.09.2020

(см. объяснение)

Объяснение:

Странно вы как-то пишете. Во-первых, где randomize; Во-вторых, зачем в паскале писать random(33)-14, если можно и нужно random(-14; 18) (обратите внимание, что в этом случае второе число включается, то есть 18 будет тоже допустимо). В-третьих, Вы используете динамические массивы вместо обычных, что странно, учитывая, что свойства, которые они дают Вы полноценно не используете (никак кроме setLength, а ведь с ними задача решается в пару строк кода). В четвертых, заглавными буквами принято обозначать константы, а не переменные. В пятых... Короче говоря, вопросов много.

Судя по коду, Вы создаете массив случайных чисел, выводите его, затем пытаетесь в массив B положить положительные элементы, а в C неположительные. После этого выводите массивы C и B. При этом у Вас есть зачем-то J (которую вы то большой, то маленькой пишете, что очень грубо). То есть, сказав, что Ваш код генерирует случайные числа и распределяет по массивам, в массив B-положительные, а в массив С-отрицательные, Вы говорите неверно. У Вас еще есть ноль. И вы тоже его куда-то да распределяете (подсказка: в массив C). Будем считать, что Вы просто неверно выразились и примем, что в C ноль класть нужно.

У Вас возникает проблема в том, что Вы сталкиваетесь с лишними нулями. Но где у Вас гарантия, что в массиве a не будет естественного нуля? Ее нет. Тогда как вы хотите отличить нули естественные, от появившихся по ошибке? Значит Ваша мысль неверна, то есть убрать нули нельзя. То есть такой мысли по идеи не должно было быть вообще. Сейчас не важно, что в коде написан бред и даже неважно то, что Ваша проблема может возникнуть только у того, кто вообще в паскале не разбирается. Просто задумайтесь, почему одна j? Не лучше ли просто ввести два счетчика для массивов B и C по отдельности и как только вы добавили один элемент соответствующий счетчик увеличить? Это единственно правильный случай, если принимать Ваш код за основу и стараться внести в него минимальные правки.

Не буду больше тянуть и приведу поправленный код.

const N = 10;

var i, j, k, p:integer;

   a, b, c: array [1..N] of integer;

begin

 k:= 1;

 p:= 1;

 randomize;

 print('Массив a:');

 for i:= 1 to N do

 begin

   a[i]:= random(-14, 18);

   print(a[i]);

 end;

 writeln;

 for i:= 1 to N do

 begin

   if(a[i] > 0) then

   begin

     b[k]:= a[i];

     k:= k + 1;

   end else

   begin

     c[p]:= a[i];

     p:= p + 1;

   end;

 end;

 k:= k - 1;

 p:= p - 1;

 writeln;

 print('Массив c:');

 for i:= 1 to p do

 begin

   print(c[i]);

 end;

 writeln;

 print('Массив b:');

 for i:= 1 to k do

   print(b[i]);

 readln;

end.

Еще раз подчеркну, что задачу нужно решать так:

##

'Введите N:'.Print;

var a:= ArrRandom(ReadInteger, -14, 18);

var b:= a.Where(x->x>0);

var c:= a.Where(x->x<=0);

'Массив a:'.Print; a.Println;

'Массив b:'.Print; b.Println;

'Массив c:'.Print; c.Println;

Теперь можно с чистой совестью сказать, что...

Задание выполнено!

4,7(50 оценок)
Открыть все ответы
Ответ:
ROMMIT2
ROMMIT2
29.09.2020
1) Пиксель
2) Пространственное разрешение экрана монитора определяется как произведение количества строк изображения на количество точек в строке.
3) Базовые цвета пикселя: красный, зеленый, синий
4) Глубина цвета - это количество бит (объём памяти), используемое для хранения и представления цвета при кодировании одного пикселя
5) Могут быть графическими: Картинка, рисунок, фото, все, что нарисовано.Не могут быть графическими объектами: текстовые файлы, аудиофайлы, видеофайлы, программы
6) Видеопамять - специальная оперативная память для работы с изображением которое выводится на монитор
7) Из пикселей
8) Графических объектов и формул их построения
9) Графический редактор – это специальная программа, предназначенная для просмотра и обработки изображений на компьютере
10) photoshop
11) corel draw
12)  эффективно представляет реальные образы, лучше обрабатываются принтерами
13) растровые изображения занимают большое количество памяти, сложно обрабатываются
14) Легко обрабатываются
15) Большой объем памяти, нереалистичность изображения
4,4(68 оценок)
Ответ:

program Chernovik;

var a: integer;

begin

write ('Введите трехзначное число: ');

readln (a);

if a > ((a mod 10) * (a div 100) * (a div 10 mod 10))

then write ((a mod 10) * (a div 100) * (a div 10 mod 10), ' < ',a)

else write ((a mod 10) * (a div 100) * (a div 10 mod 10),' >= ',a)

end.

Объяснение:

a mod 10 - последняя цифра трёхзначного числа

a div 100 - первая цифра трёхзначного числа

a div 10 mod 10 - средняя цифра трёхзначного числа

div - целочисленное деление

mod - остаток от целочисленного деления

4,4(57 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
Полный доступ к MOGZ
Живи умнее Безлимитный доступ к MOGZ Оформи подписку
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ