Categoria: Programacion Tema: C/C++ Titulo: Trabajar con estructuras en c
Fecha del Tema: 2012-05-01 23:09:37Esta es una pequeña aplicación que nos muestra como utilizar estructuras en C++ que es lo mas parecido a una clase en otros lenguajes. <? //esto no va //m7p01.c - Miniagenda telefónica - #include<stdio.h> #include<stdlib.h> #include<string.h> #define MAX 100 struct { char nom[30]; char cognom1[30]; char cognom2[30]; char tel[9]; } entrada[MAX]; int punter=0; void nova_entrada(void); void esborra_entrada(void); void mostrar(void); void cerca_nom(void); void cerca_cognom1(void); void cerca_tel(void); void parada(void); //funcions void NetejaBuffer(){ while(getchar() != ``); } int main(){ char sel; do{ system("clear"); printf("Miniagenda telefonica"); printf("1. Introduir nova entrada"); printf("2. Esborrar entrada"); printf("3. Cerca per nom"); printf("4. Cerca per cognom1"); printf("5. Cerca per telèfon"); printf("6. Mostra totes les entrades"); printf("7. Sortir"); printf("Premi una opció (ESC per sortir)"); do{ sel=getchar(); }while((sel<`1` || sel>`7`)&&sel!=27); switch(sel){ case `1`: nova_entrada(); break; case `2`: esborra_entrada(); break; case `3`: cerca_nom(); break; case `4`: cerca_cognom1(); break; case `5`: cerca_tel(); break; case `6`: mostrar(); break; case `7`: case 27: return 0; }; }while(1); return 0; } void nova_entrada(void){ if (punter==MAX) { printf("no és possible afegir més entrades"); parada(); return; } printf("entrada %d.",punter); NetejaBuffer(); printf("nom?");fgets(entrada[punter].nom,30,stdin); printf("cognom1?"); fgets(entrada[punter].cognom1,30,stdin); printf("cognom2?"); fgets(entrada[punter].cognom2,30,stdin); printf("telèfon?");fgets(entrada[punter].tel,9,stdin); printf("Entrada %d emmagatzemada", punter); punter++; return; } void esborra_entrada(void){ int sel,ct; printf("número d entrada per esborrar?"); getchar(); scanf("%d",&sel); if (sel<0||sel>=punter){ printf("número d entrada erroni"); parada(); return; } for (ct=sel+1;ct<punter;ct++){ entrada[ct-1]=entrada[ct]; } punter--; } void mostrar(void){ int ct; for (ct=0;ct<punter;ct++){ printf("%d: %s %s %s %s", ct, entrada[ct].nom, entrada[ct].cognom1, entrada[ct].cognom2, entrada[ct].tel); } parada(); return; } void cerca_nom(void){ int ntrobats=0,ct; char ncer[30]; printf("nom a buscar?"); scanf(" %s", ncer); for(ct=0;ct<punter;ct++){ if( !strncmp( ncer, entrada[ct].nom, strlen(ncer))){ printf("%d: %s %s %s %s", ct, entrada[ct].nom, entrada[ct].cognom1, entrada[ct].cognom2, entrada[ct].tel); ntrobats++; } } printf("s han trobat %d entrades",ntrobats); parada(); return; } void cerca_cognom1(void){ int ntrobats=0,ct; char ncer[30]; printf("cognom1 a buscar?"); scanf(" %s", ncer); for(ct=0;ct<punter;ct++){ if( !strncmp( ncer, entrada[ct].cognom1, strlen(ncer))){ printf("%d: %s %s %s %s", ct, entrada[ct].nom, entrada[ct].cognom1, entrada[ct].cognom2, entrada[ct].tel); ntrobats++; } } printf("s han trobat %d entrades",ntrobats); parada(); return; } void cerca_tel(void){ int ntrobats=0,ct; char ncer[30]; printf("telèfon a buscar?"); scanf(" %s", ncer); for(ct=0;ct<punter;ct++){ if( !strncmp( ncer, entrada[ct].tel,strlen(ncer))){ printf("%d: %s %s %s %s", ct, entrada[ct].nom, entrada[ct].cognom1, entrada[ct].cognom2, entrada[ct].tel); ntrobats++; } } printf("s han trobat %d entrades",ntrobats); parada(); return; } void parada(void){ char c; printf("prem una tecla per continuar"); NetejaBuffer(); c=getc(stdin); } ?>//esto no va
Esta es una pequeña aplicación que nos muestra como utilizar estructuras en C++ que es lo mas parecido a una clase en otros lenguajes. <? //esto no va //m7p01.c - Miniagenda telefónica - #include<stdio.h> #include<stdlib.h> #include<string.h> #define MAX 100 struct { char nom[30]; char cognom1[30]; char cognom2[30]; char tel[9]; } entrada[MAX]; int punter=0; void nova_entrada(void); void esborra_entrada(void); void mostrar(void); void cerca_nom(void); void cerca_cognom1(void); void cerca_tel(void); void parada(void); //funcions void NetejaBuffer(){ while(getchar() != ``); } int main(){ char sel; do{ system("clear"); printf("Miniagenda telefonica"); printf("1. Introduir nova entrada"); printf("2. Esborrar entrada"); printf("3. Cerca per nom"); printf("4. Cerca per cognom1"); printf("5. Cerca per telèfon"); printf("6. Mostra totes les entrades"); printf("7. Sortir"); printf("Premi una opció (ESC per sortir)"); do{ sel=getchar(); }while((sel<`1` || sel>`7`)&&sel!=27); switch(sel){ case `1`: nova_entrada(); break; case `2`: esborra_entrada(); break; case `3`: cerca_nom(); break; case `4`: cerca_cognom1(); break; case `5`: cerca_tel(); break; case `6`: mostrar(); break; case `7`: case 27: return 0; }; }while(1); return 0; } void nova_entrada(void){ if (punter==MAX) { printf("no és possible afegir més entrades"); parada(); return; } printf("entrada %d.",punter); NetejaBuffer(); printf("nom?");fgets(entrada[punter].nom,30,stdin); printf("cognom1?"); fgets(entrada[punter].cognom1,30,stdin); printf("cognom2?"); fgets(entrada[punter].cognom2,30,stdin); printf("telèfon?");fgets(entrada[punter].tel,9,stdin); printf("Entrada %d emmagatzemada", punter); punter++; return; } void esborra_entrada(void){ int sel,ct; printf("número d entrada per esborrar?"); getchar(); scanf("%d",&sel); if (sel<0||sel>=punter){ printf("número d entrada erroni"); parada(); return; } for (ct=sel+1;ct<punter;ct++){ entrada[ct-1]=entrada[ct]; } punter--; } void mostrar(void){ int ct; for (ct=0;ct<punter;ct++){ printf("%d: %s %s %s %s", ct, entrada[ct].nom, entrada[ct].cognom1, entrada[ct].cognom2, entrada[ct].tel); } parada(); return; } void cerca_nom(void){ int ntrobats=0,ct; char ncer[30]; printf("nom a buscar?"); scanf(" %s", ncer); for(ct=0;ct<punter;ct++){ if( !strncmp( ncer, entrada[ct].nom, strlen(ncer))){ printf("%d: %s %s %s %s", ct, entrada[ct].nom, entrada[ct].cognom1, entrada[ct].cognom2, entrada[ct].tel); ntrobats++; } } printf("s han trobat %d entrades",ntrobats); parada(); return; } void cerca_cognom1(void){ int ntrobats=0,ct; char ncer[30]; printf("cognom1 a buscar?"); scanf(" %s", ncer); for(ct=0;ct<punter;ct++){ if( !strncmp( ncer, entrada[ct].cognom1, strlen(ncer))){ printf("%d: %s %s %s %s", ct, entrada[ct].nom, entrada[ct].cognom1, entrada[ct].cognom2, entrada[ct].tel); ntrobats++; } } printf("s han trobat %d entrades",ntrobats); parada(); return; } void cerca_tel(void){ int ntrobats=0,ct; char ncer[30]; printf("telèfon a buscar?"); scanf(" %s", ncer); for(ct=0;ct<punter;ct++){ if( !strncmp( ncer, entrada[ct].tel,strlen(ncer))){ printf("%d: %s %s %s %s", ct, entrada[ct].nom, entrada[ct].cognom1, entrada[ct].cognom2, entrada[ct].tel); ntrobats++; } } printf("s han trobat %d entrades",ntrobats); parada(); return; } void parada(void){ char c; printf("prem una tecla per continuar"); NetejaBuffer(); c=getc(stdin); } ?>//esto no va