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

Работа с файлами. Неверный вывод. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Объясните прогу http://www.cyberforum.ru/cpp-beginners/thread593084.html
Объясните действие проги, а то препод на паре дала ее и толком ничего не растолковала #include <fstream.h> #include <iostream.h> #include <stdio.h> #include <windows.h> struct FAIL { char a ;int k; };
C++ Класс рисующий несколько элипсов нужно написать класс рисующий несколько элипсов и при помощи клавиатуры чтобы можно было их перемещать по экрану....если кто знает или может напишите пжлст( и добавьте коменты по возможности)......заранее благодарю http://www.cyberforum.ru/cpp-beginners/thread593067.html
C++ Рекуроентные нейронные сети. РНС Элмана
Пишу рекуррентную сеть для распознавания хаотического (детерменированного) временного ряда (к примеру ряд Энонна), но это не так важно. Проблем в том, что уже переписываю третий раз, а видимо делаю какие-то ошибки в самом алгоритме обучения или распространения образа и обратного распространения ошибки. Использую метод скользящего окна, модифицирую по методу градиентного спуска и обучаю по...
C++ Прокомментировать код
Может кто нибудь помочь с комментариями просто очень надо) // x.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include "stdafx.h" #include "iostream" using namespace std; class massiv {public:
C++ Вычисление объема цилиндра http://www.cyberforum.ru/cpp-beginners/thread593029.html
// x.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" // Вычисление объема цилиндра #include <stdio.h> #include <conio.h> #include <locale.h> #define PI 3,1415926 fioat v(float r, float h)
C++ Функция для обработки строк Написать функцию, возвращающую самое длинное слово в строке. подробнее

Показать сообщение отдельно
intnower
0 / 0 / 0
Регистрация: 12.01.2012
Сообщений: 68
02.06.2012, 20:46  [ТС]     Работа с файлами. Неверный вывод.
Цитата Сообщение от intnower Посмотреть сообщение
спасибо большое за помощь!

Добавлено через 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
void SortLib ()
{
    int i,j;
    FILE *fp;
    fp = fopen (filename,"r");
    language box[nCount], n;
 
    for (i=nCoutn-1; i>0; i--)
            for(j=0; j<i; j++)
                {
                    if (box[j].year < box[j+1].year)
                        {
                            n = box[j+1];
                            box[j+1] = box[j];
                            box[j] = n;
                        }
                }
            for (i=0; i<nCount; i++)
                {
                    cout << endl;
                    cout << "Год:" << box[i].year << '\t'; 
                    cout << "Фамилия:" << box[i].name << '\t';
                    cout << endl << endl;
                }
            fclose(fp);
}
судя по всему так не прокатит.. Я же изначально в массив структур заносил данные..
как же произвести сортировку по году?


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
#include <iostream>
#include <conio.h>
#include <string.h>
#include <windows.h>
using namespace std;
void loadLib(); 
void saveLib();
char *filename="heh.txt";
struct language //структура ЯЗЫК
    {
        char name[30];
        char lang[30];
        int day;
        int month;
        int year;
 
        language()
        {
            memset(name,0,sizeof(name));
            memset(lang,0,sizeof(lang));
        }
    };
 
 int nCount; // переменная для хранения количества клиентов
 
void addClient()
{   FILE *fp;
    fp = fopen (filename,"r");
    language b;
  char ch;
  fp=fopen(filename,"r+");
 
   do
    { //вводим информацию об очередном клиенте
      system("cls"); 
      cin.sync();
      cout<<"Введите sданные о клиенте."<<endl;
      cout<<"Фамилия: \t" ; cin.getline(b.name, 29);
      cout<<"Язык: \t"; cin.getline(b.lang, 29);
      cout<<"День: \t"; cin>>b.day;
      cout<<"Месяц: \t"; cin>>b.month;
      cout<<"Год: \t"; cin>>b.year;
      nCount++;
      //заносим информацию о количестве клиентов в начало файла
      fseek(fp,0,SEEK_SET);
      fwrite(&nCount, sizeof(int), 1, fp);
      //заносим информацию об очередном клиенте в конец файла
      fseek(fp,0,SEEK_END);
      fwrite(&b, sizeof(language), 1, fp);
      
      cout<<"\nВвести данные о еще одной книге (д/н)?";
      ch=_getche();
    }
   while(ch=='Д' || ch=='д'); //можно ввести данные о нескольких клиентов
   fclose(fp);
   cout<<endl;
  }
 
void showLib()
{ 
    int i;
    language b;
    FILE *fp;
    fp = fopen (filename,"r");
    cout << endl << "Список клиентов в библиотеке:" << endl;
    if (nCount == 0) cout << "В списке нет клиентов";
    else
        {   
            fp = fopen (filename,"r");
            if (fp == NULL) cout << "Ошибка чтения данных из файла";
            else
                {
                    fseek(fp, sizeof(int), SEEK_SET); //пропускаем целое число количество клиентов в начале файла
                    for(i=0; i<nCount; i++) //перебираем всех клиентов из файла
                        {
                            fread (&b, sizeof(language), 1, fp);
                            cout << i+1 << ") " << b.name << "  " << b.lang << " язык  " << b.day << "." << b.month << "." << b.year << "." << endl;
                        }
                    fclose (fp);
                }
        }
        cout <<"Количество клиентов - " << nCount;
        cout << endl;
 
}
 
int main()
{
    SetConsoleCP(1251);  //Устанавливаем кодировку для ввода
    SetConsoleOutputCP (1251); //Устанавливаем кодировку для вывода
    setlocale (LC_ALL, "Russian");
 
    char ch='0';
    initLib ();  
    showMenu ();    //выводим меню
    ch=_getch ();
    while (ch!='5')
    {
        
         switch (ch)     //в зависимости от выбора пользователя вызываем функцию
        {
            case '1': addClient(); break;
            case '2': showLib(); break;
            case '4': SortLib(); break;
            default: cout << "Неверный ввод!!!" << endl;
        }
        cout << "Нажмите любую клавишу ...";
        _getch ();
        system ("cls"); 
        showMenu ();      //выводим меню
        ch=_getch ();
    }
    return 0;
}
Тут Я создаю информацию о клиентах и вывожу её на экран..
из этого теперь возможно сделать сортировку?

Добавлено через 12 минут
Цитата Сообщение от modwind Посмотреть сообщение
Ну, если разрешено использовать c++, я бы написал проще. Считываем все записи, сортируем и записываем обратно в файл. Функция сортировки есть стандартная, sort, надо только подключить файл algorithm и указать правильное условие сортировки.

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 <algorithm>
 
bool isLess(language i,language j)
{
    if (i.year<j.year) return true;
    if (i.year>j.year) return false;
    if (i.month<j.month) return true;
    if (i.month>j.month) return false;
    if (i.day<j.day) return true;
    if (i.day>j.day) return false;
    return false;
}
 
 void sortLib ()
{
    FILE *fp;
 
    fp = fopen (filename,"r+");
    language* box=new language[nCount];
    fseek(fp, sizeof(int), SEEK_SET); //пропускаем целое число количество клиентов в начале файла
    fread(box,sizeof(language),nCount,fp);
 
    sort(box, box+nCount, isLess);
 
    fseek(fp, sizeof(int), SEEK_SET); //пропускаем целое число количество клиентов в начале файла
    fwrite(box,sizeof(language),nCount,fp);
    fclose(fp);
    delete box;
}
спасибо! Но вот не как не могу понять, как нужно вывести результат на экран (:
 
Текущее время: 21:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru