Задание:Написать программу, которая считывает текст из файла и определяет, сколько в нём слов, состоящих из не более чем четырёх букв.
Я написал открытие и чтение из файла, а как делать дальше, чтобы узнать сколько слов, состоящих из не более чем четырёх букв. Подскажите хотя бы идею!!!
Программа:
Язык - то какой ? телепат штатный в отпуске ...
Как могут разделяться слова ?
В принципе не важно ...
# include <stdio.h>
# include <conio.h>
# include <string.h>
# define file_name "C:\\text.txt"
# define limits " ;,.?!"
int main(void) {
char *s = new char[255];
FILE* f;
if (!(f = fopen(file_name, "rt"))) {
printf("Cant open file '%s'\n", file_name);
return 0;
}
int count = 0;
int back;
while (fgets(s, 255, f)) {
puts(s);
int i = 0;
while (i < strlen(s)) {
while ((i < strlen(s)) && (strchr(limits, s[i]))) i++;
if (i < strlen(s)) {
back = i;
while ((i < strlen(s)) && (!(strchr(limits, s[i])))) i++;
count += (i - back - 1 <= 4) ? 1 : 0;
}
}
}
printf("count = %d\n", count);
fclose(f); delete(s);
return 0;
}
Я твою программу проверил,но там 5 ошибок!
очень интересно ... а главное аргументированно и информативно.
Какие ошибки ? В каких строках ? При каких входных данных ? Какой компилятор ?
Компилятор Turbo C
Ошибки:
8 строка-Undefined symbol new
8 строка-Declaration syntax error
15 строка-Declaration is not allowed
16 строка-Declaration is not allowed
19 строка-Declaration is not allowed
Интересно как ты свою программу компилировал ...
Попробуй вот так:
# include <stdio.h>
# include <conio.h>
# include <string.h>
# include <alloc.h>
# define file_name "C:\\text.txt"
# define limits " ;,.?!"
int main(void) {
char *s;
s = (char*)malloc(255 * sizeof(char));
FILE* f;
if (!(f = fopen(file_name, "rt"))) {
printf("Cant open file '%s'\n", file_name);
return 0;
}
int count, back, i;
count = 0;
while (fgets(s, 255, f)) {
puts(s);
i = 0;
while (i < strlen(s)) {
while ((i < strlen(s)) && (strchr(limits, s[i]))) i++;
if (i < strlen(s)) {
back = i;
while ((i < strlen(s)) && (!(strchr(limits, s[i])))) i++;
count += (i - back - 1 <= 4) ? 1 : 0;
}
}
}
printf("count = %d\n", count);
fclose(f); free(s);
return 0;
}
Теперь уже 2 ошибки:
11 строка-Declaration is not allowed
18 строка-Declaration is not allowed
Заархивируй папку с компилятором и присоедини сюда ... У меня нету чистого сишного компилятора.
По поводу 11 строки пока не знаю в чем проблема
FILE* f;
int count, back, i;
int i;
int count;
int back;
У меня не получается архив присоединить!
Добавлено через 13 мин.
Бред какой-то ... ну залей архив на zalil.ru или на webfile.ru раз сюда не получается ...
Вот ссылка: http://slil.ru/24271230
# include <stdio.h>
# include <conio.h>
# include <string.h>
# define file_name "C:\\text.txt"
# define limits " ;,.?!"
FILE *f;
int count, back, i;
int main(void) {
char *s;
s = (char*)malloc(255 * sizeof(char));
if (!(f = fopen(file_name, "rt"))) {
printf("Cant open file '%s'\n", file_name);
return 0;
}
count = 0;
while (fgets(s, 255, f)) {
puts(s);
i = 0;
while (i < strlen(s)) {
while ((i < strlen(s)) && (strchr(limits, s[i]))) i++;
if (i < strlen(s)) {
back = i;
while ((i < strlen(s)) && (!(strchr(limits, s[i])))) i++;
count += (i - back - 1 <= 4) ? 1 : 0;
}
}
}
printf("count = %d\n", count);
fclose(f); free(s);
return 0;
}
klem4
Большое спасибо! Очень помог!