Ввести ряд цифр и программа должна отсортировать из в порядке возрастания - C (СИ)

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

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

Помогите пожалуйста с возникшими трудностями... Суть: нужно ввести ряд цифр и программа должна отсортировать из в порядке возрастания (НО! Если такая цифра повторяется, то ее не нужно вводить повторно. Пример: дан ряд 12 13 12 15 16 должен вывести 12 13 15 16)
#include "stdafx.h"

int _tmain(int argc, _TCHAR* argv[])
{
    int count = 5;
    int arr[5];

    for (int i = 0; i < count; i++) {
        scanf("%d", &arr[i]);
        printf("%d ", arr[i]);
    }

    for (int i = 1; i < count; i++)
    {
        int temp = arr[i];
        for (int j = i - 1; j >= 0; j--)
        {
            if (temp == arr[j]) {
                for (int k = i - 1; k < count; k++) {
                    arr[k - 1] = arr[k];
                }
                arr[count - 1] = '\0';
                count--;
                i--;
                break;
            }
            if (arr[j] < temp) break;
 
            arr[j + 1] = arr[j];
            arr[j] = temp;
        }   
    }
 
    printf("\n");
 
    for (int i = 0; i < count; i++) {
        printf("%d ", arr[i]);
    }
 
    return 0;
}

Решение задачи: «Ввести ряд цифр и программа должна отсортировать из в порядке возрастания»

textual
Листинг программы
#include <stdio.h>
#include <conio.h>
 
int main ()
{
    int p[50];
    int i, n, j;
    int count = 1;      
    float   res;
 
    printf("Size= ");
    scanf("%u",&n);
    printf("\nEnter elements: \n");
    for (int i = 0; i < n; i++) {
        printf("Element[%d]= ", i+1);
        scanf("%u", &p[i]);
    }
 
    int temp=p[0];  
    for (i=1; i<n; i++)
        if(p[i]!=temp){
            for (j=i+1; j<n; j++)  
                if(p[i]==p[j])     
                    p[j]=temp;       
            count++;            
        }
 
    printf("\nYou Mas:\n");
    for (i=0; i<n; i++)
        printf("%i ", p[i]);
    
    printf("\n");
    count=0;
    for (i=1; i<n; i++)
        if (p[i]!=p[0]) p[++count]=p[i];
    
    printf("\nAfter del:\n");
    for (i=0; i <= count; i++) 
        printf("%i ", p[i]);
    printf("\nSort mas: \n");
    for (int i = 0; i <= count; i++)
       for (int j = i+1; j <= count; j++)
          if (p[i] < p[j]){
             int buf = p[i];
             p[i] = p[j];
             p[j] = buf;
          }   
    for (int i = 0; i <= count; i++)
        printf("%i ", p[i]);
    getch();
    return 0;
}

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

Вывод списка с номерами и названиями переменных:

  1. int p[50]; - массив для хранения чисел
  2. int i, n, j; - целочисленные переменные для работы с циклом
  3. int count = 1; - счетчик для сортировки
  4. float res; - переменная для хранения результата
  5. printf(Size=); - вывод сообщения Size=
  6. scanf(%u,&n); - считывание числа в переменную n
  7. printf(\nEnter elements: \n); - вывод сообщения Введите элементы:
  8. for (int i = 0; i < n; i++) { - цикл для ввода элементов массива
  9.   printf(Element[%d]=, i+1); - вывод сообщения с номером элемента
  10.   scanf(%u, &p[i]); - считывание числа в массив p
  11. }
  12. int temp=p[0]; - временная переменная для хранения первого элемента массива
  13. for (i=1; i<n; i++) - цикл для сортировки массива
  14.   if(p[i]!=temp){ - условие для прохода по циклу
  15.     for (j=i+1; j<n; j++) - цикл для поиска одинаковых элементов
  16.       if(p[i]==p[j]) - условие для замены элемента
  17.       p[j]=temp; - замена элемента
  18.   count++; - увеличение счетчика при каждой замене
  19. }
  20. printf(\nYou Mas:\n); - вывод сообщения Ваш массив:
  21. for (i=0; i<n; i++) - цикл для вывода элементов массива
  22.   printf(%i, p[i]); - вывод элемента массива
  23. printf(\n); - завершение вывода
  24. count=0; - обнуление счетчика
  25. for (i=1; i<n; i++) - цикл для перестановки элементов
  26.   if (p[i]!=p[0]) p[++count]=p[i]; - условие для добавления элемента в начало массива
  27. printf(\nAfter del:\n); - вывод сообщения После удаления:
  28. for (i=0; i <= count; i++) - цикл для вывода элементов массива
  29.   printf(%i, p[i]); - вывод элемента массива
  30. printf(\nSort mas: \n); - вывод сообщения Сортированный массив:
  31. for (int i = 0; i <= count; i++) - цикл для сортировки элементов массива
  32.   for (int j = i+1; j <= count; j++) - цикл для сравнения элементов
  33.     if (p[i] < p[j]){ - условие для перестановки элементов
  34.       int buf = p[i]; - временная переменная для хранения элемента
  35.       p[i] = p[j]; - замена элемента
  36.       p[j] = buf; - возврат элемента на место
  37.   }
  38.   printf(%i, p[i]); - вывод элемента массива
  39. getch(); - получение отклика от пользователя
  40. return 0; - завершение программы

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


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

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

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