Помощь - Поиск - Пользователи - Календарь
Полная версия: Помогите найти ошибку в программе
Форум «Всё о Паскале» > Delphi, Assembler и другие языки. > Другие языки
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
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.