Размещение слов в выходной строке в алфавитном порядке - 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
. Сортировка слов в алфавитном порядке не является задачей данного кода.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д