Из паскаля превратить в Си - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Но перевести не в C++, в именно просто в Си, который имеет примерно такой вид:
#include "stdafx.h" 
#include "stdlib.h" 
#include <math.h>
#include <stdio.h>
#include <io.h>
#include <conio.h> 
#include <locale.h>
 
void main()
{
    float x, y;
    int otv;
    setlocale(LC_ALL, "RUS");
    while (true)
    {
        system("cls");
        printf("Определить попадает ли точка в заштрихованную область");
        printf("\n Введите x:");
        scanf_s("%f", &x);
        printf("\n Введите y:");
        scanf_s("%f", &y);
        if ((y >= -0.5*x - 1) && (y <= 0.5*x + 1) || (pow(x, 2) + pow(y, 2)<1) && (x>0))
            printf("\n Точка попадает.");
        else
            printf("\n Точка не попадает.");
        printf("\n Подолжить работу?(0/1)");
        scanf_s("\n %d", &otv);
        if (otv == 0) break;
    }
    _getch();
}
А вот сама программа на паскале, которую нужно перевести в СИ:
Program p4; 
uses crt; 
const 
n=3; 
m=4; 
type 
matrica=array[1..n,1..m] of real; 
var 
B:matrica; 
otv:char; 
r1,r2,r,i,kol,x,j,k:integer; 
Begin 
while true do 
begin 
textbackground(1); 
textcolor(10); 
clrscr; 
writeln('Сколько раз число с клавиатуры повторяется в матрице?'); 
while true do 
begin 
writeln('Введите размерность матрицы'); 
readln(r1); 
readln(r2); 
if(r1>=1)and(r1<=n)and (r2>=1)and(r2<=m)then break 
end; 
writeln('Введите элементы матрицы'); 
for i:=1 to r1 do 
for j:=1 to r2 do 
begin 
write('B[',i,',',j,']='); 
readln(B[i,j]); 
end; 
writeln(' ':15, 'Вывод массива:'); 
for i:=1 to r1 do 
begin 
for j:=1 to r2 do 
write(b[i,j]:6); 
writeln 
end; 
begin 
for i:=1 to r1 do 
for j:=1 to r2 do 
begin 
if B[i,j]<0 then B[i,j]:=sqr(B[i,j]); 
if B[i,j]>0 then B[i,j]:=exp(3*ln(B[i,j])); 
end; 
writeln('Вывод нового массива, отрицательные в квадрат:'); 
for i:=1 to r1 do 
for j:=1 to r2 do 
writeln [B [i,j]]; 
write('Продолжить работу?(Y/N)'); 
readln(otv); 
if(otv='N')or(otv='n')then break; 
end 
end 
END.

Решение задачи: «Из паскаля превратить в Си»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <math.h>
 
const int n = 3, m = 4;
 
int main(void) {
    setlocale(LC_ALL, "RUS");
    float B[n][m];
    int r1, r2, i, j;
    char otv;
    while (true)
    {
        while (true)
        {
            printf("\tВведите размерность матрицы");
            scanf_s("%d", &r1);
            scanf_s("%d", &r2);
            if ((r1 >= 1) && (r1 <= n) && (r2 >= 1) && (r2 <= m))
                break;
        }
        printf("\tВведите элементы матрицы\n");
        for (i = 0; i < r1; i++)
            for (j = 0; j < r2; j++)
            {
                printf("B[%d][%d]=", i, j);
                scanf_s("%f", &B[i][j]);
            }
        printf("\tВывод матрицы\n");
        for (i = 0; i < r1; i++)
        {
            for (j = 0; j < r2; j++)
                printf("%f\t", B[i][j]);
            printf("\n");
        }
        for (i = 0; i < r1; i++)
            for (j = 0; j < r2; j++)
                if (B[i][j] <= 0)
                    B[i][j] = B[i][j] * B[i][j];
                else
                    B[i][j] = exp(3 * log(B[i][j]));
        printf("\tВывод новой матрицы\n");
        for (i = 0; i < r1; i++)
        {
            for (j = 0; j < r2; j++)
                printf("%f\t", B[i][j]);
            printf("\n");
        }
        printf("\tПродолжить работу? (Y/N) ");
        scanf_s("%c", &otv);
        scanf_s("%c", &otv);
        if ((otv == 'N') || (otv == 'n'))
            break;
    }
    system("pause");
    return 0;
}

Объяснение кода листинга программы

  1. В начале кода объявлены константы n и m, которые определяют размерность матрицы. Значения этих констант можно изменять в процессе выполнения программы.
  2. Создается матрица B размером n на m.
  3. Вводится размерность матрицы с помощью функции scanf_s.
  4. Вводится элементы матрицы с помощью двух вложенных циклов и функции scanf_s.
  5. Выводится размерность матрицы.
  6. Выводится первая строка матрицы.
  7. Выводится вторая строка матрицы.
  8. ...
  9. Выводится последняя строка матрицы.
  10. Производится проверка каждого элемента матрицы на отрицательность.
  11. Если элемент отрицательный, то он заменяется на квадрат этого элемента.
  12. Если элемент положительный, то он заменяется на экспоненту этого элемента.
  13. Выводится новая матрица.
  14. Пользователю предлагается ввести символ для продолжения работы программы.
  15. Если пользователь вводит 'N' или 'n', то программа завершается.
  16. Если пользователь вводит любой другой символ, то программа продолжает работу.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.1 из 5