elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda con este pequeño programa en c
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con este pequeño programa en c  (Leído 2,072 veces)
Chupakabras

Desconectado Desconectado

Mensajes: 2



Ver Perfil
Ayuda con este pequeño programa en c
« en: 27 Mayo 2015, 08:02 am »

Hola, disculpen si no me conocen pues recién me uní al foro.
Para no hacer muy largo el mensaje pues resumiré diciendo que estoy estudiando electrónica y estoy cursando programación (aunque en 2 semanas termina el semestre). Sin embargo desde que entramos a arreglos he tenido ciertos problemas para entender y problemas en mis programas, lo de entender lo resolví más o menos estudiando pero mis programas fallan mucho por cosas que de plano no entiendo o no encuentro error. Este es el programa que necesito corregir:


Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int main()
  6. {
  7. int temp;
  8. int sp, p, can, i;
  9. int * datos=NULL;
  10. char cambios;
  11.  
  12. printf("Intruduce la cantidad de datos que deseas introducir: "), scanf("%i", &can);
  13. datos =(malloc (can * sizeof(int)));
  14. for (i=1; i<=can; i++)
  15. {
  16. printf("Introduce un dato: "), scanf("%i", datos[i-1]);
  17. }
  18.  
  19. do
  20. {
  21. for(p=0, sp=p+1, cambios='n'; p<=(can-1); p++)
  22. {
  23. temp=datos[p];
  24. datos[p]= datos[sp];
  25. datos[sp]=temp;
  26. cambios='s';
  27. }
  28.  
  29. } while (cambios=='s');
  30.  
  31. for(i=1; i<=can; i++)
  32. {
  33. printf("\n%i", datos[i-1]);
  34. }
  35.  
  36.  
  37. return 0;
  38. }

El problema es que originalmente me decía que no podía convertir un valor void a int pero era debido a que por error lo guardé como c++ y no como c, al cambiarlo se resolvió pero surgió el problema de que cuando lo corro despues de ingresar el número de dígitos que quiero utilizar e ingreso los dígitos el programa deja de funcionar y no encuentro por que. El programa, en teoría, debería dejar que uno introduzca la cantidad de dígitos que quiera y posteriormente introducir los respectivos dígitos; despues bebería organizarlos en el vector horizontal los dígitos de menor a mayor para que si digo que quiero 3 dígitos e introduzco 3, 7 y 1 deberían terminar como 1, 3 y 7 en el arreglo.
Perdón si mi petición tiene un formato muy simple pero la verdad hace tiempo que no entro a los foros y estoy algo oxidado en darles formato jaja.

Mod: Código corregido con etiquetas GeSHi para hacerlo más legible


« Última modificación: 27 Mayo 2015, 08:26 am por engel lex » En línea

crack81

Desconectado Desconectado

Mensajes: 222



Ver Perfil
Re: Ayuda con este pequeño programa en c
« Respuesta #1 en: 27 Mayo 2015, 21:56 pm »

Bueno de entrada te conviene darle una revisada a los metodos de ordenacion para que te des una idea su funcionamiento y entiedas las distintas formas de implementacion como su uso, cuando usar uno y cuanod no.

link metodos ordenacion:http://www.c.conclase.net/orden/

Respecto a tu pregunta he implementado un codigo que utiliza el metodo de ordenacion burbuja que aunque es el mas ineficiente es el mas sencillo de aplicar y entender.


te dejo esta version
Código
  1. #include <stdio.h>
  2.  
  3. void ordernarPorBurbuja(int *lista,int TAM){
  4.  
  5.   int i,j;
  6.   int temp;  
  7.  
  8.   for (i=1; i<TAM; i++){
  9.      for(j=0; j<TAM - 1; j++){
  10.          if (lista[j] > lista[j+1]){
  11.             temp = lista[j];
  12.             lista[j] = lista[j+1];
  13.             lista[j+1] = temp;
  14.          }
  15.      }
  16.   }
  17.  
  18. }
  19.  
  20. int main()
  21. {
  22.  
  23.    int tam,i,valor;
  24.    int *datos;
  25.  
  26.    printf("Introduce la cantidad de valores a introducir: ");
  27.    scanf("%d",&tam);
  28.  
  29.    datos=malloc(tam*sizeof(int));
  30.  
  31.    for(i=0;i<tam;i++){
  32.       printf("Ingrese el valor #%d\n",i+1);
  33.       scanf("%d",&valor);
  34.       datos[i]=valor;                  
  35.    }
  36.  
  37.    ordernarPorBurbuja(datos,tam);
  38.    printf("\nValores ordenados: \n");  
  39.  
  40.    for(i=0;i<tam;i++){
  41.  
  42.      printf("%d ",datos[i]);
  43.    }
  44.  
  45.  
  46.  
  47.    free(datos);
  48.    getchar();
  49.    getchar();
  50.  return 0;
  51. }
  52.  
Si tienes preguntas no dudes en comentarlas saludos....


En línea

Si C/C++ es el padre de los lenguajes entonces ASM es dios.
Chupakabras

Desconectado Desconectado

Mensajes: 2



Ver Perfil
Re: Ayuda con este pequeño programa en c
« Respuesta #2 en: 29 Mayo 2015, 07:46 am »

Hola perdón por tardar en contestar, esque estamos casi por terminar el semestre y tengo un monton de proyectos, tareas y esas cosas jaja (sin mencionar que tendré 2 examenes en 2 días seguidos para terminar teniendo otro el lunes por lo que no podré disfrutar mucho este fin de semana jaja), pero bueno, siendo honesto no entiendo gran parte del código que me muestras.
La materia es programación estructurada y no nos han mostrado muchas cosas que tu pusiste (no se si sea normal o el profesor no enseño todo lo que debía), por ejm no se que fue lo que declaraste con void al inicio del programa o la estructura que pusiste despues (tengo cierta idea del funcionamiento pero aun así no entiendo muy bien); deja te pongo el código que el profesor había utilizado como ejm. en clase:

Código
  1. [code]#include <stdio.h> /* para printf() y scanf() */
  2. #include <stdlib.h> /* para malloc */
  3. #include <conio.h> /* para getch() */
  4. #include <ctype.h> /* para toupper() */
  5.  
  6. int main(){
  7. /* La siguiente linea tiene la función de declarar (m) para uso dinámica */
  8. int * m = NULL; /* apuntador a m (vector) */
  9. char op;
  10. /********************************************************************/
  11. int columnas, c, p, temp;
  12. _Bool movio;
  13.  
  14. do
  15. {
  16. printf ("Columnas: "); scanf ("%d", &columnas);
  17.  
  18. /* reserva de memoria */
  19. m = malloc(columnas * sizeof(int)); /* Columnas */
  20.  
  21. /* trabajo con m[i] */
  22. for (c=1; c<=columnas; c++)
  23. {
  24. printf("C[%i]= ", c);
  25. scanf("%i", &m[c-1]);
  26. }
  27.  
  28. for (c=1; c<=columnas; c++)
  29. printf("[%3i]", m[c-1]);
  30. puts(": Original\n");
  31.  
  32. /* ordena datos por el método burbuja */
  33. do
  34. {
  35. movio=0;
  36. p=0;
  37. while(p<(columnas-1))
  38. {
  39. if (m[p]>m[p+1])
  40. {
  41. temp=m[p];
  42. m[p]=m[p+1];
  43. m[p+1]=temp;
  44. movio=1;
  45. }
  46. p++;
  47. }
  48. }while(movio);
  49.  
  50. for (c=1; c<=columnas; c++)
  51. printf("[%3i]", m[c-1]);
  52. puts(": Ordenado\n");
  53.  
  54. /* liberación de memoria */
  55. free(m);
  56. m = NULL;
  57.  
  58. puts("\nReingresar nuevos datos (S/N): "), op=getch();
  59. }while (toupper(op)=='S');
  60.  
  61. return 0;
  62. }
[/code]
No se si te sirva para darte una idea de más o menos como es la clase jaja, aun así gracias por contestar y saludos.
pd. gracias al mod también por corregir mi mensaje, intentaré publicar de manera similar de ahora en adelante.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[AYUDA] Pequeño programa de notas « 1 2 »
Java
reeyesg 16 5,915 Último mensaje 6 Mayo 2015, 19:11 pm
por PabloPbl
ayuda!! necesito ayuda con este pequeño codigo en c++
Programación C/C++
giraffe 1 5,451 Último mensaje 27 Mayo 2015, 06:25 am
por engel lex
Ayuda con este pequeño código de funciones logicas
Programación C/C++
hilo 3 2,255 Último mensaje 11 Julio 2016, 21:21 pm
por class_OpenGL
Ayuda con este pequeño bucle
Programación C/C++
TheNorvamp 3 2,357 Último mensaje 23 Septiembre 2016, 19:44 pm
por MAFUS
Ayuda con este pequeño crypter en c#
.NET (C#, VB.NET, ASP)
Borito30 0 1,978 Último mensaje 30 Marzo 2017, 01:31 am
por Borito30
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines