1) Напишите цикл, который убирает из списка чисел от 1 до 15 все числа, кратные 3. Используйте оператор continue. 2) Из списка первого упражнения выведите на экран все числа меньше 7. Используйте оператор break
Допустим у тебя не список, а массив, по сути то же самое
Создаёшь второй массив той же длинный
Заполняешь его нулями через for
Снова пишешь цикл for по первому массиву, через оператор if проверяешь делиться ли число на 3. Если не делится пишешь условие что во второй массив засовываешь число.
Делаешь третий цикл for, и если число не равно нулю то записываешь в третий массив, с использованием continue, иначе делаешь break.
2) Опять делаешь массив for, и если число меньше семи выводишь, иначе делаешь break.
// PascalABC.NET 3.1, сборка 1219 от 16.04.2016 type Matrix=array[,] of integer;
procedure MatPrint(a:Matrix); begin var m:=Length(a,1)-1; for var i:=0 to Length(a,0)-1 do begin for var j:=0 to m do Write(a[i,j]:4); Writeln end end;
function IsEqual(a:Matrix; col:integer):boolean; begin var s:=sign(a[0,col]); for var i:=1 to Length(a,0)-1 do s+=sign(a[i,col]); if (s=0) then Result:=(a[0,col]<>0) else Result:=false end;
procedure DeleteCol(var a:Matrix; col:integer); begin var n:=Length(a,0)-1; var m:=Length(a,1)-1; for var j:=col+1 to Length(a,1)-1 do for var i:=0 to n do a[i,j-1]:=a[i,j]; SetLength(a,n+1,m) end;
begin var n:=ReadInteger('Строк:'); var m:=ReadInteger('Столбцов:'); var a:=MatrixRandom(n,m,-99,99); Writeln('Исходная матрица'); MatPrint(a); for var j:=Length(a,1)-1 downto 0 do if IsEqual(a,j) then DeleteCol(a,j); Writeln('Результирующая матрица'); MatPrint(a); end.
var f:file of integer; i,k:integer; begin Randomize; Assign(f,'in.dat'); Rewrite(f); for i:=1 to 20 do begin k:=Random(99)+1; Write(f,k) end; Close(f) end.
uses Crt; const nn=100; var i,j,k,n:integer; fin,fout:file of integer; a:array[1..nn] of integer; dub:boolean; begin ClrScr; Assign(fin,'in.dat'); Reset(fin); Read(fin,k); if not eof(fin) then begin n:=1; Write(k,' '); a[n]:=k end else n:=0; while (not eof(fin)) and (n<=nn) do begin Read(fin,k); Write(k,' '); j:=1; dub:=false; while (j<=n) and (not dub) do begin dub:=(a[j]=k); Inc(j); end; if not dub then begin Inc(n); a[n]:=k; Inc(j) end end; Writeln; Close(fin); for i:=1 to n do Write(a[i],' '); Writeln; Writeln('n=',n); Assign(fout,'out.dat'); Rewrite(fout); Write(fout,n); Close(fout); ReadKey end.
В качестве бонуса - решение этой же задачи в современной системе программирования PascalABC.NET.
// PascalABC.NET 3.1, сборка 1219 от 16.04.2016 begin var fin,fout:file of integer; Reset(fin,'in.dat'); var k:integer; var a:=new integer[fin.FileSize]; var n:=0; while not eof(fin) do begin Read(fin,k); a[n]:=k; Inc(n) end; Close(fin); a.Println; var b:=a.ToHashSet; b.Println; Writeln('n=',b.Count) end.
И вопрос: для чего давать школьникам, 9/10 из которых никогда не будут программистами, устаревшие и громоздкие, сложные для понимания, написания и отладки системы программирования? Чтобы показать, "как все это сложно"?
Объяснение:
Не знаю какой язык ЯП, поэтому:
Допустим у тебя не список, а массив, по сути то же самое
Создаёшь второй массив той же длинный
Заполняешь его нулями через for
Снова пишешь цикл for по первому массиву, через оператор if проверяешь делиться ли число на 3. Если не делится пишешь условие что во второй массив засовываешь число.
Делаешь третий цикл for, и если число не равно нулю то записываешь в третий массив, с использованием continue, иначе делаешь break.
2) Опять делаешь массив for, и если число меньше семи выводишь, иначе делаешь break.