Odstranění osoby z výpisu – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Odstranění osoby z výpisu – C / C++ – Fórum – Programujte.comOdstranění osoby z výpisu – C / C++ – Fórum – Programujte.com

 

Kalypso
~ Anonymní uživatel
5 příspěvků
1. 12. 2012   #1
-
0
-

Potřebovala bych nutně poradit, sama jsem z toho už zoufalá. Jsem začátečnice v programování v céčku a mám problém s jednou částí domácího úkolu: ,,Napište tělo funkce ObstraneniPacienta, která bude mít na vstupu pacienta, kterého   smaže a nic nevrací."

 Od cvičícího jsme dostali základ programu do kterého jednotlivé části vepisujeme, vždycky když se pokusím o smazání vyhledaného pacienta, smaže se mi jiný pacient a nebo žádný. Snažím se na to přijít, ale vzhledem k tomu, že nám pořádně tuto část zatím nikdo nevysvětlil, jsem v tom ztracená. Chybí mi tam ještě části export a import dat ze souboru, ale tím se budu zabývat až po tom :D. Předem moc děkuju za vaší pomoc.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>

#define N 20

typedef struct{
       char jmeno[40];
       long int vek;
       long int cisloPojistovny;
       } Pacient;

Pacient PolePacient[N];
int i=0;
int z=0;

void PridaniNovehoPacienta()
{
	// Zde uvedte vasi cast programu

    printf("Zadejte jmeno pacienta:\n");
    scanf("%s", &PolePacient[i].jmeno);

    printf("Zadejte vek pacienta:\n");
    scanf("%li", &PolePacient[i].vek);

    printf("Zadejte cislo pojistovny pacienta:\n");
    scanf("%li", &PolePacient[i].cisloPojistovny);

    i++;
	// konec vasi casti programu
}


void SmazatPacientyZPameti()
{
     // Zde uvedte vasi cast programu
    do {
        i--;
    } while(i != 0);
    printf("Vsichni pacienti byli smazani!\n\n");
	// konec vasi casti programu

}

void ObstraneniPacienta(Pacient PacientInput)
{
     // Zde uvedte vasi cast programu

     // konec vasi casti programu
}

Pacient EditacePacienta(Pacient PacientInput)
{
     // Zde uvedte vasi cast programu
    {
     printf("\n");
     printf(" Jmeno pacienta: %s\n",PolePacient[z].jmeno);
     printf(" Zadejte nove jmeno pacienta: ");
     scanf("%s",&PolePacient[z].jmeno);

     printf("\n");
     printf(" Vek pacienta:%li\n",PolePacient[z].vek);
     printf(" Zadejte novy vek pacienta: ");
     scanf("%li",&PolePacient[z].vek);

     printf("\n");
     printf(" Cislo pojistovny: %li\n",PolePacient[z].cisloPojistovny);
     printf(" Zadejte nove cislo pojistovny: ");
     scanf("%li",&PolePacient[z].cisloPojistovny);

    }

	// konec vasi casti programu

}

void VypsaniPacientu()
{
     // Zde uvedte vasi cast programu
    int j;
    if (i > 0 ) {
        for(j = 0; j < i; j++) {
            printf("Pacient %s, jeho vek je %li a cislo pojistovny je %li\n", PolePacient[j].jmeno, PolePacient[j].vek, PolePacient[j].cisloPojistovny);
        }
    }
    else {
        printf("Nejsou zadani zadni pacienti");
    }

	// konec vasi casti programu
}

void HledaniPacientuPodleJmena()
{
     char h;
     Pacient PacientInput;
     // Zde uvedte vasi cast programu
    int y;
    char hjmeno[40];
    system("CLS");

    printf("Zadejte jmeno pacienta, ktereho hledate: \n");
    scanf("%s", &hjmeno);

    for(y = 0; y < i; y++) {
        if((strcmp(hjmeno, PolePacient[y].jmeno)) == 0) {
            PacientInput = PolePacient[y];
            printf("Pacient je v seznamu: \n");
            printf("Jmeno: %s vek: %li cislo pojistovny: %li \n", PacientInput.jmeno, PacientInput.vek, PacientInput.cisloPojistovny);
            z = y;
        }
    }
	// konec vasi casti programu

        printf(" T .. Editovat pacienta\n");
        printf(" G .. Smazat pacienta\n");
        printf(" B .. Navrat do hlavniho menu\n");

     do{

        h = getch();
        switch(h){

            case 't':
            case 'T':   EditacePacienta(PacientInput); break;

            case 'g':
            case 'G':   ObstraneniPacienta(PacientInput); break;

            case 'b':
            case 'B':         mainFunction();
            }
            system("PAUSE");

        } while(h != 'B' && h != 'b');



}

void HledaniPacientuPodlePojistovny()
{
     // Zde uvedte vasi cast programu
    char h;
    Pacient PacientInput;

    int x;
    char pojist;
    system("CLS");

    printf("Zadejte cislo pojistovny: \n");
    scanf("%li", &pojist);

    for(x = 0; x < N; x++) {
        if(pojist == PolePacient[x].cisloPojistovny) {
            PacientInput = PolePacient[x];
            printf("Pacient je v seznamu: \n");
            printf("Cislo pojistovny %li ma pacient %s \n", PacientInput.cisloPojistovny, PacientInput.jmeno);
        }
    }
	// konec vasi casti programu

}

void ExportDoSouboru()
{
     // Zde uvedte vasi cast programu

	// konec vasi casti programu
}

void ImportZeSouboru()
{
     // Zde uvedte vasi cast programu

	// konec vasi casti programu
}


mainFunction()
{
    char c;

    do{
        system("CLS");
        printf("\n");
        printf(" P .. Pridat noveho pacienta\n");
        printf(" V .. Vypsat vsechny pacienty\n");
        printf(" F .. Hledat pacienta podle jmena\n");
        printf(" C .. Hledat pacienty podle cisla pojistovny\n");
        printf(" S .. Smazat vsechny pacienty\n");
        printf(" -----------------------------\n");
        printf(" E .. Exportovat do souboru\n");
        printf(" I .. Importovat ze souboru\n");
        printf(" -----------------------------\n");
        printf(" K .. Konec\n\n");

        c = getch();

        switch(c){

            case 'p':
            case 'P':   PridaniNovehoPacienta(); break;

            case 'v':
            case 'V':   VypsaniPacientu(); break;

            case 'c':
            case 'C':   HledaniPacientuPodlePojistovny(); break;

            case 'f':
            case 'F':   HledaniPacientuPodleJmena(); break;

            case 's':
            case 'S':   SmazatPacientyZPameti(); break;

            case 'e':
            case 'E':   ExportDoSouboru(); break;

            case 'i':
            case 'I':   ImportZeSouboru(); break;
        }

		system("PAUSE");

    }while(c != 'K' && c != 'k');
}

int main()
{
          mainFunction();
          return 0;
}
Nahlásit jako SPAM
IP: 90.178.121.–
cibule0
Návštěvník
1. 12. 2012   #2
-
0
-

#1 Kalypso
Vzhledem ze pracujes se statickym polem pacientu tak ho smazes tak, ze si najdes toho pacienta ktereho chces vymazat, toho ktereho si nasla vymenis s poslednim a snizis index

Nahlásit jako SPAM
IP: 85.70.207.–
Kalypso
~ Anonymní uživatel
5 příspěvků
1. 12. 2012   #3
-
0
-

#2 cibule
Aha, to mě vůbec nenapadlo. Tak proto mi šlo smazat pouze posledního. Ještě abych to dobře napsala :D

Nahlásit jako SPAM
IP: 90.178.121.–
Kalypso
~ Anonymní uživatel
5 příspěvků
1. 12. 2012   #4
-
0
-

Tak jsem asi uplně blbá, prostě nevim jak to udělat.

Nahlásit jako SPAM
IP: 90.178.121.–
Kalypso
~ Anonymní uživatel
5 příspěvků
1. 12. 2012   #5
-
0
-

#2 cibule
Já jsem se snažila to nějak udělat, ale pořád mi to nepřepisuje. Asi jsme to ještě neměli a nebo programování nebudeme moje silná stránka. Prostě jsem v tom zamotaná a ztracená.

Nahlásit jako SPAM
IP: 90.178.121.–
ingiraxo+15
Grafoman
1. 12. 2012   #6
-
0
-

zjistíš si index pocitenta, kterýho chceš odstranit (třeba 5) a pocientů je celkem 10 (indexy 0-9)

takže na index 5 přiřadíš pacienta s indexem 9 (poslední) a velikost pole snížíš o 1

budeš si muset ještě uchovávat aktuální počet pacientů, protože N ja maximální počet

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
cibule0
Návštěvník
1. 12. 2012   #7
-
0
-

#5 Kalypso

void ObstraneniPacienta(Pacient PacientInput)
{
     HledaniPacientuPodleJmena();
	
strcpy(PolePacient[z].jmeno,PolePacient[i].jmeno);
PolePacient[z].vek = PolePacient[i].vek;
PolePacient[z].cisloPojistovny = PolePacient[i].cisloPojistovny;

i--;
}

Melo by to byt ono pokud jsem spravne pochopil tvuj kod :-)

ten parametr te funkce je asi zbytecny

Nahlásit jako SPAM
IP: 193.86.244.–
Kalypso
~ Anonymní uživatel
5 příspěvků
1. 12. 2012   #8
-
0
-

#7 cibule
Děkuju moc, ani nevíte jak jste mi pomohli. Já už jsem z toho byla docela zoufalá.

Nahlásit jako SPAM
IP: 90.178.121.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 102 hostů

Podobná vlákna

Zjištění práce u 3. osoby — založil Aneta Albrechtová

Urážka úřední osoby — založil remmidemmi

PHP Chat pro dvě osoby — založil ten jiný

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý