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

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

  1. Включаются необходимые заголовочные файлы: , , , .
  2. Определяются константы: n=5;
  3. Инициализируются переменные: i, j, d, c, c1, c2, d1, d2, m, x_min, x_max;
  4. Вызывается функция srand(), которая инициализирует генератор случайных чисел текущим временем;
  5. Выводится название программы и версия;
  6. Пользователю предлагается ввести нижнюю границу диапазона;
  7. Пользователю предлагается ввести верхнюю границу диапазона;
  8. Инициализируется двумерный массив x[n][n];
  9. Выводится начальное значение массива x;
  10. Находится максимальное значение в массиве x и его координаты (i,j);
  11. Находится минимальное значение в массиве x и его координаты (i,j);
  12. Значение из позиции (d1,d2) в массиве x заменяется на максимальное значение, а значение из позиции (c1,c2) заменяется на минимальное значение;
  13. Выводится максимальное значение в позиции (c1,c2), а также индексы этой позиции;
  14. Выводится минимальное значение в позиции (d1,d2), а также индексы этой позиции;
  15. Выводится исходное значение массива x;
  16. Программа завершается, возвращая 0.

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


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

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

14   голосов , оценка 4 из 5