Питання по SQL Напишіть запит, що дозволяє вивести імена й ідентифікатори всіх студентів, для яких точно відомо, що вони проживають у місті, де немає жодного університету.
1. Чтобы найти количество чисел, кратных восьми, на заданном интервале [a;b], надо найти на этом интервале ближайшее к a число и потом прибавлять к нему по восемь, пока не пройдем весь интервал, считая, сколько чисел Но это глуповатый Он просто и бездумно программируется, но как считали раньше, когда компьютеров не было? Определим остаток от деления а на 8. Если он нулевой, то a - первое из найденных чисел. Остаток от деления 121 на 8 равен 1, т.е. нам не повезло. Тогда прибавим к значению а число 8 и вычтем найденный остаток.121+8-1=128. Это и есть наше первое число. Сужаем интервал [128;400]. Чтобы найти, сколько на нем чисел, кратных 8, надо разделить нацело 400-128 на 8 и прибавляем к результату единицу. Получаем 35 - это и есть ответ. Программу составим универсальную, которая будет находить на интервале [a;b] количество чисел, кратных m.
PascalABC.NET 3.3.5, сборка 1659 от 09.04.2018 Внимание! Если программа не работает, обновите версию!
begin var (a,b):=ReadInteger2('Введите через пробел границы интервала:'); var m:=ReadInteger('Укажите число для поиска кратных ему:'); var r:=a mod m; if r>0 then a:=a+8-r; Writeln('Количество чисел равно ',(b-a) div m +1) end.
Пример Введите через пробел границы интервала: 121 400 Укажите число для поиска кратных ему: 8 Количество чисел равно 35
2. В этой задаче все совсем просто. Читаем очередное число p, находим остаток от деления p на восемь. Если он ненулевой, проверяем, чтобы остаток от деления p на 10 был равен двум. Если и это верно, добавляем p к накапливаемой сумме s. Так поступаем n раз.
begin var n:=ReadInteger('n='); var s:=0; var p:integer; for var i:=1 to n do begin Read(p); if p mod 8 <> 0 then if p mod 10 = 2 then s:=s+p end; Writeln('Сумма отобранных чисел равна ',s) end.
Пример n= 8 127 32 222 45 80 832 702 29 Сумма отобранных чисел равна 924
Var f:text; ars:array of string; s,s1:string; min,n,i:integer; begin n:=1; min:=integer.MaxValue; assign(f,'text.txt'); reset(f); while not(Eof(f)) do begin readln(f,s); s1:=s; s:=s.Trim; i:=1; while i<>length(s) do if (s[i]=' ') and (s[i+1]=' ') then delete(s,i,1) else inc(i); if ((s.split).length<=min) and ((s.split).length<>0) then begin if (s.split).length=min then begin inc(n); setlength(ars,n); ars[n-1]:=s1; end else begin n:=1; setlength(ars,n); ars[n-1]:=s1; end; min:=(s.split).length; end; end; close(f); assign(f,'text1.txt'); rewrite(f); for i:=0 to n-1 do writeln(f,ars[i]); close(f); end.
Определим остаток от деления а на 8. Если он нулевой, то a - первое из найденных чисел. Остаток от деления 121 на 8 равен 1, т.е. нам не повезло. Тогда прибавим к значению а число 8 и вычтем найденный остаток.121+8-1=128. Это и есть наше первое число. Сужаем интервал [128;400]. Чтобы найти, сколько на нем чисел, кратных 8, надо разделить нацело 400-128 на 8 и прибавляем к результату единицу. Получаем 35 - это и есть ответ.
Программу составим универсальную, которая будет находить на интервале [a;b] количество чисел, кратных m.
PascalABC.NET 3.3.5, сборка 1659 от 09.04.2018
Внимание! Если программа не работает, обновите версию!
begin
var (a,b):=ReadInteger2('Введите через пробел границы интервала:');
var m:=ReadInteger('Укажите число для поиска кратных ему:');
var r:=a mod m;
if r>0 then a:=a+8-r;
Writeln('Количество чисел равно ',(b-a) div m +1)
end.
Пример
Введите через пробел границы интервала: 121 400
Укажите число для поиска кратных ему: 8
Количество чисел равно 35
2. В этой задаче все совсем просто. Читаем очередное число p, находим остаток от деления p на восемь. Если он ненулевой, проверяем, чтобы остаток от деления p на 10 был равен двум. Если и это верно, добавляем p к накапливаемой сумме s. Так поступаем n раз.
begin
var n:=ReadInteger('n=');
var s:=0;
var p:integer;
for var i:=1 to n do begin
Read(p);
if p mod 8 <> 0 then
if p mod 10 = 2 then s:=s+p
end;
Writeln('Сумма отобранных чисел равна ',s)
end.
Пример
n= 8
127 32 222 45 80 832 702 29
Сумма отобранных чисел равна 924
Var
f:text;
ars:array of string;
s,s1:string;
min,n,i:integer;
begin
n:=1;
min:=integer.MaxValue;
assign(f,'text.txt');
reset(f);
while not(Eof(f)) do
begin
readln(f,s);
s1:=s;
s:=s.Trim;
i:=1;
while i<>length(s) do
if (s[i]=' ') and (s[i+1]=' ') then delete(s,i,1) else inc(i);
if ((s.split).length<=min) and ((s.split).length<>0) then
begin
if (s.split).length=min then
begin
inc(n);
setlength(ars,n);
ars[n-1]:=s1;
end
else
begin
n:=1;
setlength(ars,n);
ars[n-1]:=s1;
end;
min:=(s.split).length;
end;
end;
close(f);
assign(f,'text1.txt');
rewrite(f);
for i:=0 to n-1 do
writeln(f,ars[i]);
close(f);
end.
Содержимое файла text.txt:
Хей патимейкер
уличный
денсер
шейкер шейкер
Содержимое файла text1.txt:
уличный
денсер