Stránka: 1 z 1
| [ Príspevkov: 7 ] | |
Autor | Správa |
---|
Registrovaný: 09.05.07 Prihlásený: 23.03.09 Príspevky: 12 Témy: 3 | 3 |
ahoy
Vedel by prosim vas niekto zmenit tento program, aby na reprezentáciu zoznamu zákazníkov bolo použite DYNAMICKE pole smerníkov ???
#include <stdlib.h> #include <stdio.h> #include <string.h>
typedef struct Zakaznik{ char *Meno; char *Priezvisko; char *ID; char *Adresa; char *Rok; char *Tel; char *Tovar; int Cena; }ZAKAZNIK; #define MAX_POLOZIEK 500 #define STRUCT_SIZE sizeof(ZAKAZNIK)
ZAKAZNIK **Polozka; int Pocet=0;
void UvolniPamat(void) { int i;
for(i=0;i<Pocet;i++){ free(Polozka[i]->Meno); free(Polozka[i]->Priezvisko); free(Polozka[i]->Adresa); free(Polozka[i]->ID); free(Polozka[i]->Tel); free(Polozka[i]->Rok); free(Polozka[i]->Tovar); free(Polozka[i]); } free(Polozka); Pocet = 0; }
int Menu() { char akcia;
printf("\n\nZADANIE Z PROGRAMOVANIA\n\n"); printf(" 1. Pridaj zakaznika\n 2. Odober zakaznika\n 3. Usporiadaj podla ceny\n"); printf(" 4. Usporiadaj podla priezviska\n 5. Vypis zoznamu\n 6. Uloz do suboru\n"); printf(" 7. Nacitaj zo suboru\n 8. Ukonci program\n"); printf("\nZadaj cislo pozadovanej akcie: "); do{ akcia = getchar(); }while(akcia > '8' || akcia < '1'); return (akcia); }
char flushkbd(void) { char key; do{}while((key = getchar()) == '\n'); return key; }
char *fgetstr(FILE *fp) { char pom[1000], ch, *ret; int i=0; do{ ch = fgetc(fp); pom[i] = ch; i++; }while(ch != '\n'); pom[i-1] = '\0'; ret = (char *)malloc(strlen(pom)+1); strcpy(ret, pom); return ret; }
char *ReadStr() { char pom[1000]="", ch, *ret; int index=1; pom[0] = flushkbd(); do{ ch = getc(stdin); if(ch != '\n') pom[index] = ch; else pom[index] = '\0'; index++; }while(ch != '\n'); ret = (char *)malloc(strlen(pom)+1); strcpy(ret, pom); return ret; }
void Pridaj() { char ch; int len,i;
if(Pocet < MAX_POLOZIEK){ Polozka = (ZAKAZNIK **)realloc(Polozka, (Pocet+1)*8); Polozka[Pocet] = (ZAKAZNIK *)malloc(STRUCT_SIZE); printf("\nMeno: "); Polozka[Pocet]->Meno = ReadStr(); printf("\nPriezvisko: "); Polozka[Pocet]->Priezvisko = ReadStr(); printf("\nID Cislo: "); Polozka[Pocet]->ID = ReadStr(); printf("\nAdresa: "); Polozka[Pocet]->Adresa = ReadStr(); printf("\nTelefon: "); Polozka[Pocet]->Tel = ReadStr(); printf("Rok posledneho odberu: "); Polozka[Pocet]->Rok = ReadStr(); printf("\nNazov Tovaru: "); Polozka[Pocet]->Tovar = ReadStr(); printf("\nCena: "); scanf("%d", &Polozka[Pocet]->Cena); Pocet++; } }
void Odober(int Index) { int i; if(Index < Pocet){ free(Polozka[Index]->Meno); free(Polozka[Index]->Priezvisko); free(Polozka[Index]->Adresa); free(Polozka[Index]->ID); free(Polozka[Index]->Tel); free(Polozka[Index]->Rok); free(Polozka[Index]->Tovar); free(Polozka[Index]); for(i=Index;i<Pocet-1;i++) Polozka[i] = Polozka[i+1]; Pocet--; Polozka = (ZAKAZNIK **)realloc(Polozka, Pocet*8); } }
void Uloz(const char *Nazov) { FILE *fp; int i;
if((fp = fopen(Nazov,"w+")) != NULL){ fprintf(fp,"%d\n", Pocet); for(i=0;i<Pocet;i++){ fprintf(fp,"%s\n%s\n%s\n%s\n%s\n%s\n%s\n%d\n", Polozka[i]->Meno, Polozka[i]->Priezvisko, Polozka[i]->Adresa, Polozka[i]->ID, Polozka[i]->Tel, Polozka[i]->Rok, Polozka[i]->Tovar, Polozka[i]->Cena); } fclose(fp); } }
void Nacitaj(const char *Nazov) { FILE *fp; char *pom; int i;
if((fp = fopen(Nazov,"r")) != NULL){ Pocet = 0; fscanf(fp,"%d\n", &Pocet); Polozka = (ZAKAZNIK **)realloc(Polozka, Pocet*8); for(i=0;i<Pocet;i++){ Polozka[i] = (ZAKAZNIK *)malloc(STRUCT_SIZE); Polozka[i]->Meno = fgetstr(fp); Polozka[i]->Priezvisko = fgetstr(fp); Polozka[i]->ID = fgetstr(fp); Polozka[i]->Adresa = fgetstr(fp); Polozka[i]->Tel = fgetstr(fp); Polozka[i]->Rok = fgetstr(fp); Polozka[i]->Tovar = fgetstr(fp); fscanf(fp,"%d\n", &Polozka[i]->Cena); } fclose(fp); } }
// podla = 1 (Priezv) 2 = (Cena) void Tried(int podla) { int i,j,vymen=0; ZAKAZNIK *Pom; for(i=0;i<Pocet-1;i++){ for(j=0;j<Pocet-1;j++){ if(podla == 1){ if(strcmp(Polozka[j]->Priezvisko, Polozka[j+1]->Priezvisko) > 0) vymen = 1; else vymen = 0; }else if(podla == 2){ if(Polozka[j]->Cena > Polozka[j+1]->Cena ) vymen = 1; else vymen = 0; } if(vymen){ Pom = Polozka[j]; Polozka[j] = Polozka[j+1]; Polozka[j+1] = Pom; } } } }
void Vypis(void) { int i;
for(i=0;i<Pocet;i++){ printf("--------------------------%3d -----------------------------", i+1); printf("\nMeno zakaznika: %s %s", Polozka[i]->Meno, Polozka[i]->Priezvisko); printf("\nIdentifikacne cislo: %s", Polozka[i]->ID); printf("\nAdresa zakaznika: %s", Polozka[i]->Adresa); printf("\nTelefon zakaznika: %s", Polozka[i]->Tel); printf("\nRok posledneho odberu: %s", Polozka[i]->Rok); printf("\nNazov tovaru: %s", Polozka[i]->Tovar); printf("\nCena tovaru: %d\n", Polozka[i]->Cena); if((i+1)%3 == 0){ printf("\n"); getchar(); } } printf("-----------------------------------------------------------\n"); printf("\n"); getchar(); }
int main(int argc, char *argv[]) { char Volba, fname[500]; int idx;
while((Volba = Menu()) != '8'){ switch(Volba){ case '1': Pridaj(); break; case '2': printf("\nZadaj index zakaznika: "); scanf("%d", &idx); Odober(idx-1); break; case '3': Tried(2); break; case '4': Tried(1); break; case '5': Vypis(); break; case '6': printf("\nZadaj nazov suboru do ktoreho sa ma ulozt obsah zoznamu: "); scanf("%s", &fname); Uloz(fname); break; case '7': printf("\nZadaj nazov suboru z ktoreho sa ma nacitat obsah zoznamu: "); scanf("%s", &fname); Nacitaj(fname); break; } } UvolniPamat(); printf("\n"); return EXIT_SUCCESS; }
DAKUJEM
|
|
Registrovaný: 09.05.07 Prihlásený: 23.03.09 Príspevky: 12 Témy: 3 | 3 |
A ak treba,tu je cele znenie ZADANIA:
Dik
Zostavte program na evidenciu zákazníkov internetového obchodu. O každom zákazníkovi sa evidujú tieto údaje: priezvisko, meno (prípadne meno firmy), identifikačné číslo zákazníka, rok poslednej objednávky, dodacia adresa (ulica_číslo, mesto_PSČ, krajina) a telefónne číslo, názov tovaru, cena. Program nech umožňuje pridanie zákazníka, odobratie zákazníka, usporiadanie podľa priezviska (firmy), ceny objednávky, výpis zoznamu zákazníkov. Položky zoznamu nech sú v tvare:
Hrasko Janko, F253, 1994, Jahodna_25, Zibawe_05802, Kongo, 052698741, Mys, 400
Na reprezentáciu zoznamu zákazníkov použite dynamické pole smerníkov a nech jednotlivé informačné položky záznamu majú dynamickú veľkosť. Záznamy reprezentujte štruktúrami a zoznam nech je uložený v súbore. Použite vlastné funkcie s parametrami
|
|
Registrovaný: 09.03.07 Prihlásený: 28.07.09 Príspevky: 39 Témy: 7 | 7 Bydlisko: Trnava |
D a hodiny s vodotryskom by si nechcel ? toto forum sa pomaly stava uloziskom uloh pre nepoctivych a lenivych studentov. co to len z tych skol vychadza.....
.
cakam adekvatnu vlnu kritiky, co som si to dovolil napisat...
|
|
Registrovaný: 17.11.06 Prihlásený: 31.12.07 Príspevky: 677 Témy: 9 | 9 |
šak to máš robené cez dynamické pole
|
|
Registrovaný: 09.05.07 Prihlásený: 23.03.09 Príspevky: 12 Témy: 3 | 3 |
audiotrack píše: šak to máš robené cez dynamické pole
3 kraaaaaaaaat DAKUJEM mas u mna pepsi colu
|
|
Registrovaný: 09.05.07 Prihlásený: 23.03.09 Príspevky: 12 Témy: 3 | 3 |
stewe píše: :DD a hodiny s vodotryskom by si nechcel ? toto forum sa pomaly stava uloziskom uloh pre nepoctivych a lenivych studentov. co to len z tych skol vychadza..... . cakam adekvatnu vlnu kritiky, co som si to dovolil napisat...
sak ty si nebol student...
a chcel som to LEN checknut,poradit a nie vypracovat!!!
a naco je toto forum???
Ved kto nechce pomoct, tak nemusi o to ani zakopnut!!!!
hodiny s vodotryskom by sa zisli
|
|
Registrovaný: 15.01.09 Prihlásený: 11.05.09 Príspevky: 1 Témy: 0 | 0 |
potrebujem tu dodat nieco a to
Výpis zoznamu študentov zaradených na predmet.
Pridanie študenta na predmet.
Vyradenie študenta z predmetu.
Neviem ako mám spojit to s tým predmetom ku studentovi
Neporadili by ste mi.
Kód: #include <stdio.h> #include <malloc.h> #include <string.h> #define MAX_LENGTH 30 #define COUNT_ITEM 20 struct PARAM { char *pchMeno; char *pchPriezvisko; char *pchRok; char *pchstudprogram; char *pchidentcislo; }; struct PARAM *g_Param[COUNT_ITEM]; FILE *g_file; void Vypis( int nNumRec ) { int i; for( i = 0; i < nNumRec; i++ ) { printf( "[%d] %s %s %s %s %s %sn", i, g_Param[i]->pchMeno, g_Param[i]->pchPriezvisko, g_Param[i]->pchRok, g_Param[i]->pchstudprogram, g_Param[i]->pchidentcislo); } } void FreeMem( int nDelRec ) { free( g_Param[nDelRec]->pchMeno ); free( g_Param[nDelRec]->pchPriezvisko ); free( g_Param[nDelRec]->pchRok ); free( g_Param[nDelRec]->pchstudprogram ); free( g_Param[nDelRec]->pchidentcislo ); free( g_Param[nDelRec]); } void Pridaj( int *pnNumRec ) { if( *pnNumRec < COUNT_ITEM ) { g_Param[*pnNumRec] = (struct PARAM *) malloc(sizeof(struct PARAM)); g_Param[*pnNumRec]->pchMeno = (char*) malloc(MAX_LENGTH); printf( "Meno : "); scanf( "%s", g_Param[*pnNumRec]->pchMeno ); g_Param[*pnNumRec]->pchPriezvisko = (char*) malloc(MAX_LENGTH); printf( "Priezvisko : "); scanf( "%s", g_Param[*pnNumRec]->pchPriezvisko ); g_Param[*pnNumRec]->pchRok = (char*) malloc(MAX_LENGTH); printf( "Vek : "); scanf( "%s", g_Param[*pnNumRec]->pchRok ); g_Param[*pnNumRec]->pchstudprogram = (char*) malloc(MAX_LENGTH); printf( "Studijny program : "); scanf( "%s", g_Param[*pnNumRec]->pchstudprogram ); g_Param[*pnNumRec]->pchidentcislo = (char*) malloc(MAX_LENGTH); printf( "Identifikacne cislo : "); scanf( "%s", g_Param[*pnNumRec]->pchidentcislo ); (*pnNumRec)++; } else { printf( "Zoznam je plny" ); } } void Zmaz(int *pnNumRec) { int i; int nRecDel; Vypis( *pnNumRec ); if( *pnNumRec != 0 ) { printf( "Zadaj cislo zaznamu ktory chces zmazat : " ); scanf( "%d", &nRecDel ); for( i = nRecDel; i < ((*pnNumRec)-1); i++ ) { strcpy( g_Param[i]->pchMeno,g_Param[i+1]->pchMeno); strcpy( g_Param[i]->pchPriezvisko,g_Param[i+1]->pchPriezvisko); strcpy( g_Param[i]->pchRok,g_Param[i+1]->pchRok); strcpy( g_Param[i]->pchstudprogram,g_Param[i+1]->pchstudprogram); strcpy( g_Param[i]->pchidentcislo,g_Param[i+1]->pchidentcislo);
} if ((*pnNumRec)-1==0) { FreeMem( 0 ); } else { FreeMem( (*pnNumRec)-1 ); } (*pnNumRec)--; } else { printf( "!!! Prazdny zoznam !!!n" ); } } void Zotried (int nNumRec) { int i; int j; struct PARAM *helpParam; for( i = 0; i < nNumRec-1; i++) { for( j = i+1; j < nNumRec; j++ ) { if( strcmp( g_Param[j]->pchidentcislo, g_Param[i]->pchidentcislo ) < 0 ) { helpParam = g_Param[j]; g_Param[j] = g_Param[i]; g_Param[i] = helpParam; } } } } void Zotried_Priezvisko(int nNumRec) { int i; int j; struct PARAM *helpParam; for( i = 0; i < nNumRec-1; i++) { for( j = i+1; j < nNumRec; j++ ) { if( strcmp( g_Param[j]->pchPriezvisko, g_Param[i]->pchPriezvisko ) < 0 ) { helpParam = g_Param[j]; g_Param[j] = g_Param[i]; g_Param[i] = helpParam; } } } } void Nacitaj( int *pnNumRec ) { int nRet; int i; for( i = 0; i < *pnNumRec; i++ ) { FreeMem( i ); } *pnNumRec = 0; g_file = fopen( "zoznam.txt", "r" ); do { if( *pnNumRec < COUNT_ITEM ) { g_Param[*pnNumRec] = (struct PARAM *) malloc(sizeof(struct PARAM)); g_Param[*pnNumRec]->pchMeno = (char*) malloc(MAX_LENGTH); g_Param[*pnNumRec]->pchPriezvisko = (char*) malloc(MAX_LENGTH); g_Param[*pnNumRec]->pchRok = (char*) malloc(MAX_LENGTH); g_Param[*pnNumRec]->pchstudprogram = (char*) malloc(MAX_LENGTH); g_Param[*pnNumRec]->pchidentcislo = (char*) malloc(MAX_LENGTH); nRet = fscanf( g_file, "%st%st%st%st%st%sn", g_Param[*pnNumRec]->pchMeno, g_Param[*pnNumRec]->pchPriezvisko, g_Param[*pnNumRec]->pchRok, g_Param[*pnNumRec]->pchstudprogram, g_Param[*pnNumRec]->pchidentcislo); if( nRet != EOF ) { (*pnNumRec)++; } else { FreeMem( *pnNumRec ); // (*pnNumRec)--; } } else { printf( "Zoznam je plny" ); break; } }while( nRet != EOF ); fclose( g_file ); } void Uloz( int nNumRec ) { int i; g_file = fopen( "zoznam.txt", "w" ); if( g_file == NULL ) { printf("nemozem zapisat"); } else { for( i = 0; i < nNumRec; i++ ) { fprintf( g_file, "%st%st%st%st%st%sn", g_Param[i]->pchMeno, g_Param[i]->pchPriezvisko, g_Param[i]->pchRok, g_Param[i]->pchstudprogram, g_Param[i]->pchidentcislo); } fclose( g_file ); } } main() { char chChoice; int nNumRec; int i; nNumRec = 0; do { printf( "n**************** MENU ****************n" ); printf( "[1] Pridaj zaznamn[2] Zmaz zaznamn[3] Zotried identifikacne cislon[4] Vypis zoznamn" ); printf( "[5] Uloz do suborun[6] Nacitaj zo suborun[7] Zotried priezvisko n[9] Ukonci programn" ); printf( "nZadaj volbu : " ); scanf( "%s", &chChoice ); printf( "n" ); switch( chChoice ) { case '1': Pridaj( &nNumRec ); break; case '2': Zmaz( &nNumRec ); break; case '3': Zotried ( nNumRec); break; case '4': Vypis( nNumRec ); break; case '5': Uloz( nNumRec ); break; case '6': Nacitaj( &nNumRec ); break; case '7': Zotried_Priezvisko( nNumRec); break; } }while( chChoice != '9' ); for( i = 0; i < nNumRec; i++ ) { FreeMem( i ); } }
|
|
Stránka: 1 z 1
| [ Príspevkov: 7 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| v Assembler, C, C++, Pascal, Java | 6 | 1455 | 27.03.2009 17:42 programator | | v PHP, ASP | 3 | 452 | 28.09.2011 22:56 Ando | | v Assembler, C, C++, Pascal, Java | 1 | 2045 | 19.11.2008 14:51 Dark_Raven | | v JavaScript, VBScript, Ajax | 7 | 653 | 27.08.2011 15:08 chrono | | v Ostatné | 1 | 432 | 17.07.2008 18:05 rojko666 | | v Notebooky a netbooky | 12 | 566 | 01.10.2009 18:18 Robrox_flash | | v Redakčné systémy | 3 | 566 | 25.07.2007 13:12 Gigabyte-M | | v Assembler, C, C++, Pascal, Java | 10 | 8280 | 09.10.2014 8:24 BX | | v PC skrinky, zdroje a všetky druhy chladenia | 11 | 586 | 05.09.2011 17:32 Veveričiačik | | v Assembler, C, C++, Pascal, Java | 6 | 505 | 10.05.2010 17:37 jahoda09 | | v Assembler, C, C++, Pascal, Java | 1 | 1196 | 28.03.2009 10:05 neutronmind | | v HTML, XHTML, XML, CSS | 5 | 1072 | 02.11.2008 17:00 chrono | | v HTML, XHTML, XML, CSS | 6 | 586 | 13.03.2008 15:10 ove | | v HTML, XHTML, XML, CSS | 1 | 402 | 30.05.2010 13:35 shaggy | | v Ostatné | 4 | 1220 | 30.01.2009 15:17 Berny | | v Siete | 1 | 783 | 12.10.2012 10:55 majky358 |
|