const nn=100; // предельное кол-во элементов в массиве type mas=array[1..nn] of integer;
procedure RandomArray(var a:mas;n,p,q:integer); // Заполняет первые n элементов массива a // случайными числами из интервала [p;q] var i:integer; begin for i:=1 to n do a[i]:=Random(q-p+1)+p end;
procedure PrintArray(a:mas;n:integer); // Выводит на экран первые n элементов массива a var i:integer; begin for i:=1 to n do Write(a[i],' '); Writeln end;
procedure SortByDescending(var a:mas;n:integer); // Сортирует по невозрастанию первые n элементов массива a. // Элементарная обменная сортировка var i,j,t:integer; begin for i:=1 to n-1 do for j:=1 to n-1 do if a[j]<a[j+1] then begin t:=a[j]; a[j]:=a[j+1]; a[j+1]:=t end end;
// Основная программа var i,n1,n2,n3,x,y:integer; a,b,c:mas; begin Randomize; Write('Кол-во элементов в массиве и границы интервала из значений: '); Read(n1,x,y); RandomArray(a,n1,x,y); Write('Кол-во элементов в массиве и границы интервала из значений: '); Read(n2,x,y); RandomArray(b,n2,x,y); Write('Первый массив: '); PrintArray(a,n1); Write('Второй массив: '); PrintArray(b,n2); Writeln('Объединенный массив, отсортированный по невозрастанию'); n3:=n1+n2; for i:=1 to n1 do c[i]:=a[i]; for i:=1 to n2 do c[i+n1]:=b[i]; SortByDescending(c,n3); PrintArray(c,n3) end.
Тестовое решение Кол-во элементов в массиве и границы интервала из значений: 8 10 60 Кол-во элементов в массиве и границы интервала из значений: 6 30 90 Первый массив: 41 56 14 57 52 51 30 54 Второй массив: 76 36 44 39 68 38 Объединенный массив, отсортированный по невозрастанию 76 68 57 56 54 52 51 44 41 39 38 36 30 14
2. На самом деле эту же задачу можно написать гораздо короче
// PascalABC.NET 3.1, сборка 1246 от 23.05.2016 begin var n1,n2,x,y:integer; Write('Кол-во элементов в массиве и границы интервала из значений: '); Read(n1,x,y); var a:=ArrRandom(n1,x,y); Write('Кол-во элементов в массиве и границы интервала из значений: '); Read(n2,x,y); var b:=ArrRandom(n2,x,y); Write('Первый массив: '); a.Println; Write('Второй массив: '); b.Println; Writeln('Объединенный массив, отсортированный по невозрастанию'); var c:=(a+b).SortedDescending; c.Println end.
#include <iostream> //подключаем библиотеки #include <windows.h> //подключаем библиотеки #include <stdio.h> //подключаем библиотеки #include <conio.h> //подключаем библиотеки #include <string> //подключаем библиотеки using namespace std; //танцы с бубном int main() //танцы с бубном 2 { setlocale( LC_ALL,"Russian" ); //выводим все русскими буквами float s; //расстояние float r; //расход бензина float c; //цена бензина float k; //результат float b; //затраченный бензин float f; //удвоенное значение b float n; //объем бака float p; //проценты бака float g; //удвоить ли b float i; //скока баков потратите float z; //скока литров топлива потратите
cout << "Программа для вычисления стоимости поездки куда-либо и обратно\n"; //пишем, что за прога
cout << "Расстояние до места назначения (км) -> "; //просим ввести данные v:s; //ставим метку для возвращения cin >> s; //считываем значение if (s <= 0) //ставим условие если переменная меньше или равно 0, тогда пишем ошибку и возвращаемся { cout << "Ошибка. Расстояние не может быть равно 0, введите еще раз -> "; goto v; }
cout << "Расход топлива (литров на 100 км пробега) -> "; //просим ввести данные x:r; //ставим метку для возвращения cin >> r; //считываем значение if (r <= 0) //ставим условие если переменная меньше или равно 0, тогда пишем ошибку и возвращаемся { cout << "Ошибка. Расход топлива не может быть равно 0, введите еще раз -> "; goto x; }
cout << "Цена литра топлива (руб.) -> "; //просим ввести данные y:c; //ставим метку для возвращения cin >> c; //считываем значение if (c <= 0) //ставим условие если переменная меньше или равно 0, тогда пишем ошибку и возвращаемся { cout << "Ошибка. Цена литра топлива не может быть равно 0, введите еще раз -> "; goto y; }
cout << "Введите объем бака (литров) -> "; //просим ввести данные h:n; //ставим метку для возвращения cin >> n; //считываем значение if (n <= 0) //ставим условие если переменная меньше или равно 0, тогда пишем ошибку и возвращаемся { cout << "Ошибка. Объем бака не может быть равно 0, введите еще раз -> "; goto h; }
b = r / 100 * s; //рассчитываем значение переменной k = b * c; //рассчитываем значение переменной f = k * 2; //рассчитываем значение переменной
cout << "Учитывать затраты на обратную дорогу? (1 да/0 нет) -> "; //просим ввести данные cin >> g; //считываем значение переменной if (g == 1) //ставим условие, если g = 1, тогда меняем расчета переменных { f = k * 2; b = r / 100 * s; } else { f = k * 1; b = (r / 100 * s) / 2; }
z = n - b; //рассчитываем значение переменной
cout << "\nПоездка до задуманного места обойдется в " << f << " руб.\n"; //выводим данные
cout << "Вы потратите " << b << " литр. топлива\n"; //выводим данные
cout << "У вас останется в баке " << z << " литр. топлива\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"; //выводим данные
system("pause"); //в конце исполнения программы ждем нажатия любой кнопки и закрываемся) }
поскольку все величины выражены в различных единицах, для сравнения приведем их к одним единицам (например, к байтам)
10240 бит =10240/8=1280 байт
160байт переводит не нужно
0,5 Мб=0,5*1024*1024=524288 байт
7Кб=7*1024=7168 байт это и есть ответ
по убыванию величины расположились так:
160 байт, 10240 бит, 7 Кб, 0,5 Мб