Сортировка массива выбором - C (СИ)

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

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

Вот программы на паскале, кто может преобразовать их в си?
{Сортировка массива выбором (в порядке возрастания).
 Идея решения: пусть часть массива (по K-й элемент включительно)
 отсортирована. Нужно найти в неотсортированной части массива
 минимальный элемент и поменять местами с (K+1)-м}
Program Sortirovka;
Var N, I, J, K, Pr : Integer; A : Array [1..30] Of Integer;
Begin
Write('Введите количество элементов: '); ReadLn(N);
   For I := 1 To N Do
    Begin
     Write('Введите A[', I, '] '); Readln(A[I]);
    End;
   WriteLn;
   For I := 1 To N - 1 Do
    Begin
     K := I;
     For J := I + 1 To N Do If A[J] <= A[K] Then K := J;
     Pr := A[I]; A[I] := A[K]; A[K] := Pr;
    End;
    For I := 1 To N Do Write(A[I], ' ');
  End.
{Подсчет количества различных чисел в линейном массиве.
 Идея решения: используем вспомогательный массив, элементами
 которого являются логические величины (False - если элемент
 уже встречался ранее, True - иначе)}
Program Razlichnye_Elementy;
Var I, N, K, Kol : Integer;
     A : Array [1..50] Of Integer;
     Lo : Array [1..50] Of Boolean;
Begin
  Write('Введите количество элементов массива: '); ReadLn(N);
    FOR I := 1 TO N DO
     Begin
      Write('A[', I, ']='); ReadLn (A[I]);
      Lo[I] := True; {Заполняем вспомогательный массив значениями True}
     End;
  Kol := 0; {переменная, в которой будет храниться количество различных чисел}
  FOR I := 1 TO N DO
   IF Lo[I] THEN
    Begin
     Kol := Kol + 1;
     FOR K := I TO N DO
 {Во вспомогательный массив заносим значение False,
  если число уже встречалось ранее или совпадает с текущим элементом A[I]}
       Lo[K] := (A[K] <> A[I]) And Lo[K];
    End;
  WriteLn('Количество различных чисел: ', Kol)
END.
помогайте, не знаю паскаля вообще (не изучал нигде) , но нужны циклы для того, чтобы понять программу и написать похожие на языке Си

Решение задачи: «Сортировка массива выбором»

textual
Листинг программы
#include <stdio.h>
 
int DigitN(long k, int n)
{
    int i;
    i=0;
    while ( k>0 && i<n)
    {
        i++;
        if (i==n)
            return k%10;
        else
            k = k/10;
    }
    if (i<n)
        return 1;
}
 
int main()
{
    int i,j;
    long int k;
    
    for(i=0;i<5;i++)
    {
        k = 0;
        while(!(k>0))
        {
            printf("Введите целое положительное число k=\n");
            scanf("%ld", &k);
            printf("Введите какую цифру отобразить, считать справа\n");
            scanf("%d", &j);
        }
            printf("Цифра %d = %d\n", j, DigitN(k,j));
    }
}

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

В этом коде реализована функция DigitN, которая принимает два аргумента: long k и int n. Эта функция используется для нахождения k-й цифры числа n. В функции main() создаются переменные i и j типа int, а также переменная k типа long int. Затем в цикле for от 0 до 4 происходит следующее:

  1. Переменная k инициализируется нулем.
  2. В цикле while (!(k > 0)) выполняется следующее:
    • Выводится сообщение Введите целое положительное число k=.
    • С помощью функции scanf() считывается значение для k.
    • Выводится сообщение Введите какую цифру отобразить, считать справа.
    • С помощью функции scanf() считывается значение для j.
    • Цикл while завершается, когда k больше нуля.
  3. Выводится сообщение Цифра %d = %d, где %d - это значение j, а DigitN(k, j) - это результат работы функции DigitN. Код не полностью решает задачу сортировки массива выбором, но он реализует функцию, которая может быть использована в алгоритме сортировки массива выбором.

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


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

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

15   голосов , оценка 4.4 из 5
Похожие ответы