Показать сообщение отдельно
Старый 21.06.2009, 20:24   #114 (permalink)
csbwalker
Member
 
Аватар для csbwalker
 
Регистрация: 03.03.2009
Сообщений: 87
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 187
По умолчанию

Цитата:
Сообщение от Революционерка Посмотреть сообщение
А не могли бы вы посмотреть вот такую еще задачку. Тоже в C.
Дан текст из нескольких строк. Составить слово из последних букв слов k-ой строки.
Заранее спасибо)
Цитата:
Сообщение от Революционерка Посмотреть сообщение
csbwalker
Да, просто взять набор букв))Текст надо с клавиатуры вводить)
Вот, как-то так)
Код:
#include <STDIO.H>
#include <STRING.H>
#include <STDLIB.H>

void makeWord(char *str, char *result)
{
char *w, d[] = " ";
int i = 0;

        for(w = strtok(str, d); w != NULL; w = strtok(NULL, d))
                if(strlen(w) != 0)
                        result[i++] = w[strlen(w) - 1];

        result[i] = '\0';
}

void ask(char *message, int *n, int minval, int maxval)
{
int x;
        do
        {
                printf("%s [%d...%d]: ", message, minval, maxval);
                scanf("%d", &x);
        } while((x < minval) || (x > maxval));

        *n = x;
}

int main()
{
char *result, *strings;
int count, maxlen, i, a;

        ask("Введите максимальную длину строки", &maxlen, 1, 200);
        ask("Введите количество строк", &count, 1, 200);

        strings = malloc(count * (maxlen + 1));
        if(strings == NULL)
        {
                printf("Не удалось выделить память для текста\n");
                return 1;
        }

        result = malloc(maxlen + 1);
        if(result == NULL)
        {
                printf("Не удалось выделить память для результата\n");
                return 2;
        }

        for(i = 0; i < count; i++)
        {
                printf("Введите строку %d: ", i + 1);
                fflush(stdin);
                gets(strings + i * maxlen);
        }

        do
        {
                ask("Введите номер строки для генерации слова (0 для выхода)", &a, 0, count);
                if(a == 0)
                        break;

                makeWord(strings + (a - 1) * maxlen, result);
                printf("Результат: <%s>\n", result);
        } while(1);
        printf("Работа завершена!\n");

        return 0;
}
csbwalker вне форума  
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070