Перевод кода с Pascal на Си - C (СИ)
Формулировка задачи:
Здравствуйте! Помогите пожалуйста эту часть программы перевести в Си...
c:=x[1]; d:=x[n]; If (c<0) Then k:=1 Else k:=0; For i:= 2 to n do Begin If (x[i]<0) Then Begin c:=x[i]; c1:=i; k:=k+1; End; If (k=2) then break; end; If (d>0) Then m:=1 Else m:=0; For i:= n-1 downto 1 do Begin If (x[i]>0) Then Begin d1:=i; d:=x[i]; m:=m+1; End; If (m=2) then break; End; x[c1]:=d; x[d1]:=c; If (k=2) and (m=2) Then Begin Writeln (' Target data:'); {Выходные данные} Writeln ('second_otr=', c, ' n_second_otr=', c1); Writeln ('predp_pol=', d, ' n_predp_pol=', d1); Writeln; For i:= 1 to n do Write(x[i]:5); End Else Writeln('In a vector there are no negative or positive numbers’); {В векторе отсутствуют отрицательные или положительные числа} Readln; End.
если нужно то вот вся программа...
Program Variant_8; Uses crt; Const n=10; Var i,k,d,m,d1,c,c1,x_min,x_max:integer; x: Array [1..10] of integer; Begin Randomize; Writeln (' Set a range of random numbers’); {Задайте диапазон случайных чисел} Write ('x_min='); Readln (x_min); Write ('x_max='); Readln (x_max); For i:= 1 to n do x[i]:=Random(x_max-x_min + 1) + x_min; Writeln; Writeln('Initial vector’); {Исходный вектор} For i:= 1 to n do Write (x[i]:5); Writeln; Writeln; c:=x[1]; d:=x[n]; If (c<0) Then k:=1 Else k:=0; For i:= 2 to n do Begin If (x[i]<0) Then Begin c:=x[i]; c1:=i; k:=k+1; End; If (k=2) then break; end; If (d>0) Then m:=1 Else m:=0; For i:= n-1 downto 1 do Begin If (x[i]>0) Then Begin d1:=i; d:=x[i]; m:=m+1; End; If (m=2) then break; End; x[c1]:=d; x[d1]:=c; If (k=2) and (m=2) Then Begin Writeln (' Target data:'); {Выходные данные} Writeln ('second_otr=', c, ' n_second_otr=', c1); Writeln ('predp_pol=', d, ' n_predp_pol=', d1); Writeln; For i:= 1 to n do Write(x[i]:5); End Else Writeln('In a vector there are no negative or positive numbers’); {В векторе отсутствуют отрицательные или положительные числа} Readln; End.
как этот момент написать в си?
For i:= n-1 downto 1 do
и этот
If (m=2) then break
Решение задачи: «Перевод кода с Pascal на Си»
textual
Листинг программы
#include <stdio.h> #include <conio.h> #include <math.h> #include <time.h> #define n 5 int main() { int i, j, d, c, c1, c2, d1, d2,m, x_min, x_max; time_t t; srand((unsigned) time(&t)); printf("\nlaboratornaya rabota В№6_1"); printf("\nvariant В№8"); printf("\nIS-12-2"); printf("\nHamchuk Evgeniy\n"); printf("\nenter the lower limit of the range:"); scanf("%d", &x_min); printf("\nenter the upper limit:"); scanf("%d", &x_max); int x[n][n]; printf("\ninitial massiv:\n"); m = x_max-x_min + 1; for (i=0; i<n; i++) { for (j=0; j<n; j++) { x[i][j]=rand()% m + x_min; printf(" %5d", x[i][j]); } printf("\n"); } //for (i=0; i<n; i++) //{ // for (j=0; j<n; j++) // { // printf(" %5d", x[i][j]); // } // } c=x[0][1]; for (i=0; i<n; i++) { for (j=i+1; j<n; j++) { if (x[i][j]>c) { c=x[i][j]; c1=i; c2=j; } } } d=x[1][0]; for (i=1; i<n; i++) { for (j=0; j<i; j++) { if (x[i][j]<d) { d=x[i][j]; d1=i; d2=j; } } } x[d1][d2]=c; x[c1][c2]=d; printf("\nmax_ch=%d\ni_max=%d\nj_max=%d",c,c1+1,c2+1); printf("\nmin_ch=%d\ni_max=%d\nj_max=%d",d,d1+1,d2+1); printf("\ninitial file:\n"); for (i=0; i<n; i++) { for (j=0; j<n; j++) printf("%5d", x[i][j]); printf("\n"); } printf("\n"); return 0; }
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы:
, , , . - Определяются константы: n=5;
- Инициализируются переменные: i, j, d, c, c1, c2, d1, d2, m, x_min, x_max;
- Вызывается функция srand(), которая инициализирует генератор случайных чисел текущим временем;
- Выводится название программы и версия;
- Пользователю предлагается ввести нижнюю границу диапазона;
- Пользователю предлагается ввести верхнюю границу диапазона;
- Инициализируется двумерный массив x[n][n];
- Выводится начальное значение массива x;
- Находится максимальное значение в массиве x и его координаты (i,j);
- Находится минимальное значение в массиве x и его координаты (i,j);
- Значение из позиции (d1,d2) в массиве x заменяется на максимальное значение, а значение из позиции (c1,c2) заменяется на минимальное значение;
- Выводится максимальное значение в позиции (c1,c2), а также индексы этой позиции;
- Выводится минимальное значение в позиции (d1,d2), а также индексы этой позиции;
- Выводится исходное значение массива x;
- Программа завершается, возвращая 0.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д