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

Перестановка элементов массива массив a(10) состоит из чисел 7, 8 и 9. переставить элементы массива таким образом, чтобы сначала стояли все числа 8, потом – 7, а в конце – 9. (примечание: используется один массив, последний блок в программе должен быть: for i: =1 to 10 do write(a[i], ' '); ) формат входных данных: в единственной строке входного файла 10 чисел разделенных пробелами. формат выходных данных: 10 чисел разделенные пробелами.

👇
Ответ:
aydin6
aydin6
24.05.2020
Var a:array[1..10]of integer;
i,n7,n8,n9:integer;
begin
  for i:=1 to 10 do begin
    read(a[i]);
    if a[i] = 7 then n7+=1;
    if a[i] = 8 then n8+=1;
    if a[i] = 9 then n9+=1;
  end;
  for i:=1 to 10 do begin
    if i<=n8 then a[i]:=8;
    if (i>n8) and (i<=(n7+n8)) then a[i]:=7;
    if i>(n7+n8) then a[i]:=9;
  end;
  for i:=1 to 10 do write(a[i],' ');
end.

Тестовое решение:
9 7 8 9 7 8 9 7 8 9
8 8 8 7 7 7 9 9 9 9
4,4(93 оценок)
Открыть все ответы
Ответ:
kamilfox
kamilfox
24.05.2020

Ошибок тут достаточно, по всем пройдемся.

Первая ошибка, переменная названа как встроенная функция в Python, так делать не нужно.

Вторая ошибка, забыл ограничить if, из-за которого не будет выполняться elif. Меняем его на:

if (sum>=500) and (sum<1000)

Третья ошибка, расчет финальной цены неверный, если использовать вариант, который дан сейчас, то мы найдем процент от этой суммы, а не сумму с начисленными процентами. Меняем на:

final_sum = sums * (1+first_sale)

final_sum = sums * (1+second_sale)

Четвертая ошибка, почему у нас вывод финальной суммы через else? Получается, что если выполняются условия выше, то не выводится сумма. Этот вывод мы можем опустить ниже, а в else написать, что ввели неверные данные (если конечно подразумевается, что пользователь не должен вводить число меньшее 500), либо в elif засунуть эту строку, полной задачи у меня нет, поэтому сам с этим разберешься.

Пятая ошибка, мы не можем сложить строку с числом, нам нужно преобразовать нашу переменную к строке с str().

Исправленный код:

sums = int(input("Введите сумму покупки:"))

first_sale = 0.03

second_sale = 0.05

if sums >= 500 and sums < 1000:

   final_sum = sums * (1+first_sale)

   print("Финальная сумма равна: " + str(final_sum))

elif sums >= 1000:

   final_sum = sums * (1+second_sale)

   print("Финальная сумма равна: " + str(final_sum))

else:

   print("Введены неверные данные")

4,5(23 оценок)
Ответ:
nastiaalecko00
nastiaalecko00
24.05.2020
Var
    a: array [,] of integer;

begin
    var n := ReadlnInteger('n = ');
    var m := ReadlnInteger('m = ');
    var rand := ReadlnInteger('Для ручного ввода нажмите 0');
    
    if rand = 0 then begin
        a := new integer[m, n];
        for var i := 0 to m-1 do
            for var j := 0 to n-1 do
                a[i, j] := ReadlnInteger('a[' + i + ',' + j + '] = ');
    end
    else a := MatrixRandom(m, n, 1, 100);
    Println(a);
    
    var b := ArrGen(n, x -> 1);
    for var i := 0 to m-1 do
        for var j := 0 to n-1 do
            if j mod 2 = 0 then
                b[j] := b[j] * a[i, j];
    
    b.Where((x, i)-> i mod 2 = 0).SortedDescending().Println();
end.
4,5(74 оценок)
Новые ответы от MOGZ: Информатика
Полный доступ к MOGZ
Живи умнее Безлимитный доступ к MOGZ Оформи подписку
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