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

Оформить код через классы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Хранение в массиве данных разного типа http://www.cyberforum.ru/cpp-beginners/thread29946.html
Доброго времени суток. Возникла задача: Имеем массив byte buffer, а также переменные char ch1,ch2; int x1,x2,y1,y2; Нужно записать в ch1,x1,y1 в массив buffer и считать их из него в переменные ch2,x2,y2. С ch1 и ch2 то все просто, так как они занимают 1 байт, а вот как поступать с четырехбайтовыми x1,x2,y1,y2 ума не приложу. Готов рассмотреть разные варианты разные варианты, если такие есть
C++ Как правильно записать функцию? Подскажите, пожалста, можно ли так делать: #include <math.h> double F1(double x,double y) { double f1=y+1.32-sin(x); return f1; }т е определить так функцию в заголовочном файле function.h, а потом использовать ее уже в файле **.cpp (подставлять в нее какие-нибудь значения и др)?? http://www.cyberforum.ru/cpp-beginners/thread29941.html
Файлы&Структуры C++
Можно ли создать структуру таким образом, что бы она записывалась в файл, а потом выводилась в виде таблицы, но что бы в таблице отображалось не все данные структуры,а только например Ф.И.О. и отображалось в виде кнопок и при выборе структуры (курсором или мишкой) откривалась более детальная информация о структуре?
C++ Задача на одномерный массив)
В одномерном масиве, состоящем из n вещественных элементов, вычислить: 1) номер минимального по модулю элемента масива; 2) сумму модулей элементов масива, рассположеных после первого отрицательного элемента;
C++ Задача на квадратную матрицу http://www.cyberforum.ru/cpp-beginners/thread29901.html
Дана целочисленная квадратная матрица. Определить: 1) Сумму элементов в тех столбцах, которые не содержат отрицательных элементов; 2) Минимум среди сумм модулей элементов диагоналей, паралельных побочной диагонале матрици)
C++ С указателями. Поменять местами строку матрицы, содержащую минимальные элементы и строку матрицы содержащей последний чётный элемент Нужен полный текст программы, заранее благодарен подробнее

Показать сообщение отдельно
RazorQ
 Аватар для RazorQ
576 / 343 / 9
Регистрация: 06.02.2009
Сообщений: 1,386
14.04.2009, 09:07     Оформить код через классы
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
#include <iostream.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
 
class mon{
  char type[20];
  int opt, rozn;
  char comm[40];
  void WriteFile()
{
        FILE *fi,*fo;
         clrscr();
         if ((fi=fopen("D:\\file.txt", "r"))==0){
          cout << "Error open input file!!!" ;
          return;}
         if ((fo=fopen("D:\\out.dat","w+b"))==0){
          cout << "Error open output file!!!";
          return;}
         const int dl=80;
         char s[dl];
        mon a;
        while(fgets(s,dl,fi)){
        strncpy(a.type,s,19);
        a.type[19]='\0';
        a.opt=atoi(&s[20]);
        a.rozn=atoi(&s[25]);
        strncpy(a.comm,&s[30],39);
        a.comm[39]='\0';
        fwrite(&a,sizeof(mon),1,fo);
        kol++;
        };
        fclose(fi);
        fclose(fo);
 
        return;
}
 
void out()
{
        FILE *fo;
        clrscr();
        if ((fo=fopen("D:\\out.dat","rb"))==0){
          cout << "Error open output file!!!";
          return ;}
        int i;
        cout<<"Input number of Zapisi ";
        cin >>i;
        if (i>kol) {
          cout << "Zapisi net!!!";
          return;}
        mon a;
        fseek(fo,sizeof(mon)*(i-1),SEEK_SET);
        fread(&a,sizeof(mon),1,fo);
        cout << "Tip: " << a.type << " opt.: " << a.opt << " rozn: " << a.rozn << endl;
        fclose(fo);
}
 
void ClearFile()
{
        FILE *fo;
        clrscr();
        if ((fo=fopen("D:\\out.dat","rt"))==0){
        cout << "Error open output file!!!"<<endl;
          return ;}
        fclose(fo);
}
 
void Opt()
{
  mon a;
  FILE *fo;
  if ((fo=fopen("D:\\out.dat","r"))==0){
        cout << "Error open output file!!!";
        return;}
  fseek(fo,0,SEEK_SET);
 
  cout << "Vvedite optovuy cenu: " << endl;
  cin >> p;
  while ((res=fread(&a,sizeof(mon),1,fo))==1)
    {
    if (a.opt==p)
    {
      cout<<a.type<<" "<<a.opt<<" "<<a.rozn<<" "<<a.comm<<" "<<endl;
    }
   }
  if (kol==k) cout << "Zapoolnite file!!!";
  fclose(fo);
   return;
}
void Rozn()
{
  mon a;
  FILE *fo;
  if ((fo=fopen("D:\\out.dat","r"))==0){
        cout << "Error open output file!!!";
        return;}
  fseek(fo,0,SEEK_SET);
  cout << "Vvedite roznichnuy cenu: " << endl;
  cin >> v;
   while ((res=fread(&a,sizeof(mon),1,fo))==1)
   {
    if (a.rozn==v)
    {
      cout<<a.type<<" "<<a.opt<<" "<<a.rozn<<" "<<a.comm<<" "<<endl;
    }
   }
  if (kol==k) cout << "Zapoolnite file!!!";
  fclose(fo);
   return;
}
void Search()
{
 char menu_2;
 do
 {
   cout <<endl<< "1 Optovaya" << endl << "2 Roznica" << endl << "3 Vozvrat v gl. menu"<< endl;
   menu_2=getch();
   switch(menu_2)
   {
         case '1':
           Opt();
           break;
         case '2':
           Rozn();
           break;
          };
   if (menu_2=='3') break;
 }
 while(1);
clrscr();
}
};
int kol=0;
int p=0;
int v=0;
int k=0;
int i=0;
int res,res1;
 
void main()
{
 char menu;
 mon a;
 clrscr();
 do
 {
   cout <<endl<< "1 Zapis' v file" << endl <<"2 Vivod na ekran" << endl << "3 Ochistka file" << endl << "4 Search..."<< endl << "5 Vichod" << endl;
   menu=getch();
   switch(menu)
   {
         case '1':
           a.WriteFile();
           break;
         case '2':
           a.out();
           break;
         case '3':
           a.ClearFile();
           break;
         case '4':
           a.Search();
           break;
                 };
   if (menu=='5') break;
 }
 while(1);
}
Добавлено через 4 минуты 23 секунды
Код не правильный щас переделаю

Добавлено через 6 минут 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
#include <iostream.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
 
 int kol=0;
int p=0;
int v=0;
int k=0;
int i=0;
int res,res1;
class mon{
  char type[20];
  int opt, rozn;
  char comm[40];
  void WriteFile()
{
        FILE *fi,*fo;
         clrscr();
         if ((fi=fopen("D:\\file.txt", "r"))==0){
          cout << "Error open input file!!!" ;
          return;}
         if ((fo=fopen("D:\\out.dat","w+b"))==0){
          cout << "Error open output file!!!";
          return;}
         const int dl=80;
         char s[dl];
        while(fgets(s,dl,fi)){
        strncpy(type,s,19);
        type[19]='\0';
        opt=atoi(&s[20]);
        rozn=atoi(&s[25]);
        strncpy(comm,&s[30],39);
        comm[39]='\0';
        fwrite(&a,sizeof(mon),1,fo);
        kol++;
        };
        fclose(fi);
        fclose(fo);
 
        return;
}
 
void out()
{
        FILE *fo;
        clrscr();
        if ((fo=fopen("D:\\out.dat","rb"))==0){
          cout << "Error open output file!!!";
          return ;}
        int i;
        cout<<"Input number of Zapisi ";
        cin >>i;
        if (i>kol) {
          cout << "Zapisi net!!!";
          return;}
        fseek(fo,sizeof(mon)*(i-1),SEEK_SET);
        fread(&a,sizeof(mon),1,fo);
        cout << "Tip: " << a.type << " opt.: " << a.opt << " rozn: " << a.rozn << endl;
        fclose(fo);
}
 
void ClearFile()
{
        FILE *fo;
        clrscr();
        if ((fo=fopen("D:\\out.dat","rt"))==0){
        cout << "Error open output file!!!"<<endl;
          return ;}
        fclose(fo);
}
 
void Opt()
{
  FILE *fo;
  if ((fo=fopen("D:\\out.dat","r"))==0){
        cout << "Error open output file!!!";
        return;}
  fseek(fo,0,SEEK_SET);
 
  cout << "Vvedite optovuy cenu: " << endl;
  cin >> p;
  while ((res=fread(&a,sizeof(mon),1,fo))==1)
    {
    if (opt==p)
    {
      cout<<type<<" "<<opt<<" "<<rozn<<" "<<comm<<" "<<endl;
    }
   }
  if (kol==k) cout << "Zapoolnite file!!!";
  fclose(fo);
   return;
}
void Rozn()
{
  FILE *fo;
  if ((fo=fopen("D:\\out.dat","r"))==0){
        cout << "Error open output file!!!";
        return;}
  fseek(fo,0,SEEK_SET);
  cout << "Vvedite roznichnuy cenu: " << endl;
  cin >> v;
   while ((res=fread(&a,sizeof(mon),1,fo))==1)
   {
    if (rozn==v)
    {
      cout<<type<<" "<<opt<<" "<<rozn<<" "<<comm<<" "<<endl;
    }
   }
  if (kol==k) cout << "Zapoolnite file!!!";
  fclose(fo);
   return;
}
void Search()
{
 char menu_2;
 do
 {
   cout <<endl<< "1 Optovaya" << endl << "2 Roznica" << endl << "3 Vozvrat v gl. menu"<< endl;
   menu_2=getch();
   switch(menu_2)
   {
         case '1':
           Opt();
           break;
         case '2':
           Rozn();
           break;
          };
   if (menu_2=='3') break;
 }
 while(1);
clrscr();
}
};
 
void main()
{
 char menu;
 mon a;
 clrscr();
 do
 {
   cout <<endl<< "1 Zapis' v file" << endl <<"2 Vivod na ekran" << endl << "3 Ochistka file" << endl << "4 Search..."<< endl << "5 Vichod" << endl;
   menu=getch();
   switch(menu)
   {
         case '1':
           a.WriteFile();
           break;
         case '2':
           a.out();
           break;
         case '3':
           a.ClearFile();
           break;
         case '4':
           a.Search();
           break;
                 };
   if (menu=='5') break;
 }
 while(1);
}
 
Текущее время: 14:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru