Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.04.2011, 23:15   #1
Lellya
 
Регистрация: 15.02.2011
Сообщений: 5
По умолчанию определить количество слов в тексте, оканчивающихся на гласную букву

И еще одна программа ... ((( можно ли переделать под условие (смотри пр файл.)

Задание:

С помощью текстового редактора создать файл, содержащий текст, длина которого не превышает 1000 символов (длина строки текста не должна превышать 70 символов).
Имя файла должно иметь расширение DAT.
Написать программу, которая:
1) выводит текст на экран дисплея;
2) определяет количество слов в тексте, оканчивающихся на гласную букву

Код:
#include <stdio.h>
#include <conio.h>
/* #include <string.h> */
 
#define DELIM " \t\n,.!?:;-%"
#define VOWELS "AaEeIiOoUuYy"
        
int mystrlen(const char * s){
        const char * p = s;
        while ( *p )
                ++p;
        return p - s;
}
 
char * mystrchr(const char * s, char ch){
        while ( *s && *s != ch )
                ++s;
        return ( *s ) ? (char*)s : NULL;
}
 
char * mystrtok(char * buf, const char * delim){
        static char * pHead, * pTail, * pRet;
        if ( buf ){
                pHead = buf;
                pTail = pHead + mystrlen(pHead);
                for ( pRet = pHead; pRet < pTail; ++pRet )
                        if ( mystrchr(delim, *pRet) )
                                *pRet = 0;
        }
        while ( ! *pHead && pHead < pTail )
                ++pHead;
        if ( pHead >= pTail )
                return NULL;
        else {
                pRet = pHead;
                pHead += mystrlen(pHead);
        }
        
        return pRet;
}
 
int main(void){
        char buf[BUFSIZ], *p;
        int cnt;
        FILE * f;
        
        printf("File name: ");
        if ( scanf("%s", buf) != 1 ){
                fprintf(stderr, "Input error!\n");
                return 1;
        }
        
        if ( ( f = fopen(buf, "r") ) == NULL ){
                fprintf(stderr, "Can't open file for input!\n");
                return 1;
        }
        
        cnt = 0;
        printf("Content:\n\n");
        while ( fgets(buf, BUFSIZ, f) ){
                printf("%s", buf);
                for ( p = mystrtok(buf, DELIM); p; p = mystrtok(NULL, DELIM) )
                        if ( mystrchr(VOWELS, p[mystrlen(p) - 1]) )
                                ++cnt;
        }
        if ( ferror(f) ){
                fprintf(stderr, "Error while reading file!\n");
                if ( fclose(f) )
                        fprintf(stderr, "Can't close file!\n");
                return 1;
        }
        
        fclose(f);
        printf("\n\n%d words ends with vowel letter.\n", cnt);
        
        getch();
        
        return 0;
}
Изображения
Тип файла: jpg DSC02831.jpg (171.1 Кб, 129 просмотров)
Lellya вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа которая подсчитает количество слов в тексте Мария Сафонова Помощь студентам 5 28.03.2011 07:42
Найти количество слов которые заканчиваются на заданую букву. Си SeRhy Помощь студентам 11 10.01.2011 00:17
количество слов в тексте almareta Помощь студентам 3 01.04.2010 20:59
Дана строка, состоящая из нескольких слов. Найти количество слов, которые содержат хотя бы одну букву "А" Mashaa Помощь студентам 13 09.12.2009 13:28
Составить в алфавитном порядке список всех слов, встречающихся в тексте, и количество этих слов. KAPAHDAW Паскаль, Turbo Pascal, PascalABC.NET 2 17.02.2009 01:19