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

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  tengo un problema conestructuras con arreglos !!!!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: tengo un problema conestructuras con arreglos !!!!  (Leído 2,093 veces)
matrixsystem

Desconectado Desconectado

Mensajes: 3


Ver Perfil
tengo un problema conestructuras con arreglos !!!!
« en: 11 Diciembre 2015, 22:35 pm »

lo que pasa es que tengo que hacer un programa que me imprima  un numero un nombre y otro numero las veces que el usuario desee  lo estoy haciendo con estructura peor no me sale y  no se cual es mi error se supone que todo esta bien este es mi codigo  el programa se debe de detenr hasta que el usuario ponga en los datos ingrados un 0 en cada dato   
ESPERO QUE ME AYUDEN !!!!

#include<conio.h>
#include<stdio.h>
#include <stdlib.h>



struct matrix_x{   
   int kick;
   int kick2;
   char nombre[10];
   struct  matrix_x *psiguiente;
};
struct matrix_x *pprimero;
  struct  matrix_x *pultimo;
 
 
  int i=0;
 
 void insertar (int dato ,char nombre[   ] ,int codigo)
  {
   
      struct  matrix_x * paux  ;
   paux=(struct matrix_x*)malloc(sizeof (struct  matrix_x));   
if (paux==NULL)
      {
         
      printf("error en la memoria ");
         }
      else
      {
   
         paux->kick  =dato;
         paux->kick2 = codigo;
      paux->nombre=nombre;
   paux->psiguiente =NULL;
if (pprimero==NULL)
{
   pprimero=paux;
        pultimo=paux;
   
}
else
{
   
   pultimo->psiguiente =paux;
   pultimo=paux;
}
         }
      
         i++;
      }
      
      
      void mostrar ()
      {
         
         
         struct matrix_x *aux;
         aux=(struct matrix_x*)malloc(sizeof (struct  matrix_x));   
         aux=pprimero;
         int i=0;
         while (aux!=NULL){

         printf ("\n dato___%d       codigo___%d  ",aux->kick,aux->kick2);
              fflush(stdin);
            printf ("\n  nombre %s    ",aux->nombre);
               fflush(stdin);
            aux=aux->psiguiente;
i++;      
         }
         }
      
      int main()
      {
         
         int cx=0;
         int dato,codigo;
   char  nombre[10];
         printf ("introduzca cero para ocntinuar\n ");
         while(dato!=0 && codigo!=0 && nombre!=0)
         {
         
            fflush(stdin);
            printf ("dame dato_%d____",cx);
      scanf ("%d",&dato);
                     printf ("dame codigo_%d___",cx);
      scanf ("%d",&codigo );
               printf ("dame nombre _%d___",cx);
               fflush(stdin);
         scanf ("%s",&nombre[cx] );
            insertar(dato,nombre,codigo);
         cx=cx+1;
            }
         mostrar();
         printf ("haz salido del programa");
         
         
      }


En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: tengo un problema conestructuras con arreglos !!!!
« Respuesta #1 en: 12 Diciembre 2015, 22:25 pm »

Muy buenas.

Código
  1. #include<conio.h>
  2. // conio.h no es una libreria estandar y no funcionara en todos los compiladores.
  3. // ademas no usas ninguna de sus funciones.
  4. #include<stdio.h>
  5. #include <stdlib.h>
  6.  
  7. struct matrix_x {  
  8. int kick;
  9. int kick2;
  10. char nombre[10];
  11. struct  matrix_x *psiguiente;
  12. };
  13.  
  14. struct matrix_x *pprimero;
  15. struct matrix_x *pultimo;
  16. int i = 0; // Una variable global que no usas
  17.  
  18. void insertar (int dato, char nombre[], int codigo) {
  19.  
  20. struct  matrix_x * paux;
  21.  
  22. paux = (struct matrix_x*)malloc(sizeof(struct  matrix_x));  
  23.  
  24. if(paux == NULL)
  25. {        
  26. printf("error en la memoria ");
  27. }
  28. else
  29. {
  30. paux->kick = dato;
  31. paux->kick2 = codigo;
  32. paux->nombre = nombre; // Debes los datos, no la direccion de los datos -> strncpy(paux->nombre, nombre, 10);
  33. paux->psiguiente = NULL;
  34.  
  35. if (pprimero == NULL)
  36. {
  37. pprimero = paux;
  38. pultimo = paux;  
  39. }
  40. else
  41. {
  42. pultimo->psiguiente = paux;
  43. pultimo = paux;
  44. }
  45. }
  46. i++;
  47. }
  48.  
  49. void mostrar () {
  50. struct matrix_x *aux;
  51. aux = (struct matrix_x*)malloc(sizeof (struct  matrix_x)); // Esta linea no la necesitas
  52. aux = pprimero; // pues aqui haces que aux apunte a pprimero abandonado la memoria apuntada anteriormente. Malo porque hay memoria asignada que no podras recuperar.
  53. int i = 0; // ocultas la variable i global
  54. while (aux != NULL){
  55. printf ("\n dato___%d       codigo___%d  ",aux->kick,aux->kick2);
  56. fflush(stdin); // fflush espera un flujo de salida. Esto no funcionara en todos los compiladores o SS.OO.
  57. printf ("\n  nombre %s",aux->nombre);
  58. fflush(stdin); // otra vez el mal uso de fflush
  59. aux = aux->psiguiente;
  60. i++; // incrementas i local, pero no la usas
  61. }
  62. }
  63.  
  64. int main() {
  65. int cx = 0;
  66. int dato, codigo;
  67. char  nombre[10];
  68. printf("Introduzca cero para continuar\n"); //
  69. while(dato != 0 && codigo != 0 && nombre != 0) {
  70. fflush(stdin); // otra vez el mal uso de fflush
  71. printf ("dame dato_%d____",cx);
  72. scanf ("%d",&dato);
  73. printf ("dame codigo_%d___",cx);
  74. scanf ("%d",&codigo );
  75. printf ("dame nombre _%d___",cx);
  76. fflush(stdin); // otra vez el mal uso de fflush
  77. scanf ("%s",&nombre[cx] ); // varios fallos aquí -> scanf("%s", nombre);
  78. insertar(dato,nombre,codigo);
  79. cx=cx+1; // mas correcto usar ++cx. Por otra parte enganas al usuario, pues aunque insertar falle
  80. // al adquirir memoria con malloc y no introduzca el dato, incrementas cx sin que el dato
  81. // anterior se haya introducido, falseando asi el numero de datos introducidos.
  82. }
  83. mostrar();
  84. printf ("has salido del programa");
  85. // deberias incluir una función para liberar la memoria
  86. // que has adquirido con cada uno de los malloc en insertar.
  87.  
  88. // main debe devolver un valor: el S.O. espera que devuelva 0 si el programa ha terminado con exito.
  89. }


En línea

matrixsystem

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: tengo un problema conestructuras con arreglos !!!!
« Respuesta #2 en: 15 Diciembre 2015, 06:39 am »

 :D vaya gracias me has ayudado con mi problema te lo agradezco ya decia yo jjaja si apenas empiezo pero esta bien que buen que es que bueno  personas que saben mas que yo muchas gracias
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
problema de medioprincipiante usando arreglos n.nU
Programación C/C++
Zerus- 8 5,025 Último mensaje 21 Septiembre 2010, 03:24 am
por Zerus-
[Solucionado]Problema con rand() y arreglos.
Programación C/C++
GROV 2 3,450 Último mensaje 16 Julio 2012, 21:32 pm
por GROV
problema java con arreglos
Java
cracken422 1 2,002 Último mensaje 7 Agosto 2012, 22:10 pm
por h3ct0r
Problema al crear arreglos de objetos en C++
Programación C/C++
DarkSorcerer 2 8,019 Último mensaje 15 Septiembre 2013, 19:05 pm
por dato000
Ayuda con un problema de arreglos en C.
Programación C/C++
noidroid 1 2,037 Último mensaje 26 Noviembre 2013, 06:04 am
por ThePinkPanther
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines