Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
2 / 2 / 0
Регистрация: 10.09.2009
Сообщений: 95

Считывание данных из файла и их обработка

19.10.2009, 22:54. Показов 2254. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Такой темы не нашел.
Итак. Результат функции записан в файл (предполагается всегда двузначное число).
Нужно: сложить 1-ый и 2-ой символы; перезаписать результат в этот же файл; повторить операцию с новыми данными еще раз.
Такой функции как мат. действия при считывании из файла не нашел.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.10.2009, 22:54
Ответы с готовыми решениями:

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

Считывание данных из файла
Нужно реализовать вывод данных структуры из файла.. Задание: Заполнение футбольных команд и вывод их на экран. Вводим: название...

Считывание данных из файла
почему не првильно работает считывание из файла? #include <iostream.h> #include <conio.h> #include <malloc.h> #include...

10
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
20.10.2009, 00:57
Если не нашёл- значит надо самому писать
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
26
27
28
29
#include <stdio.h>
using namespace std;
 
int main() {
 FILE* f= fopen ("rez.cc", "rb");
 
 int simvol [2];
 
 if (!f) {
  printf ("fail rez.cc ne otkrit");
 }
 else {
  simvol [0]= fgetc (f);
  simvol [1]= fgetc (f);
  simvol [0]= simvol [0]+ simvol [1]- 96; 
  if (simvol [0]> 9) 
   simvol [0]= simvol [0]%10+ 1;
  fclose (f);
  f= fopen ("rez.cc", "wb");
  if (!f) {
   printf ("fail rez.cc ne otkrit");
  }
  fputc ((unsigned char)simvol [0], f);  
  fclose (f);
 }
 
 getchar ();
 return 0;
}
Только сразу говорю- в результате в файле будет символ от 1 до 9.
Привет
1
2 / 2 / 0
Регистрация: 10.09.2009
Сообщений: 95
20.10.2009, 18:32  [ТС]
Бальшое чилавечискае ПАСИБА!
Мне одно как раз и нужно)

Добавлено через 31 минуту
Блин.. че то все поперепутал. Ниче не пойму. Теперь у меня в результате -98
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
20.10.2009, 18:41
Это потому, что ты не можешь считать с файла.
Поэтому каждый раз считывется -1 и -1 Потом они складываются, потом отнимается 96 и получается -98.
Для начала: сперва режим открытия именно rb, потом закрываешь файл, потом именно wb

Трассируй, отлаживай. Умеешь?
0
2 / 2 / 0
Регистрация: 10.09.2009
Сообщений: 95
20.10.2009, 18:46  [ТС]
Нет, конечно. Ладно. Сам подумаю
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
20.10.2009, 18:52
Цитата Сообщение от Poet Посмотреть сообщение
Нет, конечно. Ладно. Сам подумаю
Это верно.
Отследи, какие имено значения считываются из файла. Для этого ставь в прогу после считывания такой код
C++
1
2
3
simvol [0]= fgetc (f);
  simvol [1]= fgetc (f);
  printf ("simvol [0]= %d       simvol [1]= %d\n",simvol [0], simvol [1]);
Вот всё в таком духе.
Так приближайся к тому месту где ошибка в коде.
Это и есть отладка.
0
2 / 2 / 0
Регистрация: 10.09.2009
Сообщений: 95
20.10.2009, 18:55  [ТС]
А если ошибки нет?
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
20.10.2009, 18:59
Ситинтаксической может и не быть.
Но если прога работает не так как предполагается, ошибка есть по определению.

Другое дело- как эту ошибку назвать.
Промах ли, недочёт ли, программисткая ошибка или ещё как-то.
Но нам по хер на названия.
Работай давай.
0
 Аватар для yaku
1 / 1 / 0
Регистрация: 30.05.2009
Сообщений: 25
25.05.2011, 13:52
наконец нашел нужную тему )) как начинающий обращаюсь ко всем знатокам. стоит задача написать програмку которая могла бы считывать данные из файлов двух типов (расширение res и spe) которые содержат в себе набор чисел записаных в столбик и записывать в другой, текстовый. известно что запись в определенной строке соответсвует определенному параметру, хочу сделать так чтобы считывались данные из файлов *.res и *.spe и выводились в текстовом документе по шаблону который привожу ниже.

