Foros de Zona Beta » Zona de Software » Soporte Software » help!.. SoS :D.. ayudita a problemade C
| Tags: ayuda, programacion |
![]() |
![]() |
help!.. SoS :D.. ayudita a problemade C
|
![]() | Herramientas | ![]() |
Desplegado | ![]() |
|
|
#1 |
|
Cargo: Zonabetero Honorario
Fecha de Ingreso: Mar 2008
Mensajes: 89
|
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;
}
saludos! espero me puedan dar una mano
__________________
Mira mis Aportes... Si te gusto/sirvio mi aporte, haz click en y te lo agradeceré....
|
|
|
|
|
|
#2 |
|
Cargo: Staff Zona Beta
Fecha de Ingreso: Jan 2008
Mensajes: 184
|
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 |
|
|
|
|
|
#3 |
|
Cargo: Administrador
Fecha de Ingreso: Jan 2008
Mensajes: 382
|
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 ![]() |
|
|
|
|
|
#4 | |
|
Cargo: Staff Zona Beta
Fecha de Ingreso: Jan 2008
Mensajes: 184
|
Cita:
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 */
···
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]);
}
···
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*/
Código:
···
if ( ordena == 1 && numeros[i] > numeros[j]) {
···
Salu2, |
|
|
|
|
|
|
#5 |
|
Cargo: Administrador
Fecha de Ingreso: Jan 2008
Mensajes: 382
|
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 ![]() |
|
|
|
|
|
#6 |
|
Cargo: Staff Zona Beta
Fecha de Ingreso: Jan 2008
Mensajes: 184
|
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? Última edición por coberr fecha: 23-07-2008 a las 22:29:08. |
|
|
|
![]() |
| Herramientas | |
| Desplegado | |
|
|
Potenciado por vBulletin® Copyright ©2000 - 2007,
Diseño por CompletevB
Zona Beta es otro proyecto de Larva Internet





y te lo agradeceré....



Mode Lineal
