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

Непонятные ошибки - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Как отловить закрытие программы? http://www.cyberforum.ru/cpp-beginners/thread350882.html
Не знаю как описать проблему, поэтому просто опишу, своими словами. На форме в TMainMenu и в TTrayIcon есть кнопки "закрыть". В них событие, которое вызывает диалог, типа "Вы уверены, что хотите выйти? Да/Нет". Соответственно если да - прога выгружается, если нет - прога остаётся работать. Но я столкнулся с проблемой - я не могу привязать это событие к кнопке "Закрыть" в диалоге, ну которая...
C++ Вычисление функции Помогите пожалуйста с функцией.Только начали учить с++ и сразу дали задачу, не получается ничего. В общем нужно написать программу, которая будет вычислять такую функцию, если задать х: сама функция прикреплена спасибо большое. http://www.cyberforum.ru/cpp-beginners/thread350861.html
Пересечение множеств C++
Есть такое задание: Создать класс- множество. Функции-члены реализуют добавление и удаление элемента, пересечение и размность множеств. Само множество я сделал, сделал ещё две ф-ции.А вот с пересечением беда. #include "stdafx.h" #include <iostream> using namespace std; class mnozh { int *m; int size;
Простой mp3 плеер C++
Еще раз здравствуйте господа программисты. Для курсового проекта понадобилось написать простенький плеер mp3 (пауза, прокрутка в обе стороны, и естественно загрузка файла *.mp3 из папки). Буду очень благодарна за исходники :) Добавлено через 53 минуты upped
C++ Найти все меньшие 100 натуральные числа, которые при возведении в квадрат дают палиндром. http://www.cyberforum.ru/cpp-beginners/thread350837.html
Назовем натуральное число палиндромом, если его запись читается одинаково с начала и с конца (как, например, 4884, 393, 1). Найти все меньшие 100 натуральные числа, которые при возведении в квадрат дают палиндром.
C++ Получить целую часть числа Дано действительное число х. Получить целую часть *) числа х\ затем—число х2 округленное до ближайшего целого; затем—число х без дробных цифр. подробнее

Показать сообщение отдельно
-=ЮрА=-
Заблокирован
Автор FAQ
13.09.2011, 19:59     Непонятные ошибки
Листин CAthlete.h
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
#ifndef CATHLETE//Объявляем по всем правилам)))
#define CATHLETE
 
#include <windows.h>  //OemToChar - после ввода на руском нужно менять кодировку
                      //(к содалению в  BORLANDE нет OemToChar ((
#include <iostream.h> //i/o
#include <fstream.h>  //fread fwrite
#include <string.h>   //strlenwork with strings
 
//Руссификация
ostream& operator<<(ostream &stream,char* s){
    for(char* ps=s; *ps; ps++){
        if(*ps=='ё')
            stream<<char(241);
        else if(*ps=='Ё')
            stream<<char(240);
        else if(*ps>=-64 && *ps<=-17)           
            stream<<char(*ps+64+128);
        else if(*ps<0)
            stream<<char(*ps+64+176);
        else
            stream<<*ps;
    }
    return stream;
}
 
 
struct time_s
{
    int imin;
    int sec;
};
 
struct athlete
{
   char name   [20];
   char f_name [20];
   int age;
   time_s time;
};
 
class CAthlete
{
private:
    athlete *all;
    int count;
    int imin;
    fstream f1;
    fstream f2;
    ofstream f;
public:
    CAthlete(){all = NULL;};//Пошёл по пути конструктора без параметров
    ~CAthlete()
    {
        Reset();
    }
    void Reset()
    {
        if(all != NULL)
            delete [] all;
    }
    bool SetCount(int _count);
    void process(char *f1_name, char *f2_name);
};
 
//Класс маленький решил не вводить CAthlete.cpp пишу прототипы функций сразу в хедере
 
bool CAthlete::SetCount(int _count)
{
    bool bRet = true;
    Reset();//Очищаем память перед её новым выделением
    if(!(all = new athlete[(count = _count)*sizeof(athlete)]))
        bRet = false;//Ошибка при выделении памяти
    if(!bRet)//Сразу же чистим память в случае ошибки
        Reset();
    return bRet;
}
 
void CAthlete::process(char *f1_name, char *f2_name)
{
    int i, k, imin = 0;
    f1.open(f1_name, ios::in | ios::out);
    if (f1.fail())
    {
       cout << "F1 Ошибка!" << f1.rdstate() << "\r\n";
       return;//Выходим т.к без f1 не сможем работать
    }
    //Если f1 открыли идём дальше
    f2.open(f2_name, ios::in | ios::binary | ios::out);
    if (f2.fail())
    {
       cout << "F2 Ошибка!" << f2.rdstate() << "\r\n";
       return;//Выходим т.к без f2 не сможем работать
    }
    //Если f2 открыли идём дальше
   cout << "\tВведите данные о спортсменах\r\n";
   for (i = 0; i < count; i++)//++i - забудь об этом хоть и быстро но ненадёжно
       //хочешь проверь и поставь ++i со 2-й структуры поле "Имя : " будет пропущено
   {
        cout << "Спортсмен # "<<i + 1 << "\r\n";
        cout << "Имя : ";       cin >> all[i].name;
        OemToChar(all[i].name,all[i].name);    //Меняем кодировку на ANSI
        cout << "Фамилия : ";   cin >> all[i].f_name;
        OemToChar(all[i].f_name,all[i].f_name);//Меняем кодировку на ANSI
        cout << "Возраст : ";   cin >> all[i].age;
        cout << "Результат :\r\n";
        cout << "мин : ";       cin >> all[i].time.imin;
        cout << "сек : ";       cin >> all[i].time.sec;
   }
   
   f2.write((char *)all,count*sizeof(athlete));//Пишем сразу все структуры
   f2.seekg(0,ios::beg);//Позиционируем курсор вначало
   
   char sTitle[] = "Проверка считывания из F2:\r\n";
   f1.write(sTitle,strlen(sTitle));
   for(i = 0;i < count; i++)
   {
       //Читаем по 1-й структуре
       f2.read((char *)&all[i], sizeof(athlete));
       //Пишем по 1-й структуре 
       //(можно было бы вобще и все сразу забросить ну да ладно)
       f1.write((char *)&all[i], sizeof(athlete));
   }
   f2.close();
   f1.close();
   //imin и так == 0
   for (k = 0; k < count; k++)
   {
       if (all[k].age < all[imin].age) 
           imin = k;
   }
   //Зачем здесь было ставить imin - 1
   cout << "\tСамый юный участник:\r\n";
   cout << "Порядковый номер в реестре: "<< imin + 1 <<endl;//А вот тут imin + 1, т.к. нумерация с нуля!
   cout << "Имя: "      << all[imin].name    <<endl;
   cout << "Фамилия: "  << all[imin].f_name  <<endl;
   cout << "Возраст: "  << all[imin].age     <<endl;
   cout << "Результат: " << all[imin].time.imin <<endl;
   cout << "мин. " << all[imin].time.sec << " сек. "<<endl;;
 
   f.open("F2.bin", ios::out | ios::binary);
   f.write((char *)&all[imin], sizeof(athlete)); 
   f.close();
   
}
 
#endif
main.cpp
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
#include "CAthlete.h"
#include <conio.h> //getch
#include <ctype.h> //toupper
 
int main()
{
    CAthlete pAthl;
    char f1_name[20], f2_name[20];
    int count = 0;
    do
    {
        cout << "Введите имя файла F1: ";
        cin  >> f1_name;
        cout << "Введите имя файла F2 (бинарный): ";
        cin  >> f2_name;
        cout << "Введите количество спортсменов: ";
        cin  >> count;
        pAthl.SetCount(count);
        pAthl.process(f1_name,f2_name);
        cout<<"Нажмите клавишу Y для нового ввода\r\n";
    }
    while(toupper(getch()) == 'Y');
        
    return 0;
}
 
Текущее время: 18:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru