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

Diseño de Algoritmos en C++ con Menu

Estas en el tema de Diseño de Algoritmos en C++ con Menu en el foro de C/C++ en Foros del Web. Medir longitud de una cadena Convertir de minúsculas a mayúsculas una cadena Verificar si los elementos de una cadena contiene dígitos Ordenar números de mayor ...
  #1 (permalink)  
Antiguo 22/03/2011, 12:38
 
Fecha de Ingreso: marzo-2011
Mensajes: 3
Antigüedad: 13 años, 1 mes
Puntos: 0
Diseño de Algoritmos en C++ con Menu

Medir longitud de una cadena

Convertir de minúsculas a mayúsculas una cadena

Verificar si los elementos de una cadena contiene dígitos

Ordenar números de mayor a menor / menor a mayor (debe ser seleccionado por un menu)

Calcular la pendiente de una recta dados dos puntos.

Generar los puntos de un cilindro de Radio r, y Altura h almacenarlo en un arreglo de 3 dimensiones

Convertir de cadena a entero

No debe usar las funciones ya existentes en C++, debe desarrollarse el código para cada algoritmo

Debe utilizar un menú de opciones de manera que al seleccionar la opción Salir se finalice la aplicación


Alguien que pudiera ofrecerme el codigo completo de lo que se pide? Se que no es la mejor forma de aprender C++, pero lo necesito urgentemente. Muchas Gracias.
  #2 (permalink)  
Antiguo 24/03/2011, 04:57
 
Fecha de Ingreso: febrero-2011
Ubicación: Paraguay
Mensajes: 59
Antigüedad: 13 años, 2 meses
Puntos: 1
Respuesta: Diseño de Algoritmos en C++ con Menu

Tienes que intentar de hacerlo primero y después vemos de ayudarte en base al código que tienes..
  #3 (permalink)  
Antiguo 24/03/2011, 11:24
 
Fecha de Ingreso: marzo-2011
Mensajes: 3
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Diseño de Algoritmos en C++ con Menu

Bueno pues ya lo hice, ahora solo falta limpiarlo un poco y optimizarlo, alguna idea o sugerencia que me pudieran brindar? Sobre todo en la funcion del cilindro ya que quisiera que me mostrara los puntos en base a su eje X, Y, Z pero lo muestra todo junto.

