Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ Помогите найти ошибку в программе

Автор: Neon6868 5.06.2008 0:23

Задание: Написать программу, котораясчитывает английский текст из файла и выводит на экран слова текста, начинающиеся или оканчивающиеся на гласные буквы.

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


# 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);
}




Прикрепленные файлы
Прикрепленный файл  text.txt ( 54 байт ) Кол-во скачиваний: 257

Автор: volvo 5.06.2008 0:34

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

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

Автор: Neon6868 5.06.2008 1:00

Цитата(volvo @ 4.06.2008 21:34) *

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

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


Текст присоединил. К сожалению мне надо сделать обычным способом, сравнивая символы. wacko.gif