Размещение слов в выходной строке в алфавитном порядке - C (СИ)
Формулировка задачи:
Всем здравствуйте. Не могу решить первую лабу по дисциплине "Информатика и программирование ч.2"
Вариант 10. Программа должна быть на чистом С.
/* 10. Функция находит в строке самое первое (по алфавиту) слово.
С ее помощью реализовать размещение слов в выходной строке в алфавитном порядке.*/
Вот такой код.
Компилятор ругается вот из-за этой строки out[i]=in[k]; in[k] = ' ';.
В чём тут дело? Помогите, пожалуйста!
Листинг программы
- #include <stdio.h>
- #include <conio.h>
- #include <string.h>
- #define CMP(i) (c[i]==0 || c[i]==' ')
- void sort(char in[], char out[]);
- int my_cmp(char c[], int i1, int i2);
- int find(char in[]);
- int main()
- {
- char *str = "this a string of sorted words", *str1; // исходная строка
- printf("%s", str);
- sort(str, str);
- strcpy(str1, str);
- puts(str1);
- _getch();
- return 0;
- }
- //---- Сравнение слов в строке
- int my_cmp(char c[], int i1, int i2){
- while(1){ // Вечный цикл с определением
- if (CMP(i1) && CMP(i2)) // первого расхождения
- return 0; // Кончились одновременно - равны
- if (CMP(i1)) return -1;
- if (CMP(i2)) return 1;
- if (c[i1]!=c[i2]) return c[i1]-c[i2];
- i1++; i2++;
- }
- }
- // найти первое слово по алфавиту
- int find(char in[])
- {
- int i=0, k, m, b;
- b=-1; m=0;
- while(in[i] != 0)
- {
- while(in[i] == ' ') i++; // пропуск пробелов перед словом
- if(in[i] == 0) return b;
- if(b == -1 || my_cmp(in, i, b) < 0)
- b=i;
- for(k=0; in[i] != ' ' && in[i] != 0; i++); // начало очередного слова
- }
- return b;
- }
- void sort(char in[], char out[]){
- int i=0,k;
- while((k=find(in))!=-1) { // Получить индекс очередного слова
- for (; in[k]!=' ' && in[k]!=0; i++,k++) {
- out[i]=in[k]; in[k] = ' '; // Переписать с затиранием
- }
- out[i++]=' '; // После слова добавить пробел
- }
- out[i]=0;}
Решение задачи: «Размещение слов в выходной строке в алфавитном порядке»
textual
Листинг программы
- char *str = "this a string of sorted words";
Объяснение кода листинга программы
- Объявляется переменная типа char с именем
str
и инициализируется строкойthis a string of sorted words
-str =
this a string of sorted words;
- В данном коде переменная
str
используется как массив символов, который содержит строкуthis a string of sorted words
. - В данном коде не выполняется сортировка слов в строке
str
. Сортировка слов в алфавитном порядке не является задачей данного кода.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д