М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
trolz666
trolz666
26.02.2021 03:03 •  Информатика

Решить на турбопаскале: 1.дано натуральное число найти сумму и произведение первых двух чисел. 2.дано n-значное натуральное число. правда ли что квадрат произведения цифр числа равняется кубу суммы цифр числа. 3.составить программу, которая печатает таблицу умножения и сложения натуральных чисел в десятичной системе счисления.

👇
Ответ:
shhfxecbhawc
shhfxecbhawc
26.02.2021
Program  Kasyanova98_1;
uses crt;
var n,nt,p:integer;
  begin
  writeln('***   Alphaues is thinking...   ***');
  write('Ok, введите натуральное число N = ');
  readln(n);
  nt:=n;
  while nt>=10 do
    begin
      p:=nt;
      nt:= nt div 10;
    end;
  writeln('Cумма первых двух цифр числа ',n,' равна ',(p div 10)+(p mod 10));
  writeln('Произведение первых двух цифр числа ',n,' равно ',(p div 10)*(p mod 10));
end.

Program  Kasyanova98_2;
uses crt;
var n,nt,sum,kw,temp:integer;
  begin
  writeln('***   Alphaues is thinking...   ***');
  write('Ok, введите натуральное число N = ');
  readln(n);
  nt:=n;
  sum:=0;
  kw:=1;
  while nt>=1 do
    begin
    temp:=nt mod 10;
    sum := sum + temp;
    kw:=kw * temp;
    nt := nt div 10;
  end;
  if kw*kw=sum*sum*sum then
      writeln('Квадрат произведения цифр числа ',n,' равняется кубу суммы его цифр')
    else
writeln('Квадрат произведения цифр числа ',n,' НЕ равняется кубу суммы его цифр');
end.

Program Kasyanova98_3.1;
uses crt;
const n=10;
var
  x,y:integer;
begin
  writeln('');
  writeln('*                   ТАБЛИЦА УМНОЖЕНИЯ                  *');
  writeln('');
  write('*    * ');
  for y:=1 to n do
    begin
      write(y:2);
      if y<n then write(' | ')
      else      writeln(' * ');
    end;
  writeln('');
  for x:=1 to n do
    begin
      write('* ',x:2, ' * ');
      for y:=1 to n do
         begin
          write(x*y:2);
          if y<n then write(' | ')
        end;
        if x*y<100 then writeln(' * ')
                   else writeln('* ');
        if x<10 then writeln('++')
                else writeln('');
    end;
end.

Program Kasyanova98_3.2;
uses crt;
const n=10;
var
  x,y:integer;
begin
  writeln('');
  writeln('*                   ТАБЛИЦА СЛОЖЕНИЯ                   *');
  writeln('');
  write('*    * ');
  for y:=1 to n do
    begin
      write(y:2);
      if y<n then write(' | ')
      else      writeln(' * ');
    end;
  writeln('');
  for x:=1 to n do
    begin
      write('* ',x:2, ' * ');
      for y:=1 to n do
         begin
          write(x+y:2);
          if y<n then write(' | ')
        end;
        if x+y<100 then writeln(' * ')
                   else writeln('* ');
        if x<10 then writeln('++')
                else writeln('');
    end;
end.
4,5(83 оценок)
Открыть все ответы
Ответ:
lizayka2001
lizayka2001
26.02.2021
1. Программа, создающая файл

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.

Тестовое решение
38 35 14 46 92 49 51 48 84 90 26 14 38 79 82 77 7 24 94 13

2. Основная программа

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.

Тестовое решение:
38 35 14 46 92 49 51 48 84 90 26 14 38 79 82 77 7 24 94 13
38 35 14 46 92 49 51 48 84 90 26 79 82 77 7 24 94 13
n=18

В качестве бонуса - решение этой же задачи в современной системе программирования 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.

Тестовое решение
38 35 14 46 92 49 51 48 84 90 26 14 38 79 82 77 7 24 94 13
38 35 14 46 92 49 51 48 84 90 26 79 82 77 7 24 94 13
n=18

И вопрос: для чего давать школьникам, 9/10 из которых никогда не будут программистами, устаревшие и громоздкие, сложные для понимания, написания и отладки системы программирования? Чтобы показать, "как все это сложно"?
4,7(67 оценок)
Ответ:
belevich031197
belevich031197
26.02.2021
Почему?

Потому что Вы каждый раз, когда матрица симметрична (но не до конца, а на данной итерации), выводите "YES", хотя не знаете, будет ли она симметрична далее.

Как решить?

1. Заведите переменную типа bool:

bool isSymmetrically = true;

2. В теле условия if (a[i][j] != a[j][i]) замените вывод на следующее:

isSymmetrically = false; // матрица не симметрична, можно заканчивать цикл (с

В блоке else:

isSymmetrically = true; // на данном этапе симметрия присутствует

2.1. После вложенного цикла произведите проверку на то, симметрична ли матрица, чтобы в случае несимметричности не продолжать проверку, а сразу сделать вывод:

if (isSymmetrically == false)

{  break;  }

3. После всех циклов вы произвдите следующую проверку:

if (isSymmetrically = true) // если матрица симметрична

{ // вывод YES }

else

{ // вывод NO }

Исправленный код#include <iostream>using namespace std;int main(){    int n = 0;    int a[100][100];    bool isSymmetrically = true;    cin >> n;    for (int i = 0; i < n; i++)    {        for (int j = 0; j < n; j++)        {            cin >> a[i][j];        }        cout << endl;    }    for(int i = 0; i < n - 1; i++)    {        for(int j = i + 1; j < n; j++)        {            if(a[i][j] != a[j][i])            {                isSymmetrically = false;                break;            }            else            {                isSymmetrically = true;            }        }        if (isSymmetrically == false)        {          break;        }    }    if (isSymmetrically == true)    {        cout << "YES" << endl;    }    else    {        cout << "NO" << endl;    }    return 0;}
4,5(65 оценок)
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