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

Чтение из файла - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Как теоретически (не программно) посчитать количество сравнений и обменов в пузырьковой сортировке? http://www.cyberforum.ru/cpp-beginners/thread1167120.html
как теоретически посчитать количество сравнений и обменов в пузырьковой сортировке?не программно
C++ Возвращение массива из функции int generation(int m, int n = 0) { int double_matrix; int single_matrix; int i,j; if(n != 0) { for (i = 0; i < m; i++) { for (j = 0; j < n; j++) { cout << "Введите элемент : "; http://www.cyberforum.ru/cpp-beginners/thread1167119.html
C++ найти число правильных скобочных выражений
Находил тут код,но он считает не правильно.Помогите найти ошибку. Если мы из корректно записанного арифметического выражения, содержащего числа, знаки операций и открывающие и закрывающие круглые скобки выбросим числа и знаки операций, а затем запишем оставшиеся в выражении скобки без пробелов между ними, то полученный результат назовем правильным скобочным выражением . Найти число правильных...
Написать код по блок-схеме C++
Помогите перевести этот алгоритм на язык программирования прошу. Очень плохо в этом разбираюсь.
C++ Проблема с выводом времени http://www.cyberforum.ru/cpp-beginners/thread1167074.html
есть код рабочий,проблема с выводом времени,выводит в цикле,как сделать,чтоб одним числом выводился? #include <iostream> #include <conio.h> #include <windows.h> using namespace std; #define max 100 int a; int n; void merge(int l, int r) { int start=GetTickCount();
C++ Модульное программирование Реализовать алгоритм работы с динамической структурой данных – однонаправленный список: элементы добавляются, просматриваются и удаляются с конца списка. Элементы списка – целые числа. (помогите пожалуйста с решением). подробнее

Показать сообщение отдельно
evelolka
 Аватар для evelolka
2 / 2 / 0
Регистрация: 25.10.2013
Сообщений: 108
05.05.2014, 16:59     Чтение из файла
допишите в мою прогу чтоб считывало из файла а то у меня затуп
вывод норм
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
187
188
189
190
#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 %15d", current->name , current->family , current->dolzhnost , current->god );
                    current = current -> next;
                }
            };  
    }
 
    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;
    fopen_s(&out,"c:/Users/zzz/Desktop/lab.txt","w+");
    if(out == NULL)
    {
        printf_s("Невозможно открыть поток");
    }
    else
    {
        if( head != 0 )
        {
            current = head;
            while( current != 0 )
                {
                    
                    fprintf(out , "%15s%15s%15s%15d\n", current -> name , current -> family , current -> dolzhnost , current -> god );
                    current = current -> next;
                };
            fclose(out);
        }
    else
        printf_s( "Ничего не введено\n" );
    }
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    }
system("pause");
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 02:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru