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

Чтение из файла и проверка - C++

Восстановить пароль Регистрация
 
DonVito
0 / 0 / 0
Регистрация: 14.03.2013
Сообщений: 3
26.05.2013, 21:55     Чтение из файла и проверка #1
Нужно написать функцию для чтения и проверки данных из файла, внутри него могут храниться любые символы, но считывать нужно только float формат. Считывать нужно только по два правильных значения с каждой строки

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
FILE* pfile= fopen("С:\\input.txt","r");
    if (pfile){
        int a;
        while((a=fscanf(pfile, "%f%f", &x, &y))!=EOF) {
            if (!a) {
             fseek(pfile,1,SEEK_CUR);
                continue;
            }
            spisok.AddLast(x, y);
        };
        }
    else{
        cout<<" Ошибка"<<endl;
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2013, 21:55     Чтение из файла и проверка
Посмотрите здесь:

C++ Чтение из файла
C++ чтение из файла
C++ Чтение файла
чтение из файла C++
C++ Чтение из файла
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
papays
4 / 4 / 1
Регистрация: 27.03.2010
Сообщений: 18
27.05.2013, 18:37     Чтение из файла и проверка #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
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
// Читает вещественные числа из любого текстового файла в массив Value
#include <conio.h>
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <cstring>
using namespace std;
 
bool isdigit (char x)
 
{ if (x >= '0' && x <= '9') return true;
  else return false;
} 
 
 
int main()
{ 
    char Str[128];
FILE *F;
if ((F = fopen("file.txt", "rt")) == NULL)
{
 cout <<"Файл не удается открыть";
 return 1;
}
 
do
{
 fgets(Str,100,F);
 if(feof(F)) break;
 
}
while(true);
fclose(F);  
  float Value[12]; 
  int Len = strlen (Str);
 int j=0; 
  for (int i=0; i<Len; i++) 
    {
      while (!isdigit(Str[i]) && i<Len)i++; 
 int h=1; 
      float S=0;
      bool Flag = true; 
      while ((isdigit(Str[i])||Str[i]=='.') && i<Len) 
        {
          if (Str[i]=='.') {Flag = false; i++; continue;}
          if (Flag) 
            S = S*10 + (int)Str[i] -48;
          else 
            S = S+((int)Str[i] - 48)*pow(0.1,h++);
          i++; 
        }
     *(Value + j++)= S;  
    }
   // например выводит массив в консольное окно 
  for(int t=0; t<12; t++)
   cout << Value [t] <<"\n";
   
   getch(); 
 return 0;  
}
DonVito
0 / 0 / 0
Регистрация: 14.03.2013
Сообщений: 3
27.05.2013, 20:43  [ТС]     Чтение из файла и проверка #3
Спасибо. Но только мне не понятно, что вы делаете вот здесь
Цитата Сообщение от papays Посмотреть сообщение
S = S*10 + (int)Str[i] -48;
и здесь
Цитата Сообщение от papays Посмотреть сообщение
S = S+((int)Str[i] - 48)*pow(0.1,h++);
и почему такие числа
papays
4 / 4 / 1
Регистрация: 27.03.2010
Сообщений: 18
28.05.2013, 18:31     Чтение из файла и проверка #4
Запусти программу без (-48) увиди что символ точка стоит не на своей позиции, не ленись эксперементировать!
Yandex
Объявления
28.05.2013, 18:31     Чтение из файла и проверка
Ответ Создать тему
Опции темы

Текущее время: 00:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru