
| Если это ваш первый визит, рекомендуем почитать справку по форуму. Для размещения своих сообщений необходимо зарегистрироваться. Для просмотра сообщений выберите раздел. |
![]() |
||
Помогите с задачко по C++
|
||
| Философия, технологии, алгоритмы! |
![]() |
|
|
Опции темы |
|
|
#1 |
|
Форумец
Сообщений: 13
Регистрация: 19.12.2007
|
Помогите с задачко по C++
стационар.
В стационарном отделении 60 мест по 4 койки в отдельной палате.Написать программу ,которая бы выдавала номер свободного места, чтобы госпитализировать пациента, или номер палаты , где располагался пациент. Помогите пожалуйста - не знаю что делать |
|
|
|
|
#2 |
|
Mоdеrаtоr
Сообщений: 1,617
Регистрация: 09.10.2007
Возраст: 32
|
Вообщем, используй классы. Свойствами массива объектов palat[14] класса Palats будет массив булевых значений bool Koiki[3] и имя пациента string Nane[3] и string SoName[3]. Если заполнять с нуля, то как раз по четыре. Койки инициализируешь конструктором как true - свободные. В функции main спрашиваешь, что вы хотите - вывести номер свободных коек, заполнить ещё одну или найти пациента. Если заполнить, то выводишь в текстовый файл номер занятой теперь койки, а в другой - имя и фамилию больного. Если найти свободную - читаешь файл, койки с номерами из файла инициализируешь как false, а затем выводишь номера true-коек. А если найти пациента, то ищешь с помощью цикла во втором файле имя/фамилию, одновременно увеличивая на 1 счётчик (нап. s++; )
Допустим, имя в списке 4-е. Тогда ищешь в первом файле 4-й номер и выводишь его! |
|
|
|
|
#3 |
|
Форумец
Сообщений: 210
Регистрация: 24.04.2007
|
2 2R1Zt: мож я глупый но как можно подобрать конкретное решение(я о задаче) из безчисленно количества вариантов входных данных?
Условие нужно ставить более конкретней: что должно быть на входе, а что на выходе, какие исходные данные. Или хотябы опиши как заполнены места в палатах хаотично или упорядочено. 2 DeniSS1: в С++ при инициализации массива указывается его длинна и она на 1 больше чем индекс последнего элемента массива
|
|
|
|
|
#4 |
|
Форумец
Сообщений: 2,417
Регистрация: 05.10.2005
Возраст: 46
|
Amur, ды какая разниуа как они заполнены. Пихаешь пациента в первую по порядку свободную койку и все. По-моему, все предельно просто.
Писать программу не буду. Или автор сам ее напишет и ему это будет полезно, или ему это действительно нах не надо, тогда зчем ее писать? |
|
|
|
|
#5 |
|
Я псих...
Сообщений: 6,342
Регистрация: 25.10.2004
Возраст: 38
|
Два массива:
один двухмерный: 4 на 60 второй: динамический двумерный массив m (в зависимости от данных пациента) на n В первом массиве - койки свободные - значение 0, занятые - 1 во втором массиве - m-1 колонок - данные о пациенте: ФИО, Возраст, дата поступления больного.. не знаю что туда ещё вписать можно, в последней - номер комнаты и номер койки через запятую. Второй вариант: можно сделать второй массив просто динамическим массивом из записей. Структура записи будет тогда такая: ФИО, Возраст, дата поступления, ещё чего-нибудь, номер комнаты, номер койки.... Либо номер комнаты и номер койки объеденить через запятую или точку с запятой или слеш в одном поле.... |
|
|
|
|
#9 | ||
|
Я псих...
Сообщений: 6,342
Регистрация: 25.10.2004
Возраст: 38
|
Цитата:
Могу помочь только с Цитата:
|
||
|
|
|
|
#11 | |
|
IGBT
Сообщений: 534
Регистрация: 09.10.2005
|
во написал тебе код на самом лучшем языке программирования на свете. Компилировать Fasm`ом
Цитата:
Мда Сори забыл тебе ведь по С++ надо. Щас подправим код почуть. Блин какой-то С++ этот сложный я в нем фиг что могу понять. |
|
|
|
|
|
#13 |
|
IGBT
Сообщений: 534
Регистрация: 09.10.2005
|
Ну вот почитал msdn насчет inline ассемблера, подправил код. Гнилая винда не захотела перывания обрабатывать пришлось printf использовать.
#include <stdio.h> class UberClass { private: int palata,mesto; public: UberClass(); int GetMesto(); int GetPalata(); }; UberClass::UberClass() { unsigned char Palati[59]={ 1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, 1,0,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1}; int a=0;; int b=0; __asm { lea ebx,Palati xor al,al mov ecx,60 mov edi,ebx repne scasb mov eax,edi sub eax,ebx lea ebx,a mov [ebx],eax shr eax,2 inc eax lea ebx,b mov [ebx],eax;palata } palata=b; mesto=a; } int UberClass::GetMesto() { return mesto; } int UberClass::GetPalata() { return palata; } int main() { UberClass c=UberClass(); printf("Mesto %d , Palata %d",c.GetMesto(),c.GetPalata()); while(1) {}; return 0; } |
|
|
|
|
#14 | ||
|
IGBT
Сообщений: 534
Регистрация: 09.10.2005
|
И это кстати не стеб, а работающая программа.
Я вот только сомневаюсь возможно я использовал не самый оптимизированный вариант. Может поиск Цитата:
Цитата:
|
||
|
|
|
|
#19 |
|
IGBT
Сообщений: 534
Регистрация: 09.10.2005
|
Ну ты... нехороший человек. Сразу сказать не мог? Написал на С++ я класс и наваял. Я изначально на С писал.
#include <stdio.h> unsigned char Palati[60]={ 1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, 1,0,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1}; int palata=0; int mesto=0; int main() { __asm { xor al,al mov ecx,60 mov edi,offset Palati repne scasb mov eax,edi sub eax,offset Palati mov mesto,eax shr eax,2 inc eax mov palata,eax;palata } printf("Mesto %d , Palata %d",mesto,palata); while (1) {}; return 0; } |
|
|