Parece que no eres usuario registrado de Zona Beta. Regístrate haciendo click aquí!







Foros de Zona Beta » Zona de Software » Soporte Software » help!.. SoS :D.. ayudita a problemade C

Tags: ,

Respuesta
tcat left
help!.. SoS :D.. ayudita a problemade C
vBmenu Seperating Image Herramientas vBmenu Seperating Image Desplegado tcat right
Antiguo 09-07-2008, 04:57:25   #1
 
Cargo: Zonabetero Honorario
Fecha de Ingreso: Mar 2008
Mensajes: 89
Predeterminado help!.. SoS :D.. ayudita a problemade C
holas mis amigos!.. harto rato sin conectarme por estos lugares... bueno, el estudio la mina y todo no dejan ya mucho tiempo para el pc :S

bueno, traigo una duda, mas que duda es que me ayuden... no doy como lograr este ejercicio :/..

miren el encabezado es el siguiente:

-crear un codigo en donde el usuario ingrese 10 numeros, el cual el usuario podra elejir si ordenarlos en forma cresiente o descendente.-

Bueno, miren, la otra vez la profe pidio algo parecido, pero no eran 10 numeros, sino que 3 numeros, lo cual es mas facil hacer que se ordenen...

el codigo del trabajo anterior es este:

Código:
#include <stdio.h>
#include <conio.h>
#include <math.h>
int n1,n2,n3,n4,mayor,medio,menor,orden;
char cont;
main()
{
do{
orden=3;
while (orden!=1 && orden !=2){
clrscr();
printf("\n\nIngrese Opci¢n, si quire que sus numeros se  ordenen en forma:\n\n");
printf("\n\n\n\t\t\tIngrese Opci¢n, \"1  o  2\"\n\n");
printf("\n\n\t\t\t----------Menu----------\n\n\n\n\t\t\t1)Decreciente\n\n\t\t\t2)Creciente\n\n");
scanf("%d",&orden);
}
printf("\nEscriba sus numeros para ordenarlos\t\n\n\n");
printf("\n\n\n\nEscriba su primer digito\t\t\t");
scanf("%d",&n1);

mayor=n1;
while(n1<=0 || n1>=10)
{
	printf("\n\nIngrese numeros solo del 1 al 9\t\t");
	printf("\n\nIngrese su Digito\t\t");
	scanf("%d",&n1);
}
printf("\n\nEscriba su segundo digito\t");
scanf("%d",&n2);
while(n2<=0 || n2>=10)
{
	printf("\n\nIngrese numeros solo del 1 al 9\t\t");
	printf("\n\nIngrese su Digito\t\t");
	scanf("%d",&n2);
}
if (n1>n2){ medio=n2;}
else{ mayor=n2; medio=n1;}
printf("\n\nEscriba su tercer digito\t");
scanf("%d",&n3);
while(n3<=0 || n3>=10)
{
	printf("\n\nIngrese numeros solo del 1 al 9\t\t");
	printf("\n\nIngrese su Digito\t\t");
	scanf("%d",&n3);
}
if (n3>mayor){ menor=medio;medio=mayor;mayor=n3;
	if(orden==1){ printf("\n\nSus numeros son\t\t%d,%d,%d",mayor,medio,menor);}
	if(orden==2){printf("\n\nSus numeros son\t\t%d,%d,%d",menor,medio,mayor);}}
else if (n3>medio){menor=medio;medio=n3;

	if(orden==1){printf("\n\nSus numeros son\t\t%d,%d,%d",mayor,medio,menor);}
	if(orden==2){printf("\n\nSus numeros son\t\t%d,%d,%d",menor,medio,mayor);}}
	else{menor=n3;
	if(orden==1){printf("\n\nSus numeros son\t\t%d,%d,%d",mayor,medio,menor);}
	if(orden==2){printf("\n\nSus numeros son\t\t%d,%d,%d",menor,medio,mayor);}}

printf ("\n desea calcular otro valor S/N");
cont= getch();
}while (cont=='s' || cont=='S');
return 0;
}
y esop... nose si alguien fuese amable de indicarme como hago para que en vez de 3 numeros ingrese 10 y loos ordene bien...

saludos! espero me puedan dar una mano
__________________
Mira mis Aportes...
Si te gusto/sirvio mi aporte, haz click en y te lo agradeceré....
teba is offline     Responder Con Cita

Antiguo 18-07-2008, 10:49:46   #2
 
Avatar de coberr
 
Cargo: Staff Zona Beta
Fecha de Ingreso: Jan 2008
Mensajes: 184
Predeterminado Re: help!.. SoS :D.. ayudita a problemade C
Os han enseñado arrays (vectores)?

Si la respuesta es que sí se puede hacer de una forma mucho más rápida y sencilla.

Espero tu respuesta... ;D
__________________
.::. coberr .::.



¿Qué te cuesta leer las reglas?
coberr is offline     Responder Con Cita
Antiguo 18-07-2008, 17:46:42   #3
 
Avatar de Beto_Klavier
 
Cargo: Administrador
Fecha de Ingreso: Jan 2008
Mensajes: 382
Predeterminado Re: help!.. SoS :D.. ayudita a problemade C
Existen varios métodos de ordenación:
Busca en google bubble sort, quicksort, etc...
En algunas páginas ya te dan el código hecho, y sí, como dijeron antes, debes trabajarlo con vectores!
__________________
Beto_Klavier

Beto_Klavier is offline     Responder Con Cita
Antiguo 21-07-2008, 16:06:13   #4
 
Avatar de coberr
 
Cargo: Staff Zona Beta
Fecha de Ingreso: Jan 2008
Mensajes: 184
Arrow Re: help!.. SoS :D.. ayudita a problemade C
Cita:
Empezado por Beto_Klavier Ver Mensaje
Existen varios métodos de ordenación:
Busca en google bubble sort, quicksort, etc...
En algunas páginas ya te dan el código hecho, y sí, como dijeron antes, debes trabajarlo con vectores!
Tienes toda la razón del mundo Beto, pero tengo la impresión (quizás errónea) de que la profe de Teba les quiere hacer programar el algoritmo y que lo hagan ellos antes de enseñarles los métodos de ordenación.

Por partes:

1º librerias a incluir: stdio.h y stdlib.h.
La conio.h y la math.h ahora no las necesitas y eso es código que se pega a tu programa en la precompilación y que no lo necesitas. Información sobre las funciones de las distintas librerías aquí.

2º Dentro de la función main definimos el array, que supondremos de números enteros ya que no nos exigen un tipo de dato especial:
Código:
#include <stdio.h>
#include <stdlib.h>

int main (void) {
  int numeros[10];                                          /* Array (vector) de 10 números enteros a leer desde teclado */
  int i, j, aux=0;                            /* Otras variables enteras que utilizaremos: dos contadores y un auxiliar */
···
3º Vamos a leer del teclado los 10 números que introduce el usuario. Para ello usaremos un bucle FOR.
Código:
···
  for (i=0; i<10; i++) {                                 /* Los arrays comienzan en CERO: numeros[0] = 1er elemento */
     printf("Introduzca el elemento nº %d: ",i+1);
     scanf("%d",numeros[i]);
  }
···
Ahora ya tenemos cargado el array, y podemos realizar el proceso de ordenación. También lo podríamos haber ordenado mientras cargábamos el array, pero eso te lo propongo como ejercicio avanzado, je, je, je...

Para ordenar vamos a ir comparando cada elemento con los que tiene por delante y recolocándolos por el método llamado de la burbuja. para ello se emplea un doble bucle, donde el más externo hace el recorrido de todo el array completo salvo el último elemento y el interno progresivamente desde el del contador externo +1 hasta el último. Lo que queremos es que si el elemento en la posición "i" es mayor que el elemento en la "j" los cambiamos de posición para una ordenación decreciente.

Código:
···
  for (i=0; i<9; i++) {                                 
     for (j=i+1; j<10; j++) {                        

        if (numeros[i] > numeros[j]) {         /* Ordenación decreciente */
           aux = numeros[i];                        
           numeros[i] = numeros[j];             /* Intercambio elementos "i" y "j" */
           numeros[j] = aux;
        }
        
     }
  }
  
  return(0);
}                                  /* Fin de main*/
Veamos, este código lo acabo de hacer ahora a "bote pronto". Está sin compilar y sin probar; además de que faltaría la parte de preguntar al usuario como quiere realizar la ordenación y realizar la ordenación creciente. Para ello bastaría incluir otra variable e introducir otra condición IF para ordenar según quiere el usuario, es decir, si el usuario quiere descendiente:

Código:
···
if ( ordena == 1 && numeros[i] > numeros[j]) { 
···
Espero haber sido de ayuda.

Salu2,
__________________
.::. coberr .::.



¿Qué te cuesta leer las reglas?
coberr is offline     Responder Con Cita
Antiguo 21-07-2008, 19:58:17   #5
 
Avatar de Beto_Klavier
 
Cargo: Administrador
Fecha de Ingreso: Jan 2008
Mensajes: 382
Smile Re: help!.. SoS :D.. ayudita a problemade C
JAJAJa, de todas maneras saliste usando el bubblesort.
La implementación completa de esto algoritmos están en internet. Sería bueno que los vayas entendiendo!

Un saludo a todos!
__________________
Beto_Klavier

Beto_Klavier is offline     Responder Con Cita
Antiguo 23-07-2008, 13:51:00   #6
 
Avatar de coberr
 
Cargo: Staff Zona Beta
Fecha de Ingreso: Jan 2008
Mensajes: 184
Predeterminado Re: help!.. SoS :D.. ayudita a problemade C
Si, razón tienes y más que un santo.

En el otro correo no me supe expresar bien.

Conozco los métodos de ordenación y los habré implementado...., pero para personas que aprenden considero que tampoco se puede decir busca aquí y copia.

Mi primera intención era haber desarrolladolaordenación según el usuario introduce los datos, pero después consideré que esto era más formativo y además mejor método de resolver el problema.

Cómo va ese verano?
__________________
.::. coberr .::.



¿Qué te cuesta leer las reglas?

Última edición por coberr fecha: 23-07-2008 a las 22:29:08.
coberr is offline     Responder Con Cita
Respuesta


Herramientas
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Trackbacks are habilitado
Pingbacks are habilitado
Refbacks are deshabilitado

Potenciado por vBulletin® Copyright ©2000 - 2007,
Diseño por CompletevB
Zona Beta es otro proyecto de Larva Internet