Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- /************************************************************************
- * *
- * Final de Sintaxis tomado el 22-07-2010 *
- * ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ *
- * Están programadas también las funciones que no pide *
- * para que se pueda probar el programa completo. *
- * Escrito por Sergio Milardovich <[email protected]> *
- * *
- ************************************************************************
- */
- struct sucursal{
- char nombre[64];
- char direccion[64];
- char localidad[64];
- float importe;
- float neto;
- float total;
- };
- // Se declaran las funciones que se van a usar.
- struct sucursal* carga();
- void menu();
- void modifica(struct sucursal *buffer, char nom[64], int codigo_campo);
- void listado(struct sucursal sucursal[3]);
- // En el main vamos a llamar a las funciones carga() y listado().
- void main(){
- menu();
- }
- // Menú de opciones.
- void menu(){
- int i,opt,num_suc,suc_campo;
- char suc_campo_valor[64];
- struct sucursal *suc;
- opt = 1;
- do{
- printf("Opciones: \n 1- ingresar sucursales \n 2- modificar una sucursal \n 3- listar sucursales \n 0- salir \n\n\t");
- scanf("%d",&opt);
- switch(opt){
- case 1:
- suc = carga();
- printf("\n\n\n Sucursales cargadas: \n");
- for(i=0;i<3;i++){
- printf("\t %s \n",suc[i].nombre);
- }
- break;
- case 2:
- printf("\n\n Ingrese el número de sucursal que quiere editar: \n");
- scanf("%d",&num_suc);
- printf("Ingrese el campo que quiere editar: \n");
- scanf("%d",&suc_campo);
- printf("Ingrese el nuevo valor del campo: \n");
- scanf("%s",suc_campo_valor);
- modifica(&suc[num_suc],suc_campo_valor,suc_campo);
- break;
- case 3:
- listado(suc);
- break;
- }
- } while(opt != 0);
- }
- // Cuerpo de la función declarada anteriormente.
- struct sucursal* carga(){
- static struct sucursal buffer[3];
- int i,j;
- j=0;
- for(i=0;i<3;i++){
- printf("Sucursal número %d \n",(++j));
- printf("Ingrese nombre: \n");
- scanf("%s",buffer[i].nombre);
- printf("Ingrese dirección: \n");
- scanf("%s",buffer[i].direccion);
- printf("Ingrese localidad: \n");
- scanf("%s",buffer[i].localidad);
- // Para usar scanf con una variable
- // que no sea un string es necesario
- // pasar la variable como puntero (&).
- printf("Ingrese importe: \n");
- scanf("%f",&buffer[i].importe);
- printf("Ingrese neto: \n");
- scanf("%f", &buffer[i].neto);
- printf("Ingrese total: \n");
- scanf("%f", &buffer[i].total);
- }
- return buffer;
- }
- void modifica(struct sucursal *buffer, char nom[64], int codigo_campo){
- switch(codigo_campo){
- case 1:
- strcpy(buffer->nombre, nom);
- break;
- case 2:
- strcpy(buffer->direccion, nom);
- break;
- case 3:
- strcpy(buffer->localidad, nom);
- break;
- case 4:
- // La función atof() sirve
- // para pasar un string a
- // flotante.
- buffer->importe = atof(nom);
- break;
- case 5:
- buffer->neto = atof(nom);
- break;
- case 6:
- buffer->total = atof(nom);
- break;
- }
- }
- void listado(struct sucursal sucursal[3]){
- struct sucursal buffer;
- int i,j;
- // Algoritmo sencillo para
- // ordenar colecciones
- // (método burbuja). Se puede
- // ver con más detalles acá:
- // http://www.nachocabanes.com/c/curso/cc05.php
- for (i=0;i<2;i++){
- for(j=1;j<3;j++){
- // Para comparar dos strings se debe usar la función strncmp.
- // Documentación: http://c.conclase.net/librerias/?ansifun=strncmp
- if(strncmp(sucursal[i].localidad, sucursal[j].localidad, 64) > 0){
- // Para asignarle un valor a un string
- // se usa la función strcpy
- // el primer argumento es la variable
- // donde se guarda el valor del segundo.
- // Para que funcione hace falta llamar
- // a la función string.h en la cabecera.
- strcpy(buffer.nombre,sucursal[i].nombre);
- strcpy(buffer.direccion,sucursal[i].direccion);
- strcpy(buffer.localidad,sucursal[i].localidad);
- buffer.importe = sucursal[i].importe;
- buffer.neto = sucursal[i].neto;
- buffer.total = sucursal[i].total;
- strcpy(sucursal[i].nombre,sucursal[j].nombre);
- strcpy(sucursal[i].direccion,sucursal[j].direccion);
- strcpy(sucursal[i].localidad,sucursal[j].localidad);
- sucursal[i].importe = sucursal[j].importe;
- sucursal[i].neto = sucursal[j].neto;
- sucursal[i].total = sucursal[j].total;
- strcpy(sucursal[j].nombre,buffer.nombre);
- strcpy(sucursal[j].direccion,buffer.direccion);
- strcpy(sucursal[j].localidad,buffer.localidad);
- sucursal[j].importe = buffer.importe;
- sucursal[j].neto = buffer.neto;
- sucursal[j].total = buffer.total;
- }
- }
- }
- printf("\n\n \t\t nombre \t dirección \t localidad \t importe \t neto \t total");
- for(i=0;i<3;i++){
- printf("\n \t\t %s \t %s \t %s \t %f \t %f \t %f \n",sucursal[i].nombre,sucursal[i].direccion,sucursal[i].localidad,sucursal[i].importe,sucursal[i].neto,sucursal[i].total);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment