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

Разъясните ошибки при считывании файла - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Ошибка при работе с шаблонами в многофайловом проекте http://www.cyberforum.ru/cpp-beginners/thread1164025.html
Цель проста - пишу класс очереди, используя шаблоны. Возниает следующая ошибка: ||=== Build: Debug in Queue (compiler: GNU GCC Compiler) ===| obj\Debug\main.o||In function `main':| main.cpp|10|undefined reference to `Queue<int>::Queue(int)'| main.cpp|12|undefined reference to `Queue<int>::add(int)'| main.cpp|14|undefined reference to `Queue<int>::extract()'| ||=== Build failed: 3 error(s),...
C++ Ошибка при запуске пустого проекта При запуске пустого проекта выдает ошибку. http://www.cyberforum.ru/cpp-beginners/thread1164016.html
C++ Олимпиадная задача на зеркальное отражение строки
Задача A #include <iostream> int main() { const int n = 1000010; char * t = new char; std::cin.getline(t,n);
C++ Метод бисекции поиска собственных значений матрицы
Здравствуйте. Собственно необходимо реализовать данный алгоритм. Делал по этому сайту https://people.fh-landshut.de/~maurer/numeth/node91.html#GBNDMIN .Считать, считает, но не то, что нужно. Собственные значения должны получиться 0, 2, 6, а получается 2, 5, 8. Помогите пожалуйста найти ошибку. #include "stdafx.h" #include <stdio.h> #include <iostream> #include <string> #include <math.h>...
C++ Вывести двоичный код в массив в заданном формате http://www.cyberforum.ru/cpp-beginners/thread1163987.html
Необходимо вывести двоичный код в массив в таком формате 1 10 11 100 101 и т.д. до N-ого раза я пытался решить это 3 способами 1. алгоритмом, но неудачно 2. выводом двоичного кода с нулями слева
C++ Алгоритм Данцига Помогите пожалуйста может у кого есть код алгоритма Данцига. В википедии почитал вроде пару строчек но ничего не выходит. Вот что получилось void Danzig(int Adj, int& n) { int temp; for (int i=0; i<n; i++) for (int j=0; j<n; j++) temp=Adj; подробнее

Показать сообщение отдельно
evelolka
 Аватар для evelolka
2 / 2 / 0
Регистрация: 25.10.2013
Сообщений: 108
02.05.2014, 14:27     Разъясните ошибки при считывании файла
не пойму что от меня требуется тут) пол года изучаем язык) часть ошибок исправил но при считывании с файла лепит нарушение прав доступа

Разъясните ошибки при считывании файла
Разъясните ошибки при считывании файла
Разъясните ошибки при считывании файла

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
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
#include < Windows.h >
#include < stdio.h >
#include < clocale >
#include < conio.h >
#include < iostream >
using namespace std;
struct WORKER
    {
        char family[20], name[20], dolzhnost[20];
        int god;
        WORKER * next;
    };
    WORKER * head = 0;
    WORKER * current = 0;
    char c;
    int schetchik = 0;
    int schetchik_goda =0;
    int sred_god =0;
int main()
{
    setlocale(LC_ALL,"RUS");
   SetConsoleCP(1251);// установка кодовой страницы win-cp 1251 в поток ввода
   SetConsoleOutputCP(1251); // установка кодовой страницы win-cp 1251 в поток вывода
    printf_s("ввести данные ?( д ) или считать из файла? ( с )\n");
    c = _getche();
    
    if( c == 'с')
    {
        char file[100];
        printf_s("\nВведите адрес файла\n");
        gets_s( file );
        FILE * read;
        fopen_s( &read , file , "a+" );
        if(read==NULL)
            printf_s("Ошибка при открытии");
        else
            while( !feof( read ) )
            {
                if(fgetc( read ) == EOF)
                    printf("\n А файл то пуст \n");
                else
                fscanf_s( read,"%15p%15p%15p%15i",current->name,current->family,current->dolzhnost,current->god );
            };
            fclose(read);
    }
 
    if( c == 'д')
    {
        while(c == 'д')
        {
            schetchik++;
            if (head != 0) 
                { 
                    current -> next = new WORKER; 
                    current = current -> next; 
                }
            else     
                { 
                    head = new WORKER; 
                    current = head;   
                }
 
            cout<<"\nВведите имя\n";
            cin >> current -> name;
            cout << "Введите фамилию\n";
            cin >> current -> family;
            cout << "Введите должность\n";
            cin >> current -> dolzhnost;
            cout << "Введите год поступления на работу\n";
            cin >> current -> god;
            schetchik_goda += current -> god;
            current -> next = 0;
            cout << "Ввести данные?(да/нет)\n";
            c = _getche();
        }
 
    
    //////////////////////////////////////сортировка  по году принятия на работу////////////////////////////////////////////////////////////
    bool stop = true;   // продолжение сортировки
 WORKER *prev = 0;        // адрес пердыдущего
 
 current = head;
 while( stop )
 {
     stop = false ;
     current = head ;
     
     while( current != 0 )
     {
         if( current -> next !=0 && ( current -> god > current -> next -> god ) )
         {
             if( current == head )           // если первый - меняем первый элемент на последующий
             {
                 head = head -> next ;
                 current -> next = head -> next ;
                 head -> next = current ;
                 prev = head ;             // станет предыдущим для следующей итерации...
             }
      else                    // иначе ЕСЛИ за ним идет последний - меняем элемент с последним
      if( current -> next -> next == 0 )
      {
       current -> next -> next = current ;
       prev -> next = current -> next ;
       current -> next = 0 ;          // фактически выйдем из цикла
      }
      else                    // инача промежуточный элемент
      {
       prev -> next = current -> next ;
       current -> next = current -> next -> next ;
       prev -> next -> next = current;
 
       prev = prev -> next ;    
      }
 
      stop = true ;           // т.к. заменаа прошла, то возможно будут еще... разрешаем цикл дальше
     }
     else                     // если критерий замены не прошел - сохнаняем предыдущий и переходим к следующему
     {
      prev = current ;
      current = current -> next ;
     }
 
   }
 }
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    if( head != 0 )
    {
        printf("\n _______________________________________________________________\n");
            printf("\n|Имя            |Фамилия        |Должность      |Год поступления|\n");
            printf(" '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''\n");
        current = head;
        while( current != 0 )
        {
            printf("\n|%15s|%15s|%15s|%15i|\n", current -> name , current -> family , current -> dolzhnost , current -> god );
            printf(" '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''\n");
            current = current -> next;
        };
    }
    else
        printf("Ничего не введено\n");
 
 
 
/////////////////////////фамилии тех, чей стаж меньше среднего//////////////////////////////////////////////////////////////////////////
    sred_god = schetchik_goda / schetchik;
    current = head;
    printf("\n\n                    Стаж работы ниже среднего                       ");
            printf("\n _______________________________________________________________\n");
            printf("\n|Имя            |Фамилия        |Должность      |Год поступления|\n");
            printf(" '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''\n");
    while(current != 0)
    {
        if(current -> god > sred_god)
        {
            printf("|%15s|%15s|%15s|%15i|\n", current -> name , current -> family , current -> dolzhnost , current -> god );
            current = current -> next;
        }
        else
            current = current -> next;
    }
//////////////////////////////////////////////////////Вывод в файл//////////////////////////////////////////////////////////////////////////
    FILE*out;
    char filename[100];
    strcpy_s(filename,"c:/Users/zzz/Desktop/lab.txt");
    fopen_s(&out,filename,"w+");
        if( head != 0 )
        {
            current = head;
            fprintf(out , "\n _______________________________________________________________\n");
                    fprintf(out , "\n|Имя            |Фамилия        |Должность      |Год поступления|\n");
                    fprintf(out , " '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''\n");
            while( current != 0 )
                {
                    
                    fprintf(out , "|%15s|%15s|%15s|%15i|\n", current -> name , current -> family , current -> dolzhnost , current -> god );
                    fprintf(out , " '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''\n");
                    current = current -> next;
                };
        }
    else
        fprintf( out , "Ничего не введено\n" );
    fclose(out);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    }
system("pause");
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 22:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru