На Паскале:
program Program1;
var i, j, n, k: integer;
var result: real;
var array1: array [1..255] of real;
begin
result := 0;
write('Введите значение N (не более 255): ');
readln(n);
for i := 1 to n do
begin
write('Введите значение ', i, ' элемента массива: ');
readln(array1[i]);
end;
begin
writeln('Массив, размером - ', n, ' элементов(а):');
for i := 1 to n do write(array1[i], ' ');
writeln;
end;
for i:=1 to n do
begin
k := 0;
for j:=1 to n do
if array1[i] = array1[j] then k := k + 1;
if k = 1 then result := result + array1[i];
end;
writeln('Сумма уникальных элементов массива = ', result);
<span>end.</span>
Запишу сначала за вас условие до конца:
Первая строка ввода содержит два числа A и B, разделенных пробелом (1 ≤ A, B ≤ 10 000 000).Выведите все возможные значения для количества емкостей по 60 литров, которые окажутся заполненными (в том числе одна возможно частично), в порядке возрастания или число −1, если значения A и B противоречат друг другу, то есть они были записаны неверно.
Теперь к вопросам по форме.
Во-первых, если в условии указаны ограничения на входные данные, им можно верить, проверять, что 1 <= A, B <= 10000000 не обязательно.
Во-вторых, научитесь пользоваться &&, ||, это позволит не дублировать код. 4 раза написанное else Console.WriteLine("-1"); не очень помогает читать.
А уже теперь по сути.
Ваше условие противоречивости условия |50A - 70B| < 50 нехорошее. Если общий объем колы, например, 141, то A = 3, B = 3, но при этом |50A - 70B| = 60, что больше 50.
Смотрю дальше.
если 50A < 70B, то если 50A не делится на 60, то ответ [(50A - 49)/60] + 1 или [50A/60] + 1 (если это одно и то же, не важно). Это тоже как минимум не очевидно: представим, что [(70B-69)/60] + 1 оказался больше, чем [(50A-49)/60] + 1. Тогда ответ точно неверен.
Какие были бы мои рассуждения:
Поищем, какое могло бы быть общее количество колы. Пусть её N, тогда
50(A - 1) < N <= 50A
70(A - 1) < N <= 70B
Тогда max(50A - 50, 70B - 70) < N <= min(50A, 70B).
Если max(50A - 50, 70B - 70) >= min(50A, 70B), то решений нет, надо выводить -1. Иначе думаем дальше.
Строгое неравенство иметь что-то не хочется, сделаем из него нестрогое. Если добавлю к левой части 1, то количество 60-литровых ёмкостей явно не поменяется, зато неравенство станет нестрогим. Пусть так и будет, раз ответ не меняется. Только в проверке равенство поменяю на строгое.
max(50A - 50, 70B - 70) + 1 <= N <= min(50A, 70B)
Теперь просто считаем число ёмкостей слева, справа, и выводим все числа от первого до второго.
Поняв всё это, просто превращаем слова в программу.
using System;
class CocaCola
{
public static void Main (string[] args)
{
int A = int.Parse(Console.ReadLine()),
B = int.Parse(Console.ReadLine());
int lowerLimit = Math.Max(50 * A - 50, 70 * B - 70) + 1;
int upperLimit = Math.Min(50 * A, 70 * B);
if (lowerLimit > upperLimit)
{
Console.Write(-1);
return;
}
for (int i = (int)Math.Ceiling(lowerLimit / 60.0); i <= Math.Ceiling(upperLimit / 60.0); i++)
Console.Write("{0} ", i);
}
}
Const n=10;
var A : Array [1..10] of integer;
i, mini, maxi, min,max, c,k: integer;
begin
for i := 1 to n do
begin
A[i] := random(10);
write(' ',A[i]);
end;
maxi:=1;
mini:=1;
For i:=1 to n do
begin
min:=A[1];
If A[i]>max then
begin
max:=A[i];
maxi:=i;
end;
If A[i]<min then
begin
min:=A[i];
mini:=i;
end;
c:=A[maxi];
A[maxi]:=A[mini];
A[mini]:=c;
end;
Writeln;
for i:=1 to n do
begin
Write(' ',a[i]);
end;
Writeln;
for i:=1 to n do
begin
If a[i]>4 then
begin
a[i]:=4;
inc(k);
end;
Write(' ',a[i]);
end;
Writeln;
Write('Количество: ',k);
<span>end.</span>
Пишу задание вторым номером, поэтому постараюсь на качество.
Нам нужно найти сначала сумму всего роста, потом поделить его на общее количество учеников. Потом сопоставить каждый элемент со средним числом и высчитать количество высоких учеников.
Будет это выглядить так:
uses crt; //Если используете паскаль ABC, это строка нужна для удобства
Var a: array [1..25] of real; i,otvet: integer; h,s:real;
//Объявляем переменные. Массив,среднее число и суммарный рост - любые числа. Сам ответ - целые числа
Begin
For i:=1 to 25 do begin
Writeln('Введите рост ученика номер ',i); readln(a[i]);
//Здесь мы вводим рост с клавиатуры
end;
For i:=1 to 25 do
s:=s+a[i];
//находим суммарный рост всех учеников
h:=s/25;
// делим на их количество. Теперь переменная h - это средний рост
For i:=1 to 25 do
if a[i]>h then otvet:=otvet+1;
// А здесь проверяем каждый элемет массива. Если он выше значения среднего роста, мы прибавляем единицу к переменной "otvet". Там мы считаем количество высоких уч.
Writeln('Средний рост в классе равен ',h);
Writeln('Количество высоких учеников в классе равно ',otvet);
//вывод данных
end.