MENU CON PROCEDIMIENTOS

Iniciado por KOKONUT, 12 Diciembre 2010, 14:40 PM

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

KOKONUT

HOLA AMIGOS, URGENTE AYUDA.

TENGO UN EXAMEN FINAL Y..
ME PIDEN QUE LEA UN VECTOR Y LUEGO QUE INGRESE A UN MENU Y ME PIDE 1.- 1.- 1.- ORDENAR, 2.- ELIMINAR, 3.- ETC.

COMO LO HAGO?
TENGO AVANZADO ESTO.
#include "stdafx.h"
#include <conio.h>
#include <stdio.h>

//Ingresar Elementos
void Leer (int n,float x[])
{
int i;
for(i=1;i<=n;i++)
{
printf("Elemento Nro [%d] :",i);
scanf("%d",&x[i]);
}
}


//Programa Principal
int _tmain(int argc, _TCHAR* argv[])
{
int n,opcion;
float A[50];
printf("Numero de Elementos a Ingresar :");
scanf("%d",&n);
printf("Ingrese Elementos\n");

//AYUDA EN ESTA PARTE
//opcion=menu();
//switch (opcion)
//{
//1 : ORDENAR
//2 : ELIMINAR
//.
// .
//.
//3 : SALIR
//}


// mostrar(n,A);
getch();
}


SALUDOS KOKONUT

ANTÓN RAMIREZ

#1
No te preocupes amigo aqui tengo la solucion a tu problema claro que el decorado no me dio tiempo , pero eso es facil aqui te dejo el pseudocodigo pongo el using namespace std; porque utilizo el devc-++ bueno espero que te sirva esta con el menu :
ojo el ingreso esta implementado con numeros aleatorios , siempre hay que innovar en programacion , lo ves en opcion de mostrar , hay un insertar por posicion , espero que lo emplees bien , saludos:



#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#define Max 12000
#define TOPE 1000
#define randomize (srand(time(0)))
#define random(num) (rand()%(num))
using namespace std;

int Menu();
void leerVector(int X[Max],int *dimX);
void mostrarVector(int X[Max],int dimX);
void insertarxPosic(int X[Max],int *dimX,int posi,int dato);
void eliminarxPosic(int X[Max],int *dimX,int posi);
void ordenarxBurbuja(int X[Max],int *dimX);
int main()
{
int opcion,A[Max],na;
do{
opcion=Menu();
switch(opcion){
case 1: {
system("cls");
printf("\n*Rutina de lectura*\n\n");
leerVector(A,&na);
system("pause");
system("cls");
break;
}
case 2: {
system("cls");
printf("\n*Mostrando el Vector Generado*\n\n");
mostrarVector(A,na);
printf("\n\n");
system("pause");
system("cls");
break;
}
case 3: {
system("cls");
int d,pos,p;
printf("\n*Insercion de un elemento por posicion*");
cout<<"\n\nIngresar el dato a insertar [0,999] : ";
cin>>d;
cout<<"Ingresar la posicion a insertar : ";
cin>>p;
pos=p-1;
insertarxPosic(A,&na,pos,d);
printf("\n\n");
system("pause");
system("cls");
break;
}
case 4: {
system("cls");
int ps,pp;
printf("\n*Eliminacion de un elemento por posicion*");
cout<<"\n\nIngresar la posicion del dato que desea eliminar: ";
cin>>ps;
eliminarxPosic(A,&na,ps);
printf("\n\n");
system("pause");
system("cls");
break;
case 5: {
system("cls");
printf("\n*Ordenamiento por burbuja*\n\n");
ordenarxBurbuja(A,&na);
printf("\n\n");
system("pause");
system("cls");
break;
}
}
}
}while(opcion != 0);


return(0);
}

int Menu()
{
int op;

printf(" M E N U \n\n");
printf(" 0. Terminar \n");
printf(" 1. LeerVector \n");
printf(" 2. MostrarVector \n");
printf(" 3. InsertarxPosic \n");
printf(" 4. EliminarxPosic \n");
printf(" 5. ORDENARX BURBUJA \n");
do{
printf("Digite su opcion ---> ");
scanf("%d",&op);
}while(op<0 || op>5);
return(op);
}

void leerVector(int X[Max],int *dimX)
{
int n,i,val;
randomize;
printf("Ingrese la dimension de su vector: ");
cin>>n;
if(n<Max){
for(i=0;i<n;){
val=random(TOPE);
X[i]=val;
i=i+1;
}
*dimX=n;
printf("\n...Rutina de Lectura de Numeros Aleatorios Completada...\n\n");
}else{
printf("Dimension fuera de Rango...\n\n");
}
}

void mostrarVector(int X[Max],int dimX)
{
int i,val;
for(i=0;i<dimX;){
val=X[i];
if(i!=0){
if(i%20==0){
printf("\n");
}
}
printf("%3d ",val);
i=i+1;
}
}

void insertarxPosic(int X[Max],int *dimX,int posi,int dato)
{
int i,N;
N=*dimX;
N=N+1;
i=N;
if(i<Max&&posi<N){
while(i>posi){
X[i]=X[i-1];
i=i-1;
}
X[posi]=dato;
*dimX=N;
printf("\n%d INSERTADO en posicion %d\n\n",dato,posi+1);
mostrarVector(X,*dimX);
}else{
printf("Dimension o Posicion fuera de Rango\n");
}
}

void eliminarxPosic(int X[Max],int *dimX,int posi)
{
int i,N;
N=*dimX;
if(posi<N){
printf("\n%d ha sido ELIMINADO de posicion %d\n\n",X[posi-1],posi);
i=posi-1;
while(i<*dimX){
X[i]=X[i+1];
i=i+1;
}
*dimX=*dimX-1;
mostrarVector(X,*dimX);
}else{
if(posi==N){
printf("\n%d ha sido ELIMINADO de posicion %d\n\n",X[posi-1],posi);
*dimX=*dimX-1;
mostrarVector(X,*dimX);
}else{
printf("...Posicion fuera de Rango...");
}
}
}
void ordenarxBurbuja(int X[Max],int *dimX)
{
int i,j,aux,Np=*dimX-1;
long ini,fin;
ini = clock();
for(i=1;i<=Np;i++){
for(j=Np;j>=1;j--){
if(X[j-1]>X[j]){
aux=X[j-1];
X[j-1]=X[j];
X[j]=aux;
}
}
}
mostrarVector(X,*dimX);
fin=clock();
printf("\n\ntiempo de proceso %ld ",fin-ini);
printf("\ntiempo en segundos %f\n\n",(fin-ini)/(float)CLOCKS_PER_SEC);
}

AGRADECER NO CUESTA NADA


Lh: Utiliza las etiquetas GeShi para poner código.

Garfield07

Bueno espero no ofender a nadie, pero...
1. Ese codigo no es para un examen final. Que mal vamos por las unis :-(
2. Para lo que tenias hecho, que apenas es nada, te recuerdo que aqui no se hacen tareas. Yo no te habria respondido.
3. Nada de minusculas, por favor.
4. Bien puedes dar gracias porque me parece que yo no lo habria hecho.

Espero no haberte ofendido, pero...


* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo

Oblivi0n

¿Estas en una ingenieria (supongo), y para un examen final, andas pidiendo codigos por foros? Asi serán nuestros futuros Ingenieros, no os metais donde no os llaman...

Sagrini, llevas toda la razon, yo no le habría respondido ni nada.

ANTÓN RAMIREZ

Bueno lamento haber ofendido a alguien no quise hacer tareas , en realidad no sabia las reglas del juego ok , tienen razon nada de tareas , vamos hacer futuros ingenieros , para mi lo ideal seria intercambiar informacion no pedir que te hagan la tarea , los algoritmos son para analizar su solucion y una mejora eficaz , bueno ya entendi el mensaje , gracias

Garfield07

Bueno Anton, no pasa nada. Se mo olvido añadir que tu ayuda ha sido muy voluntaria y generosa, no es un error. El error podria estar en que la informacion que le has dado ha sido incorrecta, más que incorrecta, excesiva. Deberia haber sido una idea, no un codigo.

Aun asi aqui se puede ayudar y echar una mano si quieres, esto es libre.
Al fin la intencion era correcta.


* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo