Перевод кода с 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.