Размещение слов в выходной строке в алфавитном порядке - 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. Сортировка слов в алфавитном порядке не является задачей данного кода.