Ошибка при сортировке символьного массива, используя указатели - C (СИ)

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

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

Вылетает прога, в чем ошибка . Должна быть сортировка символьного массива, даже не могу ввести элементы...
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. */int main ()
  5. { setlocale (LC_ALL,"russian");
  6. int N;
  7. char *ptr;
  8. int i,tmp;
  9. puts ("Введите количество элементов N");
  10. scanf ("%d",&N);
  11. *ptr = (char*)malloc (sizeof(char) * N);
  12. puts ("Введите элементы ");
  13. for (i=0;i<N;i++)
  14. scanf("%c",ptr++);
  15. if (ptr==NULL)
  16. {
  17. printf ("OFF");
  18. }
  19.  
  20. for (i=0;i<N;i++)
  21. printf ("%c",ptr++);
  22. return 0;

Решение задачи: «Ошибка при сортировке символьного массива, используя указатели»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <locale.h>
  4. #define SWEEP while(getchar()!='\n')
  5. int main(void)
  6. {
  7.     setlocale (LC_ALL,"Ru");
  8.     int N;
  9.     char *ptr, *p;
  10.     puts ("Введите количество элементов  N");
  11.     scanf ("%d",&N);
  12.     p=ptr = (char*)malloc (sizeof(char) * N);
  13.     puts ("Введите элементы "); SWEEP;
  14.         for (int i=0;i<N;i++)
  15.          {scanf("%c",p); SWEEP; ++p;}
  16.     p=ptr;
  17.     for (int i=0;i<N;i++)
  18.         {printf ("%c",*p);++p;}
  19.     p=ptr;
  20.     int j, tmp,i;
  21.     for( i=0; i<N-1; ++i)
  22.     {
  23.         for(j=i+1; j<N; ++j)
  24.         {
  25.             if(p[i]>p[j])
  26.             {
  27.                 tmp=p[i];
  28.                 p[i]=p[j];
  29.                 p[j]=tmp;
  30.             }
  31.         }
  32.     }
  33.     puts("");
  34.     for (int i=0;i<N;i++)
  35.         {printf ("%c",*p);++p;}
  36.    return 0;
  37. }

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

  1. Включаются необходимые заголовочные файлы
  2. Устанавливается русская локаль
  3. Определяется переменная N типа int для хранения количества элементов
  4. Определяются две указательные переменные ptr и p, которые будут использоваться для работы с массивом
  5. Выводится сообщение с просьбой ввести количество элементов и сохраняется в переменной N
  6. Вводится массив символов с помощью scanf, используется SWEEP для считывания всех символов до новой строки
  7. Выводится сообщение Введите элементы
  8. В цикле от 0 до N-1 происходит сортировка массива по возрастанию с помощью алгоритма пузырька
  9. Выводится отсортированный массив с помощью printf
  10. Возвращается 0, чтобы указать, что программа успешно завершилась

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы