Из паскаля превратить в Си - 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; }
Объяснение кода листинга программы
- В начале кода объявлены константы n и m, которые определяют размерность матрицы. Значения этих констант можно изменять в процессе выполнения программы.
- Создается матрица B размером n на m.
- Вводится размерность матрицы с помощью функции scanf_s.
- Вводится элементы матрицы с помощью двух вложенных циклов и функции scanf_s.
- Выводится размерность матрицы.
- Выводится первая строка матрицы.
- Выводится вторая строка матрицы.
- ...
- Выводится последняя строка матрицы.
- Производится проверка каждого элемента матрицы на отрицательность.
- Если элемент отрицательный, то он заменяется на квадрат этого элемента.
- Если элемент положительный, то он заменяется на экспоненту этого элемента.
- Выводится новая матрица.
- Пользователю предлагается ввести символ для продолжения работы программы.
- Если пользователь вводит 'N' или 'n', то программа завершается.
- Если пользователь вводит любой другой символ, то программа продолжает работу.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д