Мне нужно отсортировать каждое слово в предложении в алфавитном порядке, сохраняя слова отделенными друг от друга.Мне не разрешено использовать функцию strtok ().
Пример ввода: I would really appreciate some help
Пример вывода: I dlouw aellry aaceeipprt emos ehlp
Мне удалось отсортировать всю строкув алфавитном порядке. Что дает мне вывод: Iaaacdeeeeehillllmooppprrstuwy
Я не уверен, стоит ли мне вкладывать мой текущий код в цикл, который будет начинаться каждый раз, когда есть пробел.Или если мне нужно прочитать мою строку в двумерный массив и отсортировать каждое слово отдельно.
Я также не уверен, имеет ли смысл сравнивать значения каждого символа или считать вхождение каждой буквы в строке.У меня есть версия каждого, которая дает мне вывод, показанный выше.
Заранее спасибо.
Сравнение версий символов:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main () {
char str[100];
printf("Please type a sentence :\n");
scanf("%[^\n]s", str);
printf("\nAlphabetical order:\n:);
char temp;
int i, j;
int n = strlen(str);
for (i = 0; i < n-1; i++) {
for (j = i+1; j < n; j++) {
if (str[i] > str[j]) {
temp = str[i];
str[i] = str[j];
str[j] = temp1;
}
}
}
printf(str);
return 0;
}
Подсчет версий каждого символа:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main () {
char ch, input[100], output[100];
int no[26] = {0}, n, c, t, x;
printf("Please type a sentence:\n");
scanf("%s", input);
n = strlen(input);
for (c = 0; c < n; c++)
{
ch = input[c] - 'a';
no[ch]++;
}
t = 0;
for (ch = 'a'; ch <= 'z'; ch++)
{
x = ch - 'a';
for (c = 0; c < no[x]; c++)
{
output[t] = ch;
t++
}
}
output[t] = '\0';
printf("%s\n", output);
return 0;
}