задача такова,ввести допустим 5 элементов которые больше 1.и заполнить массив индексами чисел делящихся на 13 и 17. навоял тут чуток,ну что то не понимаю почему не пашет,заработался уже не соображаю.вот черновой вариант. Code: program Project2; {$APPTYPE CONSOLE} var a:array[1..5]of integer; i,n:integer; begin writeln('Ishodnyi massiv'); for i:=1 to 5 do readln(a[i]);{ читаем 5 чисел } if a[i]<=1 then writeln('no!'); { если меньше,равно 1 то выводим сообщение(вот тут че то оно не то } for i:=1 to 5 do write(a[i]:4); { выводим введенные элементы } readln; n:=a[1]; { сортируем пузырьком } for i:=2 to 5 do if a[i]>=n then n:=a[i]; for i:=1 to 5 do if a[i]mod 13=0 then a[i]:=5; {числам делящимся на 13 присваиваем 5 } writeln('noviy massiv'); { выводим новый массив } for i:=1 to 5 do write(a[i]:4); readln; end. в общем допилите за меня код что бы проверка работала и деление на 13 и 17,я так понял что надо проверять остаток.+ сделать вывод не нового массива,а индексов которые делятся на 13 и 17.котелок не варит
Code: program Project2; {$APPTYPE CONSOLE} var a:array[1..5]of integer; i,n,j:integer; begin writeln('Ishodnyi massiv'); for i:=1 to 5 do begin readln(a[i]); if a[i]<=1 then writeln('no!'); end; for i:=1 to 5 do write(a[i]:4); readln; {n:=a[1]; for i:=2 to 5 do if a[i]>=n then n:=a[i];} For i := 4 downto 1 do For j := 1 to i do begin if a[j] > a[j + 1] then begin n:= a[j]; a[j]:= a[j + 1]; a[j + 1]:=n; end; end; for i:=1 to 5 do begin if (a[i] mod 13)=0 then a[i]:=5; if (a[i] mod 17)=0 then a[i]:=15; end; writeln('noviy massiv'); for i:=1 to 5 do write(a[i]:4); readln; end.
ты походу не понял моего поста,смотри допустим если среди этих чисел есть >=1 тогда выводить сообщение,и дальше не продолжать работу,если же все числа >1 тогда проверить их делимость на 13 и 17,и записать в массив индексы,то есть не сами числа массива ,а вот например массив : 13 3 4 5 26 а вывод такой a[1] a[5] а почему не проверяется весь массив ,а только после каждого нажатия enter мне тоже странно как то
Code: program Project2; {$APPTYPE CONSOLE} var a:array[1..5]of integer; intArMassivIndex:array [1..5] of integer; intMaxMassivIndex:integer; i,n,j:integer; begin intMaxMassivIndex:=0; writeln('Ishodnyi massiv'); for i:=1 to 5 do begin readln(a[i]); if a[i]<=1 then begin writeln('no!'); halt; end; end; for i:=1 to 5 do write(a[i]:4); WriteLn; For i := 4 downto 1 do For j := 1 to i do begin if a[j] > a[j + 1] then begin n:= a[j]; a[j]:= a[j + 1]; a[j + 1]:=n; end; end; writeln('Massiv posle sortirovki'); for i:=1 to 5 do write(a[i]:4); WriteLn; for i:=1 to 5 do begin if ((a[i] mod 13=0) or (a[i] mod 17=0)) then begin inc(intMaxMassivIndex); intArMassivIndex[intMaxMassivIndex]:=i; end; end; writeln('Massiv indexov'); for i:=1 to intMaxMassivIndex do write(intArMassivIndex[i]:4); readln; end. А вот это не понял
Вот вариант с проверкой данных после ввода всех чисел Code: program Project2; {$APPTYPE CONSOLE} var a:array[1..5]of integer; intArMassivIndex:array [1..5] of integer; intMaxMassivIndex:integer; i,n,j:integer; begin intMaxMassivIndex:=0; writeln('Ishodnyi massiv'); for i:=1 to 5 do readln(a[i]); for i:=1 to 5 do begin if a[i]<=1 then begin writeln('Invalid data.Halt...'); halt; end; end; for i:=1 to 5 do write(a[i]:4); WriteLn; For i := 4 downto 1 do For j := 1 to i do begin if a[j] > a[j + 1] then begin n:= a[j]; a[j]:= a[j + 1]; a[j + 1]:=n; end; end; writeln('Massiv posle sortirovki'); for i:=1 to 5 do write(a[i]:4); WriteLn; for i:=1 to 5 do begin if ((a[i] mod 13=0) or (a[i] mod 17=0)) then begin inc(intMaxMassivIndex); intArMassivIndex[intMaxMassivIndex]:=i; end; end; writeln('Massiv indexov'); for i:=1 to intMaxMassivIndex do write(intArMassivIndex[i]:4); readln; end.
У тебя сортировка(причём кривая) зачем запихнута в исходный код? Code: n:=a[1]; { сортируем пузырьком } for i:=2 to 5 do if a[i]>=n then n:=a[i]; Я сделал по твоему исходнику. Не нужно сортировки - убери этот кусок кода Code: For i := 4 downto 1 do For j := 1 to i do begin if a[j] > a[j + 1] then begin n:= a[j]; a[j]:= a[j + 1]; a[j + 1]:=n; end; end;