Размещение слов в выходной строке в алфавитном порядке - C (СИ)

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

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

Всем здравствуйте. Не могу решить первую лабу по дисциплине "Информатика и программирование ч.2" Вариант 10. Программа должна быть на чистом С. /* 10. Функция находит в строке самое первое (по алфавиту) слово. С ее помощью реализовать размещение слов в выходной строке в алфавитном порядке.*/
Листинг программы
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <string.h>
  4. #define CMP(i) (c[i]==0 || c[i]==' ')
  5. void sort(char in[], char out[]);
  6. int my_cmp(char c[], int i1, int i2);
  7. int find(char in[]);
  8. int main()
  9. {
  10. char *str = "this a string of sorted words", *str1; // исходная строка
  11. printf("%s", str);
  12. sort(str, str);
  13. strcpy(str1, str);
  14. puts(str1);
  15. _getch();
  16. return 0;
  17. }
  18. //---- Сравнение слов в строке
  19. int my_cmp(char c[], int i1, int i2){
  20. while(1){ // Вечный цикл с определением
  21. if (CMP(i1) && CMP(i2)) // первого расхождения
  22. return 0; // Кончились одновременно - равны
  23. if (CMP(i1)) return -1;
  24. if (CMP(i2)) return 1;
  25. if (c[i1]!=c[i2]) return c[i1]-c[i2];
  26. i1++; i2++;
  27. }
  28. }
  29. // найти первое слово по алфавиту
  30. int find(char in[])
  31. {
  32. int i=0, k, m, b;
  33. b=-1; m=0;
  34. while(in[i] != 0)
  35. {
  36. while(in[i] == ' ') i++; // пропуск пробелов перед словом
  37. if(in[i] == 0) return b;
  38. if(b == -1 || my_cmp(in, i, b) < 0)
  39. b=i;
  40. for(k=0; in[i] != ' ' && in[i] != 0; i++); // начало очередного слова
  41. }
  42. return b;
  43. }
  44. void sort(char in[], char out[]){
  45. int i=0,k;
  46. while((k=find(in))!=-1) { // Получить индекс очередного слова
  47. for (; in[k]!=' ' && in[k]!=0; i++,k++) {
  48. out[i]=in[k]; in[k] = ' '; // Переписать с затиранием
  49. }
  50. out[i++]=' '; // После слова добавить пробел
  51. }
  52. out[i]=0;}
Вот такой код. Компилятор ругается вот из-за этой строки out[i]=in[k]; in[k] = ' ';. В чём тут дело? Помогите, пожалуйста!

Решение задачи: «Размещение слов в выходной строке в алфавитном порядке»

textual
Листинг программы
  1. char *str = "this a string of sorted words";

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

  1. Объявляется переменная типа char с именем str и инициализируется строкой this a string of sorted words - str =this a string of sorted words;
  2. В данном коде переменная str используется как массив символов, который содержит строку this a string of sorted words.
  3. В данном коде не выполняется сортировка слов в строке str. Сортировка слов в алфавитном порядке не является задачей данного кода.

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


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

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

13   голосов , оценка 4.308 из 5

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

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

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