Temas > Programacion > C/C++ > Trabajar con estructuras en c
Julio

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













¿Has olviado tu contraseña?

Pulsa aquí para registrate




Google






LunMarMieJueVieSabDom
    123
45678910
11121314151617
181920 21222324
252627282930 

Jueves 21 de Noviembre 2024
Semana 47

..............................................................................................................................................................................................................................................
(Contacto)..
Esta web utiliza cookies para obtener datos estadísticos de la navegación de sus usuarios. Política de privacidad y Aviso legal