![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| label |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 2.5.2005 Репутация: нет Всего: нет |
Помогите как перевезти из консольной программы в нормальную для Builder'а ....или как убрать классы!!
#include <stdlib.h> #include <stdio.h> #include <alloc.h> #include <conio.h> class table { char *S1[16], *S2[16], *S[16], **C; public: int IN(int, int); // принадлежать b=(a IN S) int FIND(int); // найти n: a IN S[n] void OR(void); // объединить S=(S1 U S2) void CONCAT(void); // сцепить void SUB(void); // вычесть S=(S1 \ S2) void AND(void); // пересечь S=(S1 П S2) void Init(int); // заполнить S1, S2 void Print(int); // просмотр множества void Clear(int); // очистка множеств void Pr(char**); int IN_S(int); } T; int table::IN(int a, int n) { int i, j, f=0; C=(n==1)? S1: (n==2)? S2: S; for (j=0; j<16; j++) for (i=0; i<8; i++) { if (C[j][i]==100) break; if (C[j][i]==a) { f=1; break; } } return (f); // f=0 - элемент а не принадлежит множеству, f=1 - принадлежит } int table::FIND(int a) { int i, j, n=0; if (T.IN(a, 3) && !T.IN(a, 1) && !T.IN(a, 2)) n=3; if (T.IN(a, 1) && !T.IN(a, 3) && !T.IN(a, 2)) n=1; if (T.IN(a, 2) && !T.IN(a, 3) && !T.IN(a, 1)) n=2; if ((T.IN(a, 3) && T.IN(a, 1)) || (T.IN(a, 3) && T.IN(a, 2)) || (T.IN(a, 1) && T.IN(a, 2))) n=4; return (n); /* n=0 - элемент a не принадлежит ни одному множеству n=3 - элемент a принадлежит множеству S n=1 - элемент a принадлежит множеству S1 n=2 - элемент a принадлежит множеству S2 n=4 - элемент a принадлежит более, чем одному множеству */ } void table::OR(void) { int i, j, k, f; for (i=0; i<16; i++) for (j=0; j<8; j++) S[i][j]=S1[i][j]; for (i=0; i<16; i++) for (j=0; j<8; j++) { for (f=k=0; k<8; k++) f=(S2[i][j]==S[i][k])? 1: f; k=0; while (S[i][k]!=100) k++; if (!f) S[i][k]=S2[i][j]; } } void table::CONCAT(void) { int i, j, k; for (i=0; i<16; i++) for (j=0; j<8; j++) S[i][j]=S1[i][j]; for (i=0; i<16; i++) for (j=0; j<8; j++) { k=0; while (S[i][k]!=100) k++; S[i][k]=S2[i][j]; } } void table::SUB(void) { int s, i, j, k, f; for (i=0; i<16; i++) for (s=j=0; j<8; j++) { for (f=k=0; k<8; k++) f=(S1[i][j]==S2[i][k])? 1: f; if (!f) S[i][s++]=S1[i][j]; } } void table::AND(void) { int s, i, j, k, f; for (i=0; i<16; i++) for (s=j=0; j<8; j++) { for (f=k=0; k<8; k++) f=(S1[i][j]==S2[i][k])? 1: f; if (f) S[i][s++]=S1[i][j]; } } void table::Init(int N) { int i, j, n; T.Clear(1); for (i=0; i<N; i++) { do n=random(100); while (T.IN(n, 1)); for (j=0; j<8 && (S1[n%16][j]!=100); j++); S1[n%16][j]=n; do n=random(100); while (T.IN(n, 2)); for (j=0; j<8 && (S2[n%16][j]!=100); j++); S2[n%16][j]=n; } } void table::Print(int n) { int i, j; char **X; clrscr(); switch(n) { case 0: { cputs(" Множество S"); X=S; Pr(X); } break; case 1: { cputs(" Множество S1"); X=S1; Pr(X); } break; case 2: { cputs(" Множество S2"); X=S2; Pr(X); } } getch(); } void table: { int i, j; window(15,7,64,17); for (i=0; i<16; i++) { cprintf("%2d", i); textcolor(CYAN); cprintf("¦"); textcolor(WHITE); } cprintf("\n\r"); for (i=0; i<16; i++) { textcolor(CYAN); cprintf("--+"); textcolor(WHITE); } for (i=0; i<8; i++) { cprintf("\n\r"); for (j=0; j<16; j++) { if(X[j][i]==100) cprintf(" "); else cprintf("%2d", X[j][i]); textcolor(CYAN); cprintf("¦"); textcolor(WHITE); } } window(1,1,80,25); } void table::Clear(int n) { int i, j; puts("\a"); for (j=0; j<16; j++) { if (n) { S1[j]=(char*)calloc(8, sizeof(char)); S2[j]=(char*)calloc(8, sizeof(char)); } S[j]=(char*)calloc(8, sizeof(char)); for (i=0; i<8; i++) S[j][i]=(n)? S1[j][i]=S2[j][i]=100: 100; } } void main(void) { int i, j, k, k1, n; T.Clear(1); randomize(); _setcursortype(_NOCURSOR); do { clrscr(); textcolor(WHITE); window(20,7,59,17); cputs("\n\n1. Заполнение ХЕШ-таблиц S1 и S2\n\r"); cputs("2. Просмотр ХЕШ-таблицы S1\n\r"); cputs("3. Просмотр ХЕШ-таблицы S2\n\r"); cputs("4. Просмотр ХЕШ-таблицы S\n\r"); cputs("5. ОПЕРАЦИИ...\n\r"); cputs("0. Выход из программы\n\r"); window(1,1,80,25); k=getch(); switch(k) { case '1': T.Init(20); break; case '2': T.Print(1); break; case '3': T.Print(2); break; case '4': T.Print(0); break; case '5': { clrscr(); window(20,7,59,17); cputs(" ОПЕРАЦИИ\n\n\r"); cputs(" 1. Принадлежать\n\r"); cputs(" 2. Найти\n\r"); cputs(" 3. Объединить\n\r"); cputs(" 4. Сцепить\n\r"); cputs(" 5. Вычесть\n\r"); cputs(" 6. Пересечь\n\n\r"); k1=getch(); window(1,1,80,25); _setcursortype(_NORMALCURSOR); switch(k1) { case '1': { clrscr(); cprintf("Введите целое число от 0 до 99: "); scanf("%d", &n); i=T.IN(n, 3); cprintf("\n\rЭлемент < %d > ", n); if (i) cprintf("принадлежит множеству S"); else cprintf("не принадлежит множеству S"); getch(); } break; case '2': { clrscr(); cprintf("Введите целое число от 0 до 99: "); scanf("%d", &n); i=T.FIND(n); cprintf("\n\rЭлемент < %d > ", n); switch(i) { case 0: cprintf("не принадлежит ни одному множеству", n); break; case 1: cprintf("принадлежит множеству S1", n); break; case 2: cprintf("принадлежит множеству S2", n); break; case 3: cprintf("принадлежит множеству S", n); break; case 4: cprintf("принадлежит более, чем одному множеству", n); } getch(); } break; case '3': { T.Clear(0); T.OR(); } break; case '4': { T.Clear(0); T.CONCAT(); } break; case '5': { T.Clear(0); T.SUB(); } break; case '6': { T.Clear(0); T.AND(); } break; } _setcursortype(_NOCURSOR); } } } while(k!='0'); textcolor(LIGHTGRAY); clrscr(); } |
|||
|
||||
| NiJazz |
|
|||
![]() Jazz coder ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2286 Регистрация: 10.8.2003 Где: Москва Репутация: 1 Всего: 23 |
Ты бы хоть код красиво отредактировал.
|
|||
|
||||
| chipset |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 165 |
--------------------
|
||||
|
|||||
| chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 6 Всего: 44 |
как как ))) берешь и переписываешь на билдер
|
|||
|
||||
| pablo |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 320 Регистрация: 12.2.2005 Где: Вильнюс, Литва Репутация: 4 Всего: 6 |
В такой каше, чёрт ногу сломит.
-------------------- Первый блин всегда похож на сферу, иногда бывает и куб. |
|||
|
||||
| Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 10 Всего: 93 |
Особенно вот это прикольно:
А вообще оно должно и в билдере компилиться, он же умеет консольные создавать. Жмём File -> New -> Other... там находим Console Wizard и радуемся жизни -------------------- Да. Именно так. |
|||
|
||||
| Yanis |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 1 Всего: 111 |
Ужас. Не люблю когда код не отформатирован. Вот вариант который компилируется в билдере
Я не силён в CPP, но может кто-нибудь обяснит почему после циклов стоят ";" Зачем? Или Это ошибка автора? |
||||
|
|||||
| Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 10 Всего: 93 |
Ашибка адназначна -------------------- Да. Именно так. |
|||
|
||||
| Fixin |
|
|||
![]() Ёжик ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1357 Регистрация: 6.1.2004 Репутация: 2 Всего: 18 |
А может поиск совершается?
|
|||
|
||||
| Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 10 Всего: 93 |
Виноват... вспылил, был не прав Там действительно поиск. Похоже, что это идёт заполнение случайными неповторяющимися числами. ЗЫ: А потом поглядев на такой исходник некоторые начинают вопить, что С++ неудобочитаемый язык -------------------- Да. Именно так. |
|||
|
||||
| Fixin |
|
|||
![]() Ёжик ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1357 Регистрация: 6.1.2004 Репутация: 2 Всего: 18 |
|
|||
|
||||
| DENNN |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
Честно говоря, этот код читается легко. А вот было бы что позапутанее..... |
|||
|
||||
| gepard |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2477 Регистрация: 29.2.2004 Репутация: 2 Всего: 40 |
NiJazz
Я в последнее время вообще сразу же пропускаю такие посты. Невозможно читать, когда текст не отредактирован. -------------------- Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным! © Я, Берсерк, что значит - Неистовый. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |