alisabutusova
?>

Вычислить сумму натуральных чисел, кратных 3, меньшую 100. паскаль

Информатика

Ответы

benonika
Минимальное число, кратное 3 - это само число 3. А дальше увеличиваем числа на 3...

// PascalABC.NET 3.2, сборка 1381 от 04.02.2017
// Внимание! Если программа не работает, обновите версию!

begin
  var n:=3;
  var s:=0;
  repeat
    s+=n;
    if s>=100 then begin s-=n; break end
    else
      if n<>3 then Write('+',n) else Write(n);
    n+=3
  until false;
  Writeln('=',s)
end.

Результат
3+6+9+12+15+18+21=84
qelmar461
 var i,sum:integer; 
begin 
sum:=0;
 for i:= 1 to 100 do
begin
 if (i mod 3 = 0) and (sum+i<100) then
sum:=sum+i;
 end; 
writeln(sum);
 end.
koll23
1. "Школьное" решение

// PascalABC.NET 3.0, сборка 1073
const
  sb='bcdfgjklmnpqrstvwxz';
  s='Computer programming is a process of computer programs creation';
var
  i,n:integer;
  s1,sn,t:string;
begin
  i:=1;
  while s[i]<>' ' do Inc(i);
  s1:=Copy(s,1,i-1);
  n:=Length(s); i:=n;
  while s[i]<>' ' do Dec(i);
  sn:=Copy(s,i+1,n-i);
  t:='';
  for i:=1 to Length(s1) do
    if Pos(s1[i],sb)>0 then t:=t+s1[i];
  s1:=t;
  t:='';
  for i:=1 to Length(sn) do
    if Pos(sn[i],sb)>0 then t:=t+sn[i];
  sn:=t;
  t:='';
  for i:=1 to Length(s1) do
    if Pos(s1[i],sn)>0 then
      if Pos(s1[i],t)=0 then t:=t+s1[i];
  for i:=1 to Length(t) do Write(t[i],' ');
  Writeln
end.
 
Тестовый прогон:
t r

2. "Нормальное" решение

// PascalABC.NET 3.0, сборка 1073
const
  sb='bcdfgjklmnpqrstvwxz';
  s='Computer programming is a process of computer programs creation';
begin
  var a:=s.ToWords(' ');
  a[0].Intersect(a[a.Length-1]).Where(x->Pos(x,sb)>0).Println(',')
end.

Тестовый прогон:
t,r
манукян29
// Программа генерации случайных лабиринтовuses GraphABC;
const  szw = 70;      // размер лабиринта  szh = 50;  cellsz = 10;   // размер ячейки
type  point = record    x,y: integer;  end;
var  maze: array [0..szw-1] of array [0..szh-1] of integer;  todo: array [0..szw*szh-1] of point;  todonum: integer;
const  dx: array [0..3] of integer = (0, 0, -1, 1);  dy: array [0..3] of integer = (-1, 1, 0, 0);
procedure Init;begin  for var x:=0 to szw-1 do  for var y:=0 to szh-1 do    if (x=0) or (x=szw-1) or (y=0) or (y=szh-1) then      maze[x][y]:=32    else maze[x][y]:=63;
  var x := Random(szw-2)+1;  var y := Random(szh-2)+1;
// Пометить клетку как принадлежащую лабиринту  maze[x][y]:= maze[x][y] and not 48;
// Занести в список todo все ближайшие необработанные клетки  for var d:=0 to 3 do    if (maze[x + dx[d]][y + dy[d]] and 16) <> 0 then    begin      todo[todonum].x := x + dx[d];      todo[todonum].y := y + dy[d];      Inc(todonum);      maze[x + dx[d]][y + dy[d]] := maze[x + dx[d]][y + dy[d]] and not 16;    end;
   // Пока не обработаны все клетки   while todonum > 0 do   begin     // Выбрать из списка todo произвольную клетку     var n := Random(todonum);     x := todo[n].x;     y := todo[n].y;
     // Удалить из списка обработанную клетку     Dec(todonum);     todo[n]:= todo[todonum];
     // Выбрать направление, которое ведет к лабиринту     var dd: integer;     repeat       dd:=Random (4);     until not ((maze[x + dx[dd]][y + dy[dd]] and 32) <> 0);
     // Присоединить выбранную клетку к лабиринту     maze[x][y] := maze[x][y] and not ((1 shl dd) or 32);     maze[x + dx[dd]][y + dy[dd]] := maze[x + dx[dd]][y + dy[dd]] and not (1 shl (dd xor 1));
     // Занести в список todo все ближайшие необработанные клетки     for var d:=0 to 3 do       if (maze[x + dx[d]][y + dy[d]] and 16) <> 0 then       begin         todo[todonum].x := x + dx[d];         todo[todonum].y := y + dy[d];         Inc(todonum);         maze[x + dx[d]][y + dy[d]] := maze[x + dx[d]][y + dy[d]] and not 16;       end;   end;
   maze[1][1] := maze[1][1] and not 1;                 // начало лабиринта - в левом верхнем углу   maze[szw-2][szh-2] := maze[szw-2][szh-2] and not 2; // конец лабиринта - в правом нижнем углуend;
procedure Draw;begin  for var x:=1 to szw-2 do  for var y:=1 to szh-2 do  begin   if ((maze[x][y] and 1) <> 0) then // верхняя стена     Line(x * cellsz, y * cellsz, x * cellsz + cellsz , y * cellsz);   if ((maze[x][y] and 2) <> 0) then // нижняя стена     Line(x * cellsz, y * cellsz + cellsz, x * cellsz + cellsz , y * cellsz + cellsz);   if ((maze[x][y] and 4) <> 0) then // левая стена     Line(x * cellsz, y * cellsz, x * cellsz, y * cellsz + cellsz );   if ((maze[x][y] and 8) <> 0) then // правая стена     Line(x * cellsz + cellsz, y * cellsz, x * cellsz + cellsz, y * cellsz + cellsz);  end;end;
begin  Window.Title := 'Генерация лабиринта';  SetWindowSize(szw*cellsz,szh*cellsz);  Init;  Draw;end.

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Вычислить сумму натуральных чисел, кратных 3, меньшую 100. паскаль
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

strelnikov-aa
xcho1020
LidiyaBorzikh
saidsaleh881
ludmila-malev280
koeman
Aleksandr362
cholga69
vvb1383
Kondratev Ruzavina22
mzubenko6
Yarovitsin
kirill76536
platonovkosty
Borg Fedak1162