Código:
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <conio.h>
using namespace std;
int opcion, a;
int m,i,b,c,k,j;
char pollo[9999], gallina[9999], pollito[9999]; 
int main(){
//Mostrando el menu
//while (a==0)
cout<<"v0.0.1\n\n\n";
cout<<"Veamos que tenemos por aqui:\n\n";
cout<<"1.- Midamos la longitud de una cadena :D"<<"\n";
cout<<"2.- Mejor convirtamos una cadena de minusculas a minusculas"<<"\n";
cout<<"3.- No, verifiquemos si los elementos de una cadena tienen digitos ;)"<<"\n";
cout<<"4.- Ordenar numeros de mayor a menor o visceversa"<<"\n";
cout<<"5.- Calculemos la pendiente de una recta"<<"\n";
cout<<"6.- Veamos los puntos de un cilindro"<<"\n";
cout<<"7.- Convirtamos cadenas a enteros"<<"\n";
cout<<"8.- Salgamos a jugar WoW\n\n"<<"\n";
cout<<"La opcion es: ";cin>>opcion;
switch(opcion){
case 1:
system("CLS");
cout<<"Ingresa la cadena de texto (maximo 9999 caracteres):\n\n";
cin.getline(pollo,9999);
cin.getline(pollo,9999);
i=0;
b=0;
while (pollo[i]!='\0'){
i++;
b++;}
cout<<"\nLa cadena que escribiste contiene...."<<b<<" caracteres\n\n";
system("PAUSE");
break;
case 2:
system("CLS");
cout<<"Escribe en Mayusculas o Minusculas:\n\n";
cin>>pollo;
i=0;
while (pollo[i]!='\0'){
i++;}
for(c=0;c<i;c++){
if(pollo[c]>96){
pollo[c]=pollo[c]-32;}
else(pollo[c]=pollo[c]+32);
}
for(c=0;c<i;c++){
if(pollo[c]==64){
pollo[c]=pollo[c]-32;}
}
cout<<"\n"<<pollo<<"\n";
system("PAUSE");
break;
case 3:
system("CLS");
cout<<"Escribe cualquier tipo de texto, vamos a identificar cuales son numeros:\n\n";
cin>>pollo;
for(i=0;i<100;i++){
if(pollo[i]=='0'||pollo[i]=='1'||pollo[i]=='2'||pollo[i]=='3'||pollo[i]=='4'||pollo[i]=='5'||pollo[i]=='6'||pollo[i]=='7'||pollo[i]=='8'||pollo[i]=='9')
cout<<"\nLa cadena tiene numeros\n\n";
else
cout<<"\nLa cadena carece de numeros en el primer digito\n\n";
system("PAUSE");
break;
case 4:
system("CLS");
int n,i,j,A[50],aux;
cout<<"Ingrese la Cantidad de Numeros a Ingresar: ";
cin>>n;
for(i=1;i<=n;i++)
{
cout<<"Numero "<<i<<" :";
cin>>A[i];
}
for(i=1;i<=n-1;i++)
{
for(j=1;j<=n-1;j++)
{
if(A[j]>A[j+1])
{
aux=A[j];
A[j]=A[j+1];
A[j+1]=aux;
}
}
}
cout << "Menor a Mayor: \n";
for(i=1;i<=n;i++)
{
cout<<"-"<<A[i]<<"\n";
}
cout << "Mayor a Menor: \n";
for(i=n;i>=1;i--)
{
cout<<"-"<<A[i]<<"\n";
}
system("PAUSE");
break;
case 5:
system("CLS");
double x1, x2, y1, y2, m1;
m=0;
cout<<"Da los puntos de (x1,y1):\n\n";
cout<<"Ingresa el valor de x\n";
cin>> x1;
cout<<"Ingresa el valor de y\n";
cin>> y1;
cout<<"Ingresa el valor de x2\n";
cin>>x2;
cout<<"Ingresa el valor de y2:\n";
cin>>y2;
m1=(y2-y1)/(x2-x1);
cout<<"La pendiente de los puntos ("<<x1<<", "<<y1<<") "<<"y ("<<x2<<", "<<y2<<")"<<" es: \n\n"<<m1<<"\n\n";
system("PAUSE");
break;
case 6:
system("CLS");
cout<<"Vamos a ver los puntos de un cilindro, da los datos que se te piden..\n";
{
float r, altura, arreglo[8][8][3], x, y, z, aux, aux2;
float pi = 3.14159;
cout<< "\nEscribe la altura:"<<endl;
cin>>altura;
cout<< "\nEscribe el radio:"<<endl;
cin>>r;
cout<<"\n";
aux= altura/8;
aux2=aux;
cout<<"Los puntos obtenidos son los siguientes:\n";
for(i=0; i<8; i++){
z=aux;
aux=aux+aux2;
for(k=0; k<8; k++){			
x=r*cos((k*360/8) * (pi/180));
y=r*sin((k*360/8) * (pi/180));			
arreglo[i][k][0]= x;
arreglo[i][k][1]= y;
arreglo[i][k][2]= z;
cout<<arreglo[i][k][0]<<", ";
cout<<arreglo[i][k][1]<<", ";
cout<<arreglo[i][k][2]<<"\n"<<endl;
}
}
_getch();
}
break;
case 7:
system("CLS");
cout<<"Convertiremos una cadena a entero de manera automatica (Ingresa numeros con decimales):\n\n";
cin.getline(gallina,9999);
cin.getline(gallina,9999);
m=0;
while(gallina[m]!='\0'){
if(gallina[m]>='0'&&gallina[m]<='9'){
pollito[m]=gallina[m];
m++;
}
else{
break;
}
}
pollito[m]='\0';
if(m>0)

cout<<pollito<<"\n";
else
cout<<"Error...\n";
_getch();
system("PAUSE");
break;
case 8:
system("CLS");
cout<<"\t\t\tChao que te vaya bien...";
_getch();
break;
default:
cout<<"Ahi estan las opciones, presiona las teclas correctas...Adios";
system("PAUSE");
}
}
}

Última edición por Dark_Mike; 24/03/2011 a las 11:25 Razón: Borrar datos personales
  #4 (permalink)  
Antiguo 29/03/2011, 08:28
 
Fecha de Ingreso: febrero-2011
Ubicación: Paraguay
Mensajes: 59
Antigüedad: 13 años, 2 meses
Puntos: 1
Respuesta: Diseño de Algoritmos en C++ con Menu

Algunas optimizaciones podrían ser:
1) El primer while que tienes puedes poner la condición
Código C:
Ver original
  1. while (!a)
que es lo mismo que
Código C:
Ver original
  1. while (a == 0)
.
2) Porque haces 2 veces
Código C:
Ver original
  1. cin.getline(pollo,9999);
??
3) Lo mismo que el primero, puedes reemplazar
Código C:
Ver original
  1. while (pollo[i]!='\0')
por
Código C:
Ver original
  1. while (!pollo[i])
en cada una de las veces que lo usas.
4) En las operaciones de la forma
Código C:
Ver original
  1. pollo[c]=pollo[c]-32;
puedes usar
Código C:
Ver original
  1. pollo[c] -= 32;
y es lo mismo y más corto.

Eso es a grandes rasgos, no lo puedo mirar tan detallado por falta de tiempo pero un consejo más sería que lo modularices un poco, ya que así puedes hacer el código más mantenible, entiendes??
Un saludo

Etiquetas: algoritmos, diseño
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 06:25.