Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
zloy-
0 / 0 / 1
Регистрация: 16.10.2010
Сообщений: 33
#1

Работа с файлом - C++

16.10.2010, 19:06. Просмотров 770. Ответов 12
Метки нет (Все метки)

Добрый вечер форумчане. Прошу помочь мне в написание программы. Речь идет о простой последовательности.
Количество чисел, равных полусумме предыдущего и последующего элементов последовательности.
В решении нельзя использовать одномерные массивы. Программа должна содержать функцию, которая получает в качестве параметрами файла (или указатель на файл) и возвращает требуемое значение. Функция main запрашивает с клавиатуры имя файла, обращается к функции и выводит результат
на экран.
Буду очень признателен! Прогу могу написать, только используя массивы. А работать с файлом, тем более через функцию я не умею. Если не затруднит можно с комментариями. Заранее спс.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.10.2010, 19:06     Работа с файлом
Посмотрите здесь:

Работа с файлом C++
работа с файлом) C++
C++ Работа с файлом
работа с файлом C++
C++ Работа с файлом
C++ Работа с файлом
Работа с файлом C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
genius5
114 / 36 / 2
Регистрация: 13.12.2009
Сообщений: 223
16.10.2010, 22:21     Работа с файлом #2
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <stdio.h>
#include <stdlib.h>
int func(FILE*f);
int main(void)
{int y;
char m[256];FILE*f=NULL;
scanf("%s",m);
f=fopen(m,"r");
 
y=func(f);
return 0;
}
 
int func(FILE* f)
{int a,n=0,b,c;
if(fscanf(f,"%d",&a)!=1){printf("net 4isel");return 0;}if(fscanf(f,"%d",&b)!=1){printf("malo 4isel");return 0;}
while(fscanf(f,"%d",&c)==1)
{if(b==(a+c)/2)n++;
 
 
a=b;b=c;}
 
 
 
return n;}
вот посари проверь
zloy-
0 / 0 / 1
Регистрация: 16.10.2010
Сообщений: 33
16.10.2010, 22:35  [ТС]     Работа с файлом #3
Прога компилируется, ну и все дела. Одно только не понятно: Как ее проверить? Вроде, по идее работа должна идти с txt файлом.
genius5
114 / 36 / 2
Регистрация: 13.12.2009
Сообщений: 223
16.10.2010, 22:38     Работа с файлом #4
ну и после запуска введи название файла например input.txt и enter
zloy-
0 / 0 / 1
Регистрация: 16.10.2010
Сообщений: 33
16.10.2010, 22:46  [ТС]     Работа с файлом #5
Все ништяк. Спс большое! Кстати а нельзя подсчитать именно количеством?
genius5
114 / 36 / 2
Регистрация: 13.12.2009
Сообщений: 223
16.10.2010, 22:51     Работа с файлом #6
количесвом чего?не понял.
zloy-
0 / 0 / 1
Регистрация: 16.10.2010
Сообщений: 33
16.10.2010, 22:55  [ТС]     Работа с файлом #7
Создаю текст файл. Открываю его с помощью компилятора(ввожу туда имя файла). Компилятор называет только количество (мало или нет чисел), а подсчитывать их количество не хочет гад))
genius5
114 / 36 / 2
Регистрация: 13.12.2009
Сообщений: 223
16.10.2010, 23:01     Работа с файлом #8
а в файле скока чисел?

Добавлено через 1 минуту
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <stdio.h>
#include <stdlib.h>
int func(FILE*f);
int main(void)
{
char m[256];FILE*f=NULL;
scanf("%s",m);
f=fopen(m,"r");
 
printf("%d",func(f));
return 0;
}
 
int func(FILE* f)
{int a,n=0,b,c;
if(fscanf(f,"%d",&a)!=1){printf("net 4isel");return 0;}if(fscanf(f,"%d",&b)!=1){printf("malo 4isel");return 0;}
while(fscanf(f,"%d",&c)==1)
{if(b==(a+c)/2)n++;
 
 
a=b;b=c;}
 
 
 
return n;}
zloy-
0 / 0 / 1
Регистрация: 16.10.2010
Сообщений: 33
16.10.2010, 23:01  [ТС]     Работа с файлом #9
ну ввожу около 20-30. Вписываю их специально прогрессией. Он будет выводит мало чисел пока я не виду их 256? Разве нельзя при 20-30 чисел подсчитать то что нужно?
genius5
114 / 36 / 2
Регистрация: 13.12.2009
Сообщений: 223
16.10.2010, 23:01     Работа с файлом #10
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <stdio.h>
#include <stdlib.h>
int func(FILE*f);
int main(void)
{
char m[256];FILE*f=NULL;
scanf("%s",m);
f=fopen(m,"r");
 
printf("%d",func(f));
return 0;
}
 
int func(FILE* f)
{int a,n=0,b,c;
if(fscanf(f,"%d",&a)!=1){printf("net 4isel");return 0;}if(fscanf(f,"%d",&b)!=1){printf("malo 4isel");return 0;}
while(fscanf(f,"%d",&c)==1)
{if(b==(a+c)/2)n++;
 
 
a=b;b=c;}
 
 
 
return n;}
zloy-
0 / 0 / 1
Регистрация: 16.10.2010
Сообщений: 33
16.10.2010, 23:09  [ТС]     Работа с файлом #11
неа, просто игнорирует while

Добавлено через 2 минуты
В последнем варианте даже при пустом txt выводит мало чисел.
genius5
114 / 36 / 2
Регистрация: 13.12.2009
Сообщений: 223
16.10.2010, 23:17     Работа с файлом #12
странно но у меня эта же прога работает вполне верно.а создаеш txt файл там же компилишь?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.10.2010, 23:19     Работа с файлом
Еще ссылки по теме:

C++ Работа с файлом в С++
Работа с файлом C++
Работа с файлом C++
C++ Работа с файлом
If работа с файлом C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
zloy-
0 / 0 / 1
Регистрация: 16.10.2010
Сообщений: 33
16.10.2010, 23:19  [ТС]     Работа с файлом #13
да, работаю на VS2008, создаю с помощью project --> new item --> txt файл.
Ладно ниче страшного. И на этом спс большое!
Yandex
Объявления
16.10.2010, 23:19     Работа с файлом
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru