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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Нужно чтобы за 1 секунду пользователь либо нажал либо нет любую клавишу клавиатуры http://www.cyberforum.ru/cpp-beginners/thread1034989.html
Нужно чтобы за 1 секунду пользователь либо нажал либо нет любую клавишу клавиатуры. Как реализовать?
C++ Определить одномерный массив из N вещественных чисел и вычислить Определить одномерный массив из N вещественных чисел и вычислить: 1) минимальный элемент массива; 2) сумму элементов массива, расположенных правее последнего отрицательного элемента; 3) преобразовать массив так, чтобы сначала располагались все положительные, а потом - все отрицательные элементы массива. http://www.cyberforum.ru/cpp-beginners/thread1034982.html
преобразование и построение матриц C++
В файле “input.txt” задана квадратная матрица А размером n × n. В первой строке файла указан размер n, а в следующих строках файла – значения элементов матрицы по строкам. Построить n мерный вектор , компоненты которого определяются как максимальный элемент соответствующей строки.
C++ Определить есть ли в массиве одинаковые строки
Дан двумерный массив A размера m x n. Определить, есть ли в A одинаковые строки. Кто может помочь? Вот бред моего производства... #include <cstdlib> #include <iostream> using namespace std; int main(int argc, char *argv) { int i, j, n, m, k; float **A, *c; bool b = true; cout<<"Vvedite kol-vo strok : "; cin>>n; cout<<"Vvedite kol-vo stolbcov : "; cin>>m;
C++ Побитовые операции http://www.cyberforum.ru/cpp-beginners/thread1034979.html
Написать функцию, заменяющую n левых битов числа x на инвертированные n левых битов этого числа. Провести вычисление для заданного числа x и заданного количества левых битов n. Результат записать в файл.
C++ Найти два различных элемента массива, сумма которых наиболее близка к числу R Дано число R и массив размера N. Найти два различных элемента массива, сумма которых наиболее близка к числу R, и вывести эти элементы в порядке возрастания их индексов. Все понятно и могу сделать но кроме момента: два различных элемента массива, сумма которых наиболее близка к числу R.Нужна помощь) подробнее

Показать сообщение отдельно
FauLL
3 / 3 / 1
Регистрация: 17.05.2010
Сообщений: 64
20.12.2013, 00:15  [ТС]     Работа с файлами
сделал программу, но
1-не знаю как перегрузить функцию ввода в текстовом файле без r
2-при работе с текстовым файлов, не правильно выводиться tmp.ves
читал что нужно преобразовать символьную строку в число с помощью atof, но незнаю как

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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
#include <iostream>
#include <cstdlib>
#include <string>
#include <windows.h>
#include <stdlib.h>
 
 
using namespace std;
 
struct sub 
{
     char name[15];
     double ves;
     char provod[15];
};
 
int WriteFile(FILE *f)
{
    sub arr;
    int n;
    if (f == NULL)
    {
        printf("Error");
        exit(0);
    }
 
    cout<<"Введете количество записей:"<<endl;
    cin>>n;
        cout<<"Введите название эелемента, удельный вес и тип проводимости"<<endl;
    for(int i = 0; i < n; i++)
    {
             cin >> arr.name >> arr.ves >> arr.provod;
        fwrite(&arr, sizeof(sub), 1 , f);
            cout << endl;
    }
    fclose(f);
    return n;
}
 
void ReadFile(FILE *f, int z, char *pr)
{
    sub arr;
    f = fopen("file.dat", "rb");
    if (f == NULL)
    {
        printf("Error");
        exit(0);
    }
    printf("\n");
    printf("Output file:\n");
    cout << "\nПолупроводники:" << endl;
    for(int i = 0; i < z; i++)
    {
        fread(&arr, sizeof(sub), 1 , f);
         if(strcmp(arr.provod, pr) == 0)
     cout << arr.name << ' ' << arr.ves << endl;
    }
    fclose(f);
}
 
//текстовый файл
int WriteFile(FILE *f1, float r)
{
 
    char name[15];
    char ves[15];
    char provod[15];
    int n;
    if (f1 == NULL)
    {
        printf("Error");
        exit(0);
    }
 
    cout<<"Введете количество записей:"<<endl;
    cin>>n;
        cout<<"Введите название эелемента, удельный вес и тип проводимости"<<endl;
    for(int i = 0; i < n; i++)
    {
             cin >> name;
        fputs(name , f1);
        fprintf(f1,"\n");
        cin >> ves ;
        fputs(ves , f1);
        fprintf(f1,"\n");
        cin >>provod;
        fputs(provod , f1);
        fprintf(f1,"\n");
            cout << endl;
    }
    fclose(f1);
    return n;
}
 
void ReadFile(FILE *f1,double m, char *pr)
{
    
    //string name;
    //string ves;
    //string provod;
    sub tmp;
    f1 = fopen("file.txt", "r");
    if (f1 == NULL)
    {
        printf("Error");
        exit(0);
    }
    printf("\n");
    printf("Output file:\n");
    cout << "\nПолупроводники:" << endl;
    for(int i = 0; i < m; i++)
    {
        //fgets(name, , f1);fgets(ves ,, f1);
        fscanf(f1,"%s", &tmp.name);
        fscanf(f1,"%d", &tmp.ves);
        fscanf(f1,"%s", &tmp.provod);
        //cout<<tmp.provod;
        //memset(provod,0,15);
        //cout<<provod;
        //fgets(provod , , f1);
        //cout<<provod;
         if(strcmp(tmp.provod, pr) == 0){
             //cout<<provod;
    
     cout<<tmp.name<<" "; 
     
     cout<< tmp.ves << endl;}cout<<endl;
    }
    fclose(f1);
}
 
int main()
{
     SetConsoleCP(1251);
     SetConsoleOutputCP(1251);
     FILE *f;
      FILE *f1;
     int z,x;
     float r;
     double m;
     char* pr = "полупроводник";
     cout<<"Выберите тип файла:"<<endl;
     cout<<"1-текстовый"<<endl;
     cout<<"2-типизированный"<<endl;
     cin>>x;
     cout<<"левое число"<<endl;
     cin>>r;
     switch(x)
     {case 2:
         f = fopen("file.dat", "wb");
    z = WriteFile(f);
    ReadFile(f, z, pr );
    break;
     case 1:
          f1 = fopen("file.txt", "w");
 m= WriteFile(f1, r);
    ReadFile(f1, m, pr);
     }
     system("pause");
     return 0;
}

C++
1
2
3
4
5
6
#pragma once
 
int WriteFile( FILE *f);
void ReadFile( FILE *f, int z,  char* pr);
int WriteFile( FILE *f1, r);
void ReadFile( FILE *f1, double m,  char* pr);
 
Текущее время: 09:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru