Цитата:
Сообщение от Революционерка
А не могли бы вы посмотреть вот такую еще задачку. Тоже в 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;
}