Autor
|
Tema: tengo un problema conestructuras con arreglos !!!! (Leído 2,339 veces)
|
matrixsystem
Desconectado
Mensajes: 3
|
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
Mensajes: 1.603
|
Muy buenas. #include<conio.h> // conio.h no es una libreria estandar y no funcionara en todos los compiladores. // ademas no usas ninguna de sus funciones. #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; // Una variable global que no usas 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; // Debes los datos, no la direccion de los datos -> strncpy(paux->nombre, nombre, 10); 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 )); // Esta linea no la necesitas aux = pprimero; // pues aqui haces que aux apunte a pprimero abandonado la memoria apuntada anteriormente. Malo porque hay memoria asignada que no podras recuperar. int i = 0; // ocultas la variable i global while (aux != NULL){ printf ("\n dato___%d codigo___%d ",aux ->kick ,aux ->kick2 ); fflush(stdin ); // fflush espera un flujo de salida. Esto no funcionara en todos los compiladores o SS.OO. printf ("\n nombre %s",aux ->nombre ); fflush(stdin ); // otra vez el mal uso de fflush aux = aux->psiguiente; i++; // incrementas i local, pero no la usas } } int main() { int cx = 0; int dato, codigo; char nombre[10]; printf("Introduzca cero para continuar\n"); // while(dato != 0 && codigo != 0 && nombre != 0) { fflush(stdin ); // otra vez el mal uso de fflush printf ("dame dato_%d____",cx ); printf ("dame codigo_%d___",cx ); printf ("dame nombre _%d___",cx ); fflush(stdin ); // otra vez el mal uso de fflush scanf ("%s",&nombre [cx ] ); // varios fallos aquí -> scanf("%s", nombre); insertar(dato,nombre,codigo); cx=cx+1; // mas correcto usar ++cx. Por otra parte enganas al usuario, pues aunque insertar falle // al adquirir memoria con malloc y no introduzca el dato, incrementas cx sin que el dato // anterior se haya introducido, falseando asi el numero de datos introducidos. } mostrar(); printf ("has salido del programa"); // deberias incluir una función para liberar la memoria // que has adquirido con cada uno de los malloc en insertar. // main debe devolver un valor: el S.O. espera que devuelva 0 si el programa ha terminado con exito. }
|
|
|
En línea
|
|
|
|
matrixsystem
Desconectado
Mensajes: 3
|
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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
problema de medioprincipiante usando arreglos n.nU
Programación C/C++
|
Zerus-
|
8
|
5,338
|
21 Septiembre 2010, 03:24 am
por Zerus-
|
|
|
[Solucionado]Problema con rand() y arreglos.
Programación C/C++
|
GROV
|
2
|
3,758
|
16 Julio 2012, 21:32 pm
por GROV
|
|
|
problema java con arreglos
Java
|
cracken422
|
1
|
2,184
|
7 Agosto 2012, 22:10 pm
por h3ct0r
|
|
|
Problema al crear arreglos de objetos en C++
Programación C/C++
|
DarkSorcerer
|
2
|
8,267
|
15 Septiembre 2013, 19:05 pm
por dato000
|
|
|
Ayuda con un problema de arreglos en C.
Programación C/C++
|
noidroid
|
1
|
2,273
|
26 Noviembre 2013, 06:04 am
por ThePinkPanther
|
|