Другие языки программирования и технологии
Паскаль!!11! Помогите с задачей.
Составить программу нахождения для заданного натурального числа N всех делителей, кратных 3. Примеры: Вход 6 Выход 3 6 Есть идеи по решению?
Держи
Program N;
var
n,i:integer;
begin
writeln('Введите число N');
readln(n);
for i:=1 to n do if (n mod i=0)and(i mod 3=0) then write(i:3);
end.
P.S. Лучший ответ поставить не забудь пожалуйста
Program N;
var
n,i:integer;
begin
writeln('Введите число N');
readln(n);
for i:=1 to n do if (n mod i=0)and(i mod 3=0) then write(i:3);
end.
P.S. Лучший ответ поставить не забудь пожалуйста
Ещё вариант с комментариями:
var N, D : Word;
begin
Write('Введите N = '); ReadLn(N);
D := 0;
repeat
D := D + 3; { Следующее кратное трём }
if N mod D = 0 then Write(D); { Если число N длится на D без остатка, то выводим его }
until D >= N; { Выход из цикла, если делитель больше либо равен N }
WriteLn; { В конце строки делаем возврат каретки }
end.
var N, D : Word;
begin
Write('Введите N = '); ReadLn(N);
D := 0;
repeat
D := D + 3; { Следующее кратное трём }
if N mod D = 0 then Write(D); { Если число N длится на D без остатка, то выводим его }
until D >= N; { Выход из цикла, если делитель больше либо равен N }
WriteLn; { В конце строки делаем возврат каретки }
end.
Я может чуть-чуть не в себе, но всё-же.. . Если решать "влоб", то хотя-бы так
Зачем перебирать ВСЕ делители, особенно начиная с 1??!,ввод числа не сделал - лениво =) да и так понятно.. .
Если C++
#include <iostream>
using namespace std;
void main()
{
int i=12;
for(int j=3;j<=i;j+=3)
if (!(i % j)) cout << j << endl;
}
Если паскаль, то, что-то вроде:
var
i,j:integer;
begin
i:=12;
for j:=3 to i do
begin
if (i mod j=0) then write(j:3);
inc(j,2);
end;
end.
inc(j,2) - инкремент на 2, а for добавит ещё один для шага 3
Упс. . не все версии компилятора паскаль разрешают менять значение переменной в цикле, если это переменная используется как "счетчик" ( inc(j,2) работает не везде) ,
потому
var i,j:integer;
begin
i:=12;
j:=3;
while(j<=i) do
begin
if (i mod j=0) then WriteLn(j:3);
inc(j,3);
end;
end.
Зачем перебирать ВСЕ делители, особенно начиная с 1??!,ввод числа не сделал - лениво =) да и так понятно.. .
Если C++
#include <iostream>
using namespace std;
void main()
{
int i=12;
for(int j=3;j<=i;j+=3)
if (!(i % j)) cout << j << endl;
}
Если паскаль, то, что-то вроде:
var
i,j:integer;
begin
i:=12;
for j:=3 to i do
begin
if (i mod j=0) then write(j:3);
inc(j,2);
end;
end.
inc(j,2) - инкремент на 2, а for добавит ещё один для шага 3
Упс. . не все версии компилятора паскаль разрешают менять значение переменной в цикле, если это переменная используется как "счетчик" ( inc(j,2) работает не везде) ,
потому
var i,j:integer;
begin
i:=12;
j:=3;
while(j<=i) do
begin
if (i mod j=0) then WriteLn(j:3);
inc(j,3);
end;
end.
Откуда задание? Школа же еще не началась
Похожие вопросы
- Помогите решить задачу на Турбо паскале
- ПОМОГИТЕ С ЗАДАЧАМИ В ПАСКАЛЕ
- Помогите решить задачи по Паскалю
- помогите решить задачу на паскале: напечатать "столбиком" значения sin2, sin3, ..sin 20.
- ПОМОГИТЕ НАПИСАТЬ ЗАДАЧИ НА ПАСКАЛЕ
- Помогите написать задачи в паскале!!!!
- Помогите решить задачу в паскале
- Помогите решить) Задачи по программированию в Паскале
- Помогите решить задачу в паскале. Задание: Заменить в строке все вхождения "да" на "нет".
- Помогите решить задачу Паскаль