Ошибка при сортировке символьного массива, используя указатели - C (СИ)
Формулировка задачи:
Вылетает прога, в чем ошибка .
Должна быть сортировка символьного массива, даже не могу ввести элементы...
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- */int main ()
- { setlocale (LC_ALL,"russian");
- int N;
- char *ptr;
- int i,tmp;
- puts ("Введите количество элементов N");
- scanf ("%d",&N);
- *ptr = (char*)malloc (sizeof(char) * N);
- puts ("Введите элементы ");
- for (i=0;i<N;i++)
- scanf("%c",ptr++);
- if (ptr==NULL)
- {
- printf ("OFF");
- }
- for (i=0;i<N;i++)
- printf ("%c",ptr++);
- return 0;
Решение задачи: «Ошибка при сортировке символьного массива, используя указатели»
textual
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- #include <locale.h>
- #define SWEEP while(getchar()!='\n')
- int main(void)
- {
- setlocale (LC_ALL,"Ru");
- int N;
- char *ptr, *p;
- puts ("Введите количество элементов N");
- scanf ("%d",&N);
- p=ptr = (char*)malloc (sizeof(char) * N);
- puts ("Введите элементы "); SWEEP;
- for (int i=0;i<N;i++)
- {scanf("%c",p); SWEEP; ++p;}
- p=ptr;
- for (int i=0;i<N;i++)
- {printf ("%c",*p);++p;}
- p=ptr;
- int j, tmp,i;
- for( i=0; i<N-1; ++i)
- {
- for(j=i+1; j<N; ++j)
- {
- if(p[i]>p[j])
- {
- tmp=p[i];
- p[i]=p[j];
- p[j]=tmp;
- }
- }
- }
- puts("");
- for (int i=0;i<N;i++)
- {printf ("%c",*p);++p;}
- return 0;
- }
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы
- Устанавливается русская локаль
- Определяется переменная N типа int для хранения количества элементов
- Определяются две указательные переменные ptr и p, которые будут использоваться для работы с массивом
- Выводится сообщение с просьбой ввести количество элементов и сохраняется в переменной N
- Вводится массив символов с помощью scanf, используется SWEEP для считывания всех символов до новой строки
- Выводится сообщение
Введите элементы
- В цикле от 0 до N-1 происходит сортировка массива по возрастанию с помощью алгоритма пузырька
- Выводится отсортированный массив с помощью printf
- Возвращается 0, чтобы указать, что программа успешно завершилась
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д