// ConsoleApplication2.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include
#include
#include
using namespace std;
int const max_gab = 3;
int const max_w = 20;
int const MAX_P = 40;
int const suma_max = 20;
struct Pacjent
{
int l_bad;
int indeks;
};
int Metoda_K1(Pacjent PAC[], int liczba_pacjentow)
{
int suma1 = 0;
int suma2 = 0;
int suma3 = 0;
int i = 0;
for (i = 0; i < liczba_pacjentow - 1;)
{
if (suma1 + PAC[i].l_bad <= suma_max)
{
cout << setw(18) << "Pacjent nr" << setw(2) << PAC[i].indeks;
suma1 += PAC[i].l_bad;
i++;
}
else
{
cout << setw(20) << " ";
}
if (suma2 + PAC[i + 1].l_bad <= suma_max)
{
cout << setw(18) << "Pacjent nr" << setw(2) << PAC[i].indeks;
suma2 += PAC[i + 1].l_bad;
i++;
}
else
{
cout << setw(20) << " ";
}
if (suma3 + PAC[i + 2].l_bad <= suma_max)
{
cout << setw(18) << "Pacjent nr" << setw(2) << PAC[i].indeks;
suma3 += PAC[i + 2].l_bad;
i++;
}
else
{
break;
}
cout << endl;
}
// wypisanie pacjentow ktorych nie mozna przypisac
if (i < liczba_pacjentow)
cout << endl << "Pacjenci ktorych nie udalo sie przydzielic do zadnego z gabinetow: " << endl;
for (; i < liczba_pacjentow; i++)
{
cout << setw(17) << "Pacjent nr" << setw(3) << PAC[i].indeks << endl;
}
return 0;
}
int Metoda_K2(Pacjent PAC[], int TAB_2[][3], int liczba_pacjentow)
{
int indeks = 0; // zlicza iloscwpisanych juz pacjentow
int suma = 0; // zlicza aktualna sume badan wykonywanych w gabinecie
int j = 0;
for (int i = 0; suma + PAC[indeks].l_bad <= suma_max && indeks < liczba_pacjentow ; i++)
{
TAB_2[i][j] = PAC[indeks].indeks;
indeks++;
suma += PAC[indeks].l_bad;
}
suma = 0;
j++;
for (int i = 0; suma + PAC[indeks].l_bad <= suma_max && indeks < liczba_pacjentow; i++)
{
TAB_2[i][j] = PAC[indeks].indeks;
indeks++;
suma += PAC[indeks].l_bad;
}
suma = 0;
j++;
for (int i = 0; suma + PAC[indeks].l_bad <= suma_max && indeks < liczba_pacjentow; i++)
{
TAB_2[i][j] = PAC[indeks].indeks;
indeks++;
suma += PAC[indeks].l_bad;
}
//wypisanie harmonogramu
for (int i = 0; i < 20; i++)
{
for (int j = 0; j < 3; j++)
{
if (TAB_2[i][j] != 0)
cout << setw(17) << "Pacjent nr" << setw(3) << TAB_2[i][j];
}
cout << endl;
}
//wypisanie odrzuconycj pacjentow
if (indeks < liczba_pacjentow)
{
cout << endl << "Pacjenci ktorych nie udalo sie przypisac do zadnego gabinetu: " << endl;
for (int i = indeks; i < liczba_pacjentow; i++)
{
cout << setw(18) << "Pacjent nr" << setw(3) << PAC[i].indeks;
}
}
return 0;
}
int WprowPacjentow(Pacjent PAC[], int liczba_pacjentow)
{
cout << endl << "Podaj liczbe badan dla kazdego pacjenta (od 1 do 5)." << endl;
for (int i = 0; i< liczba_pacjentow; i++)
{
cout << "Pacjent nr " << i + 1 << " :";
cin >> PAC[i].l_bad;
if (PAC[i].l_bad < 1 || PAC[i].l_bad > 5)
{
cout << "Niepoprawne dane. Wprowadz poprawne dane. " << endl;
i--;
}
PAC[i].indeks = i + 1;
}
return 0;
}
void WyborMetody()
{
cout << "\nWybierz w jaki sposob chcesz przydzielic pacjentow: " << endl;
cout << "1. Przydzielaj pacjentow wedlug kolejnosci ich rejestracji tak, aby pacjent";
cout << "\nzarejestrowany pozniej nigdy nie wchodzil do gobinetu przed pacjentem";
cout << "\nzarejestrowanym wczesniej." << endl << endl;
cout << "2. Przydzielaj pacjentow niezaleznie od kolejnosci rejestracji probujac";
cout << "\nwykorzystac jak najmniejmniej gabinetow (dodawaj pacjentow do kolejnego";
cout << "\ngabinetu dopiero po zapelnieniu wszystkich terminow w gabinecie, ktrego ";
cout << "\ndzialanie wlasnie planujesz)." << endl;
}
void PiszNaglowek1()
{
cout << "Harmonogram przyjec w poszczegolnych gabinetach wedlug kryterium 1:" << endl;
cout << setw(20) << " Gabinet nr 1" << setw(20) << "Gabinet nr 2" << setw(20) << "Gabinet nr 3" << endl << endl;
}
void PiszNaglowek2()
{
cout << "Harmonogram przyjec w poszczegolnych gabinetach wedlug kryterium 2:" << endl;
cout << setw(20) << " Gabinet nr 1:" << setw(20) << "Gabinet nr 2:" << setw(20) << "Gabinet nr 3:" << endl << endl;
}
int main() {
int liczba_pacjentow;
char wybor;
Pacjent PAC[MAX_P];
int TAB_2[max_w][max_gab];
//zerowanie tablicyy do metody 2
for (int i = 0; i < max_w; i++)
{
for (int j = 0; j < max_gab; j++)
{
TAB_2[i][j] = 0;
}
}
cout << "Podaj liczbe pacjentow (maxymalnie 40): " << endl;
cin >> liczba_pacjentow;
while (liczba_pacjentow > 40 || liczba_pacjentow < 1)
{
cout << "Niepoprawne dane. Mozesz wprowadzic od 1 do 40 pacjentow. Podaj poprawne dane." << endl;
cin >> liczba_pacjentow;
}
WprowPacjentow(PAC, liczba_pacjentow);
WyborMetody();
cin >> wybor;
cout << endl;
switch (wybor)
{
case '1':PiszNaglowek1();
Metoda_K1(PAC, liczba_pacjentow);
break;
case '2':PiszNaglowek2();
Metoda_K2(PAC, TAB_2, liczba_pacjentow);
break;
}
cout << endl << endl;
system("PAUSE");
}
Wyszukiwarka
Podobne podstrony:
4 Elementy węzła drogowego i zasady ich projektowania Kopia
Kopia E1C1S1 proj1 Projekt lpc
5 OBCIĄŻENIA NAWIERZCHNI PRZEZ RUCH DROGOWY I OKREŚLANIE RUCHU OBLICZENIOWEGO DO PROJEKTOWANIA NAWI
Mathcad SŁUP PROJEKT swieta kopia
Kopia 8 Projekt okrętu podwodnego
3 WYMAGANIA OGÓLNE PROJEKTOWANIA SKRZYŻOWAŃ Kopia
projekt2 skrypt Kopia
Projekt pracy aparat ortodontyczny ruchomy
więcej podobnych podstron