Итак, моя задача - взять предложение и распечатать первое в алфавитном порядке. Например, ball car tshirt
должен напечатать ball
, что мне удалось сделать. Хитрость заключается в том, что когда два слова имеют одну и ту же первую букву, тогда следует провести большее сравнение Я сделал этот грязный алгоритм, который работает, но печатает случайные символы и вылетает из программы (скриншот ниже). Код
#include <stdio.h>
#include <stdlib.h>
int main()
{
char str[100];
char *p, *pz , *p1, *p2;
printf("\nEnter sentence: ");
fgets(str, 60, stdin);
p=str;
pz=p;
while(*p!='\0'){
if(*p == ' '){
p++;
if(*p<*pz){
pz=p;
}else if(*pz == *p){
p1=p; //temp
p2=pz; //temp
p1++;
p2++;
while(*p2 != '\0' && *p1 != '\0'){
if (*p1 != '\0'){
pz=p;
break;
}else if(*p2 != '\0'){
break;
}else {
if(*p1 < *p2){
pz=p;
break;
}else{
p1++;
p2++;
}
}
}
}
}
p++;
}
while(*pz != ' '){
printf("%c", *pz);
pz++;
}
printf("\n");
return 0;
}
указатель pz должен быть тем, который будет распечатан, указатель p - тот, который выполняет всю работу, а указатели p1 и p2 - временные.
![The problem[1]](https://i.stack.imgur.com/eIdun.png)