Помощь - Поиск - Пользователи - Календарь
Полная версия: Помогите найти ошибку в программе
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ада и другие языки
Neon6868
Задание: Написать программу, котораясчитывает английский текст из файла и выводит на экран слова текста, начинающиеся или оканчивающиеся на гласные буквы.

Программа выводит не все слова, начинающиеся на гласные буквы и вообще не выводит слов, оканчивающихся на гласные буквы. Подскажите плиз в чем ошибка?


# include <stdio.h>
# include <string.h>
#include <ctype.h>
# define name "G:\\text.txt"
void main()
{
FILE *f;
if (!(f=fopen(name,"r"))) printf("\nOshibka otkritiya faila:");
int x,k=-1;
while (!(feof(f)))
{
k++;
fseek(f,k,SEEK_SET);
x=fgetc(f);
if(isspace(x)){
k++;
fseek(f,k,SEEK_SET);
x=fgetc(f);
if ((x=='a') || (x=='e') || (x=='i') || (x=='j') ||(x=='o')|| (x=='u') || (x=='y'))
{printf(" ");
while ((!(ispunct(x))) && (!(isspace(x)))) {
printf("%c",x);
k++;
fseek(f,k,SEEK_SET);
x=fgetc(f);
}
}
else
{
int t=k;
while ((!(ispunct(x))) && (!(isspace(x))))
{
k++;
fseek(f,k,SEEK_SET);
x=fgetc(f);
}
k--;
fseek(f,k,SEEK_SET);
x=fgetc(f);
if ((x=='a') || (x=='e') || (x=='i') || (x=='j') ||(x=='o')|| (x=='u') || (x=='y'))
{
k=t;
while ((!(ispunct(x))) && (!(isspace(x)))) {
printf("%c",x);
k++;
fseek(f,k,SEEK_SET);
x=fgetc(f);
}
}
if (isspace(x)) k--;
}
}
}
fclose(f);
}

volvo
Свой файл text.txt присоедини, потому что на моем (произвольном) файле программа просто зациклилась... Может, с твоим сработает...

А вообще - зачем тебе делать всю эту лабуду? Достаточно построчно читать файл в буфер, делить буфер на токены (strtok) и проверять, является ли первый или последний символ токена гласной буквой. Делов на 5 строк кода... Ну, на 10 от силы smile.gif
Neon6868
Цитата(volvo @ 4.06.2008 21:34) *

Свой файл text.txt присоедини, потому что на моем (произвольном) файле программа просто зациклилась... Может, с твоим сработает...

А вообще - зачем тебе делать всю эту лабуду? Достаточно построчно читать файл в буфер, делить буфер на токены (strtok) и проверять, является ли первый или последний символ токена гласной буквой. Делов на 5 строк кода... Ну, на 10 от силы smile.gif


Текст присоединил. К сожалению мне надо сделать обычным способом, сравнивая символы. wacko.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.