Найти самое «большое» и самое «маленькое» слово - C (СИ)

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

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

Доброго всем дня!!!! задача такая: Напишите программу, которая находит самое «большое» и самое «маленькое» слово. Слова сравниваются в лексикографическом порядке.Размер слова ограничен 20 символами. Программа должна прекращать принимать слова «на проверку» после ввода пустой строки. Я решил что надо все введенные слова занести в массив , и тут у меня возникла проблема , ведь в си нет строк..... В Нэте нашел , что можно всё это сделать с помощью указателей, Но как я вообще не понимаю,кто может подскажите, вот такой код
#include <stdio.h>
#include <malloc.h>
#include <string.h>
 
char *getWord()
{
    char *w,c;
    int i;
    w=(char *)calloc(1,50);
    i=0;
    while(1)
    {
        c=getchar();
        if (c == 10) break;
        w[i++]=c;
    }
    return w;
}

int main(int argc, char* argv[])
{
    int t, i;
    char *wd;
    char *small;
    char *bigword;
    i = 0;
    while(1)
    {
 
        printf("Enter word: ");
        wd=getWord();
        if (strlen(wd) == 0) break;
        if(i == 0)
        {
            printf("hello");
            small = &wd;
            bigword = &wd;
        }
        choiseBiggerWod(*small,*bigword, *bigword);
        free(wd); 
        i++;
    }
а как сделать массив строк не знаю пытался вот так
char *tempArr[200]
Спасибо всем заранее

Решение задачи: «Найти самое «большое» и самое «маленькое» слово»

textual
Листинг программы
#include <stdio.h>
#include <string.h>
 
#define MAXLEN 10
 
int main()
{
    char string[MAXLEN][20] = {{0}};
    unsigned count = 0;
    unsigned i, j;
    char buff[20];
    unsigned min;
 
    while (fgets(string[count], sizeof(string[count]), stdin) &&
           (string[count][0] != '\n') && (count < MAXLEN))
    {
        count++;
    }
 
    for (i = 0; i < (count - 1); ++i)
    {
        min = i;
        for (j = i + 1; j < count; ++j)
        {
            if (strcmp(string[min], string[j]) > 0)
            {
                min = j;
            }
        }
 
        strcpy(buff, string[min]);
        strcpy(string[min], string[i]);
        strcpy(string[i], buff);
    }
 
    for (i = 0; i < count; ++i)
    {
        printf("%s", string[i]);
    }
 
    return 0;
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.4 из 5
Похожие ответы