Foros del Web » Programación para mayores de 30 ;) » C/C++ »

estoy perdido

Estas en el tema de estoy perdido en el foro de C/C++ en Foros del Web. miren gracias al apoyo de este foro e resuelto algunas actividades referente a punteros y pilas mas sin embargo me quedo con demasiadas dudas no ...
  #1 (permalink)  
Antiguo 20/10/2009, 18:22
 
Fecha de Ingreso: octubre-2009
Mensajes: 19
Antigüedad: 14 años, 6 meses
Puntos: 0
estoy perdido

miren gracias al apoyo de este foro e resuelto algunas actividades referente a punteros y pilas mas sin embargo me quedo con demasiadas dudas no por parte de ustedes si no por que no tengo manera de decir esto se hace asi no?, no se si alguien conosca algun manual que lo explique ahora si que con manzanas porque me estoy empezando a dar cuenta que estoy muy torpe para programar me dejan esta actividad que les pongo abajo en la cual tengo que implementar una cola pero no tengo la mas remota idea de como llevarla acabo mi actividad dice lo siguiente
Código:
Implementación de una cola
Realice un programa implementando una estructura de cola dinámica, para simular las actividades que se realizan en la línea de cajas de un banco, atendiendo a sus clientes que acuden a realizar una de las siguientes operaciones:
1.	Pago de servicio
2.	Retiro o disposición
3.	Cobro de cheque
4.	Deposito 
5.	Pago de tarjeta
Los datos que el programa debe manejar de cada uno de los clientes son:
1.	Turno: un número consecutivo asignado por el programa que garantiza que los clientes se atiendan exactamente en el orden que llegan.
2.	Tipo de operación: un número que identifica uno de los 5 tipos de operaciones descritas antes.
3.	Nombre: una cadena corta solo con el nombre del cliente (servirá para llamar por su nombre el cliente a la línea de cajas y ofrecer una atención personalizada).
4.	Monto de la operación: la cantidad de dinero que implica la operación.
El programa deberá presentar un menú con las siguientes opciones, suponiendo claro que al inicio de operaciones la cola esta vacía:
1.	Colocar un cliente en la cola: el programa pedirá los datos del cliente que se mencionaron antes, se le asignara un turno y se pondrá en la cola de atención.
2.	Atender a un cliente: el programa tomará el cliente a la cabeza de la cola, mostrando todos sus datos y eliminándolo de la cola; se debe considerar en caso de que la cola este vacía enviar el mensaje correspondiente “no hay clientes por atender”.
3.	Visualizar la cola: imprimir en columnas los 4 datos de cada cliente en el orden en que llegaron y serán atendidos desde el primero al último. En esta opción se debe considerar que si la cola esta vacía, se envíe el mensaje correspondiente.
4.	Limpiar la cola: que consiste en eliminar todos los elementos de la cola.
5.	Por su puesto la opción de salir o terminar el programa.
Mecánica de la actividad:
Antes de comenzar esta actividad debe completar completamente la actividad anterior (2.2).
Puede realizar esta actividad de forma individual o bien si lo prefiere en equipos de 2 personas. Si decide trabajar en equipo debe registrar su equipo al término de la actividad anterior con el asesor para que sean autorizados a trabajar juntos.
quiero ser un programador experto pero creo que estudiar la universidad por internet no es el medio para aprender este tipo de lenguajes quisiera hasta desertar pero pues ya estoy dentro alguien de ustedes tiene algun manual explicado o algo asi hechenme la mano no porfis jeje saludos a todos
se me olvidaba pues con el compilador que tengo que es borland c++ v5.01
  #2 (permalink)  
Antiguo 20/10/2009, 21:13
Avatar de fradve  
Fecha de Ingreso: abril-2009
Mensajes: 157
Antigüedad: 15 años
Puntos: 7
Sonrisa Respuesta: estoy perdido

Hola,

El programa así de reojo está sencillo. No es que seas torpe para programar sino que simplemente tienes que leer y prácticar más, no te quedes solo con las tareas ve mas allá. Busca en Internet hay infinidad de manuales muy buenos solo tienes que tener paciencia en leerlos. A todos o bueno por lo menos a mi en un principio me chocó un poco la programación, pero luego el asunto se va aclarando y le vas cogiendo un gustito que inclusive realizar programas que se te vienen a la mente. Ser un buen programador requiere constancia, disciplina, y sobretodo una buena lógica para desarrollar los diversos procesos (la vas adquiriendo a medida que avanzas). Lee y nos cuentas realiza el código y te ayudaremos. No te rindas adelante que si puedes.
__________________
En programación hay mil y un formas de hacer lo mismo...
  #3 (permalink)  
Antiguo 21/10/2009, 20:16
 
Fecha de Ingreso: julio-2009
Mensajes: 118
Antigüedad: 14 años, 9 meses
Puntos: 2
Respuesta: estoy perdido

hola tu programa esta trabajable, te aconsejo que leas mucho sobre el programa que tú tienes es decir c++ y estoy trabajando o asiendo un código a ver sí te sirve pero para que te guíes no te lo voy a hacer ok chao nos vemos. no se te olvide lee mucho
  #4 (permalink)  
Antiguo 21/10/2009, 20:57
 
Fecha de Ingreso: octubre-2009
Mensajes: 19
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: estoy perdido

muchas gracias por el apoyo moral
yo espero subir algo entre hoy y el viernes muchas gracias y pues si espero que solo sea una etapa enla que uno se bloque y le encuentre el amor a esto suerte a todos nos vemos
  #5 (permalink)  
Antiguo 22/10/2009, 17:53
 
Fecha de Ingreso: octubre-2009
Mensajes: 19
Antigüedad: 14 años, 6 meses
Puntos: 0
Ayuda porfavor

Implementación de una cola
Realice un programa implementando una estructura de cola dinámica, para simular las actividades que se realizan en la línea de cajas de un banco, atendiendo a sus clientes que acuden a realizar una de las siguientes operaciones:
1. Pago de servicio
2. Retiro o disposición
3. Cobro de cheque
4. Deposito
5. Pago de tarjeta
Los datos que el programa debe manejar de cada uno de los clientes son:
1. Turno: un número consecutivo asignado por el programa que garantiza que los clientes se atiendan exactamente en el orden que llegan.
2. Tipo de operación: un número que identifica uno de los 5 tipos de operaciones descritas antes.
3. Nombre: una cadena corta solo con el nombre del cliente (servirá para llamar por su nombre el cliente a la línea de cajas y ofrecer una atención personalizada).
4. Monto de la operación: la cantidad de dinero que implica la operación.
El programa deberá presentar un menú con las siguientes opciones, suponiendo claro que al inicio de operaciones la cola esta vacía:
1. Colocar un cliente en la cola: el programa pedirá los datos del cliente que se mencionaron antes, se le asignara un turno y se pondrá en la cola de atención.
2. Atender a un cliente: el programa tomará el cliente a la cabeza de la cola, mostrando todos sus datos y eliminándolo de la cola; se debe considerar en caso de que la cola este vacía enviar el mensaje correspondiente “no hay clientes por atender”.
3. Visualizar la cola: imprimir en columnas los 4 datos de cada cliente en el orden en que llegaron y serán atendidos desde el primero al último. En esta opción se debe considerar que si la cola esta vacía, se envíe el mensaje correspondiente.
4. Limpiar la cola: que consiste en eliminar todos los elementos de la cola.
5. Por su puesto la opción de salir o terminar el programa.

ESTE ES EL CODIGO QUE TENGO
Código:
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>

#define TAM 10       //en precompilación substituye TAM por 10

char *lista[TAM];

int inserta(char *,int);  //una funcion que inserta una cadena a la lista
void elimina(int);        //una funcion que borra un elemento de la lista
void muestra(void);		  //una funcion que muestra la lista
void ordena(void);
void llama (void);
void menu (void);
main()
{
  char a[50];		//Un buffer, memoria temporal para almacenar cadenas
  int n;				


  for(n=0;n<TAM;n++)			
       lista[n]=NULL;		

  //verifiquemos que la lista esta vacia
   for(n=0;n<TAM;n++) {
  printf("\n Introduce el nombre del cliente %d",n+1);
  gets(a);

  inserta(a,n+1);
                 }
  muestra();
      llama();

  getch();
}

//******************


int inserta(char *s,int p){
   int t;	   //para el tamaño de memoria necesaria por la cadena
   int l;	   //para la longitud de la cadena
   char *str;  //para apuntar a la memoria reservada

   
   if (lista[p]==NULL){       
      l=strlen(s);       		
      t=sizeof(char)*l; 		
      str=(char *)malloc(t);  
      if(str==NULL){			
      	printf("\ndisculpe pero!!! NO puede apartar lugar\n");
         return 0;            
      }
      strcpy(str,s); 		   
      lista[p]=str;			    
      return 1;				  
   }
   else                       
      return 0;               
}



void elimina(int p){

   free(lista[p]);	
   lista[p]=NULL;		
   						
}


//******************


void muestra(void){
   int i;  // para imprimir todos sus elementos

   printf("\n Mira con cuidado!!!\n ESTE ES EL CONTENIDO DE LA LISTA...\n");
   for (i=0;i<TAM;i++)              //Recorriendo todo el arreglo
      if(lista[i]==NULL)            //si no hay cadena en esa posicion
         printf(" %d.->\n",i+1);    //imprimamos solo el numero
      else                          //de lo contrario
         printf(" %d.-> %s\n",i+1,lista[i]); //imprimamos la cadena
}



 void llama(void){

 int *n;
 printf("cajero");
 printf("llamar a cliente   %s " );
   menu();
       }
  void menu(void){
  int opc;
 printf("\n 1.	Pago de servicio\n");
printf("2.	Retiro o disposición\n");
printf("3.	Cobro de cheque\n"     );
printf("4.	Deposito         \n    ");
printf("5.	Pago de tarjeta    \n   ");
printf("6.   salir");
printf("\n\t\ttu opcion fue:");
      scanf("%d",&opc);

		switch(opc)
		{
case 1 :
 printf("pago a realizar");
break;
case 2 :
 printf("cuanto va a retirar");
break;
case 3 :
    printf("de cuanto es su cheque");
break;
case 4 :
printf("cuanto es su deposito");
break;
case 5 :
printf("cuanto va a depositar en su tarjeta");
break;
case 6 :
default:
 break;
 }

   }
pr favor ayudaaa esto es lo que tengo siento yo que voy bien pero no se como hacerle para hacer que el cajero yame a un cliente y los que vllan atras se recorran y los que se vllan nombrando agan su operacion y se borren ustedes que opinan esta muy mal lo que esoty haciedo
  #6 (permalink)  
Antiguo 22/10/2009, 17:54
 
Fecha de Ingreso: octubre-2009
Mensajes: 19
Antigüedad: 14 años, 6 meses
Puntos: 0
problemas

hola que tal mira mande el codigo que e realizado hasta en momento espero me puedas hechar una manita gracias
  #7 (permalink)  
Antiguo 22/10/2009, 19:58
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: estoy perdido

Temas combinados.

Por favor, no abra más de un tema sobre el mismo asunto.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #8 (permalink)  
Antiguo 23/10/2009, 10:51
Avatar de fradve  
Fecha de Ingreso: abril-2009
Mensajes: 157
Antigüedad: 15 años
Puntos: 7
De acuerdo Respuesta: estoy perdido

Al tratarse de una cola dinámica no puedes limitarla declarandola así char *lista[TAM] ademas los que das a entender con esta sentencia es un arreglo de char *. Lo que tienes que hacer declarar una estructura que contenga los datos solicitados para cada cliente así:

Código c++:
Ver original
  1. struct Cliente
  2. {
  3.    int turno;
  4.    int tipo_op;
  5.    char nombre[15];
  6.    float monto;
  7.    Cliente *sig;
  8. };

Esta es la estructura base para la realización de tu cola, donde cada elemento que crees será un cliente.

Ahora investiga la manera en la que tienes que enlazar los nodos. como reservar memoria.

Y sobre los efectos de la simulación eso dejalo al último.
__________________
En programación hay mil y un formas de hacer lo mismo...
  #9 (permalink)  
Antiguo 24/10/2009, 19:04
 
Fecha de Ingreso: julio-2009
Mensajes: 118
Antigüedad: 14 años, 9 meses
Puntos: 2
Respuesta: estoy perdido

yo lo estoy haciendo con una estructura y realice una array (dinamica no la voy a hacer, si los turnos se terniman el inicia los nuevos turnos al inicio del array) y colocare un switch y casos hay voy. depronto coloco algo de codigo el domingo chao
  #10 (permalink)  
Antiguo 25/10/2009, 18:21
 
Fecha de Ingreso: octubre-2009
Mensajes: 19
Antigüedad: 14 años, 6 meses
Puntos: 0
mem dinamica

ok gracias por la ayuda me diste un tip con los array voy a intentar algo con eso
  #11 (permalink)  
Antiguo 25/10/2009, 21:02
 
Fecha de Ingreso: octubre-2009
Mensajes: 19
Antigüedad: 14 años, 6 meses
Puntos: 0
progrma de banco en espera

Código:
#include <stdio.h>
#include <conio.h>
#include <iostream.h> 	// para cout y cin
#include <ctype.h> 		//para funcion tolower
#include <string.h>
#include <stdlib.h>   	//para malloc
   #define TAM 10
int opcion, i;
char nomcli[15];
static int cima = 0;
*pila=(int *) malloc(sizeof(int));

// Definicion de la estructura de datos llamada CLIENTE
struct cliente {
int turno,opera;
char nombre[30];
float montop;
};

void asig_turno(int turs, int ops, int *x)
{

	struct cliente unomas;
	printf("\nElemento agregado a la PILA es: %d",turs);
	*pila=turs;
	*x=*x+1;
	printf("\nTurno: %d",turs);
	unomas.turno=turs;
	printf("\nTipo de operacion: %d", ops);
	unomas.opera=ops;
   printf("\nNombre: %s",nomcli);
	printf("\nMonto de la operacion: $");
	scanf("%f",&unomas.montop);

	return;
}

void atencion()
{
int i;
printf("YA NO HAY CIENTES EN ESPERA");
  getch();
   printf("los clientes atendidos fueron");
  for (i=0;i<cima;i++)
      if (nomcli[i]==NULL)
        printf(" %d.->\n",i+1);
    else
        printf(" %d.-> %s\n",i+1,nomcli[i]);
          return;
         }



void main() {
	char resp='S';
	i=1;
	while (resp=='S')
	{
   clrscr();
		cout << "\tSUCURSAL DEL CENTRO";
      printf("\nel nombre del ciente es :   ");
      scanf ("%s",&nomcli);
		printf( "\n\n***** SERVICIOS DISPONIBLES *****");
		printf( "\n\n\t1.- Pago de Servicio");
		printf( "\n\t2.- Retiro o disposicion");
		printf( "\n\t3.- Cobro de cheque");
		printf( "\n\t4.- Deposito");
		printf( "\n\t5.- Pago de tarjeta");
		printf( "\n\n ELEGIR EL SERVICIO A EFECTUAR :");
		scanf("%d",&opcion);


		asig_turno(i,opcion,&cima);
		i++;


		printf( "\nHay clientes en la FILA?  si/no \n");
	scanf("%s",&resp);
		resp=toupper(resp);
	}
	if (resp=='N')
	{
		atencion();
	}
	getch;
}
ok miren esto esl o que tenog hasta el momento
el problema que encuentro es que al final cuando quiero mandar a imprimir lo que tengo me manda un error y no se desifrarlo a lo mejor esta mal todo el programa y es por eso
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:51.