Duda con Programacion Modular en C

Iniciado por Hellkard, 30 Octubre 2012, 18:44 PM

0 Miembros y 1 Visitante están viendo este tema.

Hellkard

Hola a todos

me estoy iniciando en esto de la programación, y en la escuela nos han dejado diseñar algunas cosas, ya eh terminado de implementarle Arrays, sin embargo me han dicho que este proyecto lo tengo que hacer también con programación modular, pero no tengo la mas mínima idea de como hacerlo   :(

alguno de ustedes me pudiera ayudar???  :D
Gracias a todos¡¡¡

este es el codigo que tengo


#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#include <dos.h>
#include "windows.h"

int main (void){

float tabla [6][2] = {{1,5.00}, {2,3.50}, {3,7.45}, {4,8.32}, {5,4.50}, {6, 0}};
int a , n, seleccion;
float total;

do {

puts("\t\t\t*****Menu*****\n");
printf("1. Jabon..............(c/u) %.2f Pesos" ,tabla[0][1]);
printf("\n2. Afeitadora.........(c/u) %.2f Pesos", tabla[1][1]);
printf("\n3. Shampoo............(c/u) %.2f Pesos", tabla[2][1]);
printf("\n4. Acondicionador.....(c/u) %.2f Pesos", tabla[3][1]);
printf("\n5. Pasta Dental.......(c/u) %.2f Pesos", tabla[4][1]);
printf("\n6. Salir Del Sistema",tabla[5][1]);
printf("\n \n Ingrese el numero del producto que desea adquirir: ");
scanf("%d",&n);

switch(n)
{
case 1:
printf("\n Cuantos Jabones desea adquirir? ");  
scanf("%d",&a);

total= tabla[n - 1][1] * a;

printf("\n Desea adquirir otro producto?");
printf("\n\n1.Si 2.No: ");
scanf("%d",&seleccion);

break;

case 2:
printf("\n Cuantas Afeitadoras desea adquirir? ");
scanf("%d",&a);

total= tabla[n - 1][1] * a + total;

printf("\n Desea adquirir otro producto?");
printf("\n\n 1.Si 2.No: ");
scanf("%d",&seleccion);

break;

case 3:
printf("\n Cuantos Shampoos desea adquirir? ");
scanf("%d",&a);

total= tabla[n - 1][1] * a + total;

printf("\n Desea adquirir otro producto?");
printf("\n\n1.Si 2.No: ");
scanf("%d",&seleccion);

break;

case 4:
printf("\n Cuantos Acondicionadores desea adquirir? ");
scanf("%d",&a);

total= tabla[n - 1][1] * a + total;

printf("\n Desea adquirir otro producto?");
printf("\n\n1.Si 2.No: ");
scanf("%d",&seleccion);

break;

case 5:
printf("\n Cuantas Pasta Dental desea aquirir? ");
scanf("%d",&a);

total= tabla[n - 1][1] * a + total;

printf("\n Desea adquirir otro producto?");
printf("\n\n1.Si 2.No: ");
scanf("%d",&seleccion);

break;

case 6:
system("cls");
printf("\n***Gracias Por Usar Nuestros Servicios***\n");
Sleep(800);
break;

default:
if(n<1 || n>6)
{
system("cls");
puts("\n\n ***Opcion Invalida***\n\n");
Sleep(500);
}

break;

}

} while(seleccion!=2);

printf("\nTotal a pagar es: %.3f Pesos",total);

printf("\n\n\t");
system("pause");

}   

avesudra

#1
Vale pero sin ánimo de ofender ¿cuál es el problema? es decir ¿y el enunciado?
Perdona , ya se que quisiste decir , sí , lo que tienes que hacer es implementar funciones que hagan cada cosa del menú.Dividir el programa en subrutinas, sólo por el simple hecho de «Divide y vencerás»
¡Un saludo y bienvenido al foro!
Regístrate en

Hellkard

Hola que tal

Gracias por la contestación, y no, no me ofendo jeje, al contrario

Pues mira se supone que este programa te imprime un menú en el cual el usuario debe escoger de la lista un producto el sistema le preguntara cuantos productos desea adquirir el usuario ingresara la cantidad a adquirir, así mismo le volverá a preguntar si quiere algún otro producto o no, de ser no pues le plasmara el total de la compra, agrandes rasgos es lo que hace

La maestra nos pidió que ya que lo hiciéramos con Arrays deberíamos de realizar una propuesta para dividirlo en módulos

y después de esto realizar el diagrama modular describiendo cuáles son los parámetros de entrada de cada módulo, cuál es la salida (valor de retorno) y la tarea que realizará cada uno de ellos

y codificarlo en C

Hellkard

Cita de: avesudra en 30 Octubre 2012, 19:40 PM
Vale pero sin ánimo de ofender ¿cuál es el problema? es decir ¿y el enunciado?
Perdona , ya se que quisiste decir , sí , lo que tienes que hacer es implementar funciones que hagan cada cosa del menú.Dividir el programa en subrutinas, sólo por el simple hecho de «Divide y vencerás»
¡Un saludo y bienvenido al foro!

:D si en teoria es eso, pero no tengo la minima idea de como implementarlo ( sorry estoy medio zonzo para esto aun)

gracias

lapras

Una manera fácil de hacerlo es simplemente copiar y pegar dentro de las funciones(o módulos) que defines y pasar los parámetros por referencia(punteros):
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#include <dos.h>
#include "windows.h"

void jabon         (int *a, float *total, int n, float (*tabla)[2], int *seleccion);
void afeitadora    (int *a, float *total, int n, float (*tabla)[2], int *seleccion);
void shampoo       (int *a, float *total, int n, float (*tabla)[2], int *seleccion);
void acondicionador(int *a, float *total, int n, float (*tabla)[2], int *seleccion);
void pasta         (int *a, float *total, int n, float (*tabla)[2], int *seleccion);

int main (void){

float tabla [6][2] = {{1,5.00}, {2,3.50}, {3,7.45}, {4,8.32}, {5,4.50}, {6, 0}};
int a , n, seleccion;
float total;

do {

puts("\t\t\t*****Menu*****\n");
printf("1. Jabon..............(c/u) %.2f Pesos" ,tabla[0][1]);
printf("\n2. Afeitadora.........(c/u) %.2f Pesos", tabla[1][1]);
printf("\n3. Shampoo............(c/u) %.2f Pesos", tabla[2][1]);
printf("\n4. Acondicionador.....(c/u) %.2f Pesos", tabla[3][1]);
printf("\n5. Pasta Dental.......(c/u) %.2f Pesos", tabla[4][1]);
printf("\n6. Salir Del Sistema",tabla[5][1]);
printf("\n \n Ingrese el numero del producto que desea adquirir: ");
scanf("%d",&n);

switch(n)
{
case 1:
jabon(&a, &total, n, tabla, &seleccion);
break;

case 2:
afeitadora(&a, &total, n, tabla, &seleccion);
break;

case 3:
shampoo(&a, &total, n, tabla, &seleccion);
break;

case 4:
acondicionador(&a, &total, n, tabla, &seleccion);
break;

case 5:
pasta(&a, &total, n, tabla, &seleccion);
break;

case 6:
system("cls");
printf("\n***Gracias Por Usar Nuestros Servicios***\n");
Sleep(800);
break;

default:
if(n<1 || n>6)
{
system("cls");
puts("\n\n ***Opcion Invalida***\n\n");
Sleep(500);
}

break;

}

} while(seleccion!=2);

printf("\nTotal a pagar es: %.3f Pesos",total);

printf("\n\n\t");
system("pause");




void jabon (int *a, float *total, int n, float (*tabla)[2], int *seleccion){
printf("\n Cuantos Jabones desea adquirir? ");   
scanf("%d",a);

*total= tabla[n - 1][1] * (*a) + (*total);

printf("\n Desea adquirir otro producto?");
printf("\n\n1.Si 2.No: ");
scanf("%d",seleccion);
}

void afeitadora (int *a, float *total, int n, float (*tabla)[2], int *seleccion){
printf("\n Cuantas Afeitadoras desea adquirir? ");
scanf("%d",a);

*total= tabla[n - 1][1] * (*a) + (*total);

printf("\n Desea adquirir otro producto?");
printf("\n\n 1.Si 2.No: ");
scanf("%d",seleccion);
}

void shampoo (int *a, float *total, int n, float (*tabla)[2], int *seleccion){
printf("\n Cuantos Shampoos desea adquirir? ");
scanf("%d",a);

*total= tabla[n - 1][1] * (*a) + (*total);

printf("\n Desea adquirir otro producto?");
printf("\n\n1.Si 2.No: ");
scanf("%d",seleccion);
}

void acondicionador (int *a, float *total, int n, float (*tabla)[2], int *seleccion){
printf("\n Cuantos Acondicionadores desea adquirir? ");
scanf("%d",a);

*total= tabla[n - 1][1] * (*a) + (*total);

printf("\n Desea adquirir otro producto?");
printf("\n\n1.Si 2.No: ");
scanf("%d",seleccion);
}

void pasta (int *a, float *total, int n, float (*tabla)[2], int *seleccion){
printf("\n Cuantas Pasta Dental desea aquirir? ");
scanf("%d",a);

*total= tabla[n - 1][1] * (*a) + (*total);

printf("\n Desea adquirir otro producto?");
printf("\n\n1.Si 2.No: ");
scanf("%d",seleccion);
}


De verdad que es muy fácil si sabes como.
Por cierto, ¿el código lo ha hecho tu profesora? Hay un error el la linea esta "total= tabla[n - 1][1] * a;"
Si quieres comprar jabones después de comprar lo que sea sólo pagaras los jabones. Lo correcto sería "total= tabla[n - 1][1] * a+ total;" o "total+= tabla[n - 1][1] * a;"

Hellkard

Cita de: tuket en 30 Octubre 2012, 23:31 PM
Una manera fácil de hacerlo es simplemente copiar y pegar dentro de las funciones(o módulos) que defines y pasar los parámetros por referencia(punteros):

De verdad que es muy fácil si sabes como.
Por cierto, ¿el código lo ha hecho tu profesora? Hay un error el la linea esta "total= tabla[n - 1][1] * a;"
Si quieres comprar jabones después de comprar lo que sea sólo pagaras los jabones. Lo correcto sería "total= tabla[n - 1][1] * a+ total;" o "total+= tabla[n - 1][1] * a;"

Anda la osa.....  ;D jaja muchas gracias pos la ilustracion, aunque ps para mi aun se ve algo complicadillo jaja, hasta dudo que la profesora haya hecho ese codigo, para mi que lo copio de algun lado y le ah de modificar dos o tres cosas...

muchas gracias por el ejemplo