Сортировка массива выбором - 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 происходит следующее:
- Переменная k инициализируется нулем.
- В цикле while (!(k > 0)) выполняется следующее:
- Выводится сообщение
Введите целое положительное число k=
. - С помощью функции scanf() считывается значение для k.
- Выводится сообщение
Введите какую цифру отобразить, считать справа
. - С помощью функции scanf() считывается значение для j.
- Цикл while завершается, когда k больше нуля.
- Выводится сообщение
- Выводится сообщение
Цифра %d = %d
, где %d - это значение j, а DigitN(k, j) - это результат работы функции DigitN. Код не полностью решает задачу сортировки массива выбором, но он реализует функцию, которая может быть использована в алгоритме сортировки массива выбором.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д