DataT_1 time_1 cps_1 Ubat_1 UHV_1 Uhv_1 U3v_1 Tcwo_1 Tbat_1 Tpcb_1
DataT_2 time_2 cps_2 Ubat_2 UHV_2 Uhv_2 U3v_2 Tcwo_2 Tbat_2 Tpcb_2
.........
.........
.........
DataT_n time_n cps_n Ubat_n UHV_n Uhv_n U3v_n Tcwo_n Tbat_n Tpcb_n

Пока практикуюсь с 2 файлами, а как быть с большим количеством ( больше 100 шт) это вопрос который буду решать. Думал о том чтобы менять названия файлов на числа от 1 до N, а потом организовать в цикле считывание из каждого, пока нехватает навыков.
Если у Вас есть идеи как это реализовать буд признателен. ниже код программы который собирал по частям.
!!!!!!!!!! я новичок поэтому жду критики и адекватных коментариев

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#include "stdafx.h"
#include <iostream> 
#include <fstream> 
using std::string;
using namespace std;
void main()
{
    char ar_1[200];
    char ar_2[200];
    char ar_time[200];// масив для записи длительности измерения
    char ar_DataT[200];// масив для записи времени измерения
    char ar_Z[200];// масив для записи Z
    char ar_cps[200];// масив для записи счета
    char ar_Ubat[200];// масив для записи напряжения батареи
    char ar_UHV[200];// масив для записи напряжения питания блока
    char ar_Uhv[200];// масив для записи напряжения питания высоковольтника
    char ar_U3_3[200];// масив для записи напряжения 3,3В
    char ar_Tcwo[200];// масив для записи температуры cwo
    char ar_Тbat[200];// масив для записи температуры батареи
    char ar_Тpcb[200];// масив для записи температуры платы
    char a;
 
    int i=0;
 
    //ниже записываем номера строк в которых содержится необходимая информация
    int N_time=12;// строка длительности измерения
    int N_DataT=15;// строка времени измерения
    int N_Z=17;// строка Z
    int N_cps=18;// строка счета
    int N_Ubat=20;// строка напряжения батареи
    int N_UHV=23;// строка напряжения питания блока
    int N_Uhv=35;// строка напряжения питания высоковольтника
    int N_U3_3=47;// строка напряжения 3,3В
    int N_Tcwo=60;// строка температура cwo
    int N_Тbat=61;// строка температура батареи
    int N_Тpcb=62;// строка температура платы
        // файлы с индексом spe содержат данные о наборе, температуре и напряжениях в контрольных точках
        // файлы с индексом data содержат время, длительность измериения, cps  
        ifstream in_1("c:\1spe.txt");
        ifstream in_2("c:\1data.txt");
        ofstream out("c:\5.txt", ios::app);
 
        for(int i=0; i<100 ;i++)
        {
    ar_1[200]=0;
    ar_2[200]=0;
    ar_time [200]=0;
    ar_DataT[200]=0;
    ar_Z[200]=0;
    ar_cps[200]=0;
    ar_Ubat[200]=0;
    ar_UHV[200]=0;
    ar_Uhv[200]=0; 
    ar_U3_3[200]=0;
    ar_Tcwo[200]=0;
    ar_Тbat[200]=0;
    ar_Тpcb[200]=0;
        }
// зная номера нужных мне строк я могу выборочно их записывать использую промежуточный масив    
        for(int i=0; i<200 ;i++)//посимвольно считываем из файла 1spe.txt 
        {
                in_1>>ar_1[i];//прогоняем все строки через буферный 
                        //масив и выбираем строки с параметрами измерения,температура и напряжение
                                //нужные значения записую использую критерий отбора поскольку не все строки содержат полезную информацю
        if (i=N_UHV); ar_1[i]>>ar_Uhv[i]; // записали нужные данные о напряжения питания блока
           
        if (i=N_Uhv); ar_1[i]>>ar_Uhv[i]; // записали нужные данные о напряжении питания высоковольтника
           
        if  (i=N_Ubat); ar_1[i]>>ar_Ubat[i]; // записали нужные данные о напряжении батареи
           
        if (i= N_U3_3); ar_1[i]>>ar_U3_3[i]; // записали нужные данные о напряжении 3,3В
           
        if (i=N_Tcwo); ar_1[i]>>ar_Tcwo[i]; // записали нужные данные о температуре cwo        
        if (i=N_Тbat); ar_1[i]>>ar_Тbat[i]; // записали нужные данные о температуре батареи
           
        if (i=N_Тpcb);ar_1[i]>>ar_Тpcb[i]; // записали нужные данные о температуре платы
        }   
       
        for(i=0; i<200 ;i++)//посимвольно считываем строки из файла 1data.txt
        {
           in_2>>ar_2[i];//прогоняем все строки через буферный 
                        //масив и выбираем строки с датой, длительностью, Z
        if (i=N_time) ar_2[i]>>ar_time[i];// записали нужные данные о длительности измерения
 
        if (i=N_DataT) ar_2[i]>>ar_time[i];// записали нужные данные о времени измерения
           
        if (i=N_Z) ar_2[i]>>ar_Z[i]; // записали нужные данные о Z 
           
        if (i=N_cps) ar_2[i]>>ar_cps[i]; // записали нужные данные о счете
           
        }
        for(int j=0; j<200; j++)//посимвольно выводим в файла 5 по столбикам
        {
                out<<ar_time[j]<<' '<<ar_DataT[i]<<' '<<ar_Z[j]<<' '<<ar_cps[j]<<' '<<ar_Ubat[j]<<' '<<ar_UHV[j]<<' '<<ar_UHV[j]<<' '<<ar_Uhv[j]<<' '<<' '<<ar_U3_3[j]<<' '<<ar_Tcwo[j]<<' '<<ar_Тbat[j]<<' '<<ar_Тpcb[j]<<' '<<endl;
        }
       
    in_1.close();//закрываем потоки
        in_2.close();
        out.close(); 
}
 Комментарий модератора 
Используйте теги форматирования кода!
0
 Аватар для yaku
1 / 1 / 0
Регистрация: 30.05.2009
Сообщений: 25
06.06.2011, 12:25
люди !!!!!!! куда мне писать? кто знает где искать решение, подскажите, может есть подходящяя тема на форуме?
0
В вечном поиске...
 Аватар для Nursik77
275 / 235 / 30
Регистрация: 05.04.2011
Сообщений: 645
06.06.2011, 12:42
Poet, так пойдет?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<stdio.h>
#include<conio.h> 
main()
{
int k,i,n,s=0; 
  char fname[]="c:\\number.txt";
  clrscr(); 
  FILE *fp; 
  fp = fopen(fname,"w"); 
  printf("Dannie budut vvedeni v file - %s\n",fname);
  puts("Vvedite chisla i nazhmite ENTER!\n");
    {
     scanf("%d %d",&k,&n);
    s=k+n;
     fprintf(fp,"%d + %d = %d",k,n,s);
    } 
   fclose(fp);
printf("Vvedennie dannie zapisani v file %s\n",fname);
getch();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.06.2011, 12:42
Помогаю со студенческими работами здесь

Считывание данных из файла
Нужно считать данных из файла для объектов класса. Но обоим объектам присваиваются 4 последних значения из файла. Как сделать что-бы...

Считывание данных из файла
Всем привет, возник вопрос. Нужно считывать из .txt файла координаты точек в массив, размерность которого . Но т.к числа разделены...

Считывание данных из файла
Нужно считать из txt-файла все значение &quot;Angle&quot;, а затем присвоить им значения переменных &quot;a&quot; и &quot;b&quot; так, чтобы в цикле...

Считывание данных из файла
Всем здравствуйте... вообщем создан пользовательский класс пассажир class Passenger: public Human { private: string...

Считывание данных из файла
Есть файл в котором содержится число 145. Мне нужно считать из файла это число без числа 5, то есть все числа до числа 5. Помогите.


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru