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

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

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

Всем здравствуйте. Не могу решить первую лабу по дисциплине "Информатика и программирование ч.2" Вариант 10. Программа должна быть на чистом С. /* 10. Функция находит в строке самое первое (по алфавиту) слово. С ее помощью реализовать размещение слов в выходной строке в алфавитном порядке.*/
#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;}
Вот такой код. Компилятор ругается вот из-за этой строки out[i]=in[k]; in[k] = ' ';. В чём тут дело? Помогите, пожалуйста!

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

textual
Листинг программы
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
Похожие ответы