|
|
|
| программа , которая считает английский текст из файла и выводит на экран слова, начинающиеся с гласных букв!!!
Помогите исправить ошибку!!! Когда запускаешь прогу черное окно открывается и происходит завершение работы!!!!
#include <iostream>
#include <stdlib.h>
#include <string.h>
using namespace std;
int main(int argc, char *argv[])
{
FILE *f;
char str[30] = "";
f=fopen("Text.txt", "r");
printf("\nVivod: ");
while (!feof(f)) {
fgets(str,30,f);
for (int i=0;i<strlen(str)-1;i++)
if (str[i]==' ')
switch(str[i+1]) {
case 'e':{str[i+1]='E';break;}
case 'u':{str[i+1]='U';break;}
case 'i':{str[i+1]='I';break;}
case 'o':{str[i+1]='O';break;}
case 'a':{str[i+1]='A';break;}
case 'y':{str[i+1]='Y';break;}
}
puts(str);
}
fclose(f);
system("PAUSE");
return 0;
} | |
|
|
|
|
|
|
|
для: Fantom666
(13.05.2010 в 18:48)
| | А в директории файл text.txt лежит? Если лежит то по условию он не должен быть пуст. И вообще твоя прога работает неправильно - ищи правильное решение. Я в подобной задаче пользовался конструкцией if else. Переключателями Switch не разу не пользовался, не подскажу.
А форум как будто заброшен, "движухи" и обсуждений никаких не видно. | |
|
|
|
|
|
|
|
для: Fantom666
(13.05.2010 в 18:48)
| | если файла в дирректории нет либо он пуст, то у меня прога вылетает с ошибкой. В случае если файл не пуст то печатается все его содержимое.
Извини помочь не могу т.к. сам в cpp не шарю, свои контрольные решить не могу то.
Но я бы мотал цикл проверяя пробелы и переносы на новую строку в 1251 кодировке это hex значения пробел 20 а перенос каретки 0d 0a. а также проверять первое слово в файле и все что стоят после этих символов на гласность и печатаем пока не наткнемся на пробел либо перенос каретки. кстати gеренос каретки так же можно представить как \n. | |
|
|
|
|
|
|
|
для: Fantom666
(13.05.2010 в 18:48)
| | Компилятора под рукой нет, т.к. что передам лишь смысл:
В твоей программе будет происходить след. считав строку из файла, программа найдёт слово стоящее после пробела и начинающееся на гласную, и заменит эту гласную с малой на большую и выведет эту же строку, только с замененым символом.
#include <iostream>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
using namespace std;
int main(int argc, char *argv[])
{
FILE *f;
char word[50]={0}, str[80] = {0};
f=fopen(".\\Text.txt", "r");
printf("\nVivod: ");
while (!feof(f)) {
fgets(str,80,f);
if (str[i] == ' ') {
switch(str[i+1]) {
case 'a':{
int k=0;
for(int j=i; j<80; j++) {
if(str[j] == ' ') break;
word[k] = str[j];
k++;
}
}
case 'u':{...}
case 'i':{...}
case 'o':{...}
case 'e':{...}
case 'y':{...}
}
}
puts(word);
}
fclose(f);
getch();
return 0;
}
|
В общем если я не ошибся, то должно вывести слово начинающееся на "а", остальное по аналогии | |
|
|
|