Home   Artículos   Recursos   Foros   
Artíclos recientes publicados en Latindevelopers:

Visual C++: NSDoubleEdit: Un control para el manejo de números decimales en Visual C++.
Visual C++: Implementando una Calculadora en Visual C++
Visual C++: CCommandLine: Una clase para el uso de la linea de comando
Visual C++: Una clase para el manejo del Registro


Urgente ayuda con Array Dinámicos de estructuras Asignación

Aqui programadores en la plataforma Win32 con Visual C++ de Microsoft...

Moderador: latindeveloper

Urgente ayuda con Array Dinámicos de estructuras Asignación

Notapor Elias el Mié Abr 27, 2005 9:26 pm

Hola con todos; tengo un problemilla con este código, la idea es poder ingresar por teclado la dimensión del array de structuras y luego utilizar malloc(u otro) para poder darle la dimensión ingresada, y al final liberar la memoria, pero no corre el programa no tiene errores pero tampoco funciona pues se cuelga. :roll: a ver sialgien puede ayudarme.

Código: Seleccionar todo
#include <stdlib.h>
#include <stdio.h>
#include <iostream.h>
struct nodo
{
   char *nombre;
   int ciclo;
};
void main (void)
{
   struct nodo* tareas;
   int indice=0,cont=0,u=0,j;
   printf("\n-------------Ingreso de Tareas-------------");
   printf("\n\nCuantas tareas deseas ingresar: ");
   scanf("%d",&cont);
   tareas = (struct nodo*)calloc(cont,sizeof(struct nodo));
   do{
      printf("\nTarea: ");
      scanf("%s",&tareas[u].nombre);
      printf("--- Ciclo=>> ");
      scanf("%d",&tareas[u].ciclo);
      printf("\n-----------------------------------");
      u++;
   }while(cont!=u);
for(j=0;j<=cont;j++)
{
   cout<<"\nLa tarea ("<<tareas[j].nombre<<"): con ciclo: "<<tareas[j].ciclo;
}   
printf("\n\n\n");
printf("\tFIN DEL PROGRAMA");
printf("\n\n\n");
free(tareas);
}//f
Elias
Novato
Novato
 
Mensajes: 4
Registrado: Jue Abr 14, 2005 2:25 pm

Re: Urgente ayuda con Array Dinámicos de estructuras Asigna

Notapor latindeveloper el Jue Abr 28, 2005 7:41 am

Si estas utilizando los objetos cout y esas cosas mejor, cambiate a la forma C++

Código: Seleccionar todo
struct nodo
{
   char nombre[30]; // para no tener problemas despues
   int ciclo;
};

nodo* tareas;
pintf("\n\nCuantas tareas deseas ingresar: ");
scanf("%d",&cont);
tareas = new tareas[cont];

...

delete tareas;
Avatar de Usuario
latindeveloper
Administrador
Administrador
 
Mensajes: 1061
Registrado: Lun Jun 02, 2003 8:29 pm
Ubicación: Peru

Hola gracias por el interes, pero no funciona

Notapor Elias el Jue Abr 28, 2005 10:50 am

Mira para la asignación en visual c++ la función "new" no funciona aparentemente y tampoco "delete o free", mas bien lo del dejar de lado al cout me resulto muy bien pero aun no funciona el programilla.
O tiene que ver algo el sitema operativo, traba alguna de estas funciones, uso el Windows XP profesional.

ASI QUE NO FUNCIONA TODAVIA
Elias
Novato
Novato
 
Mensajes: 4
Registrado: Jue Abr 14, 2005 2:25 pm

Re: Hola gracias por el interes, pero no funciona

Notapor latindeveloper el Jue Abr 28, 2005 12:03 pm

Aqui tienes este codigo que debe funcionar...

Código: Seleccionar todo
#include <iostream.h>

struct nodo
{
   char nombre[70];
   int ciclo;
};

int main(int argc, char* argv[])
{
   nodo* tareas;

   int indice = 0;
   int cont = 0;
   int u = 0;

   cout<<"\n-------------Ingreso de Tareas-------------";
   cout<<"\n\nCuantas tareas deseas ingresar: ";
   cin>>cont;
   cin.get();
   if(cont < 1)
   {
      cout<<"Debe ser mayor a 0";
      return 1;
   }
   tareas = new nodo[cont];

   do
   {
      
      cout<<"\nIngresar el item "<<(u+1);
      cout<<"\nTarea: ";
      cin.getline(tareas[u].nombre,70);      
      cout<<"Ciclo : ";
      cin>>tareas[u].ciclo;
      cin.get();
      u++;
   }while(u < cont);

   for(int j = 0 ; j < cont ; j++)
   {
      cout<<"\nLa tarea ("<<tareas[j].nombre<<"): con ciclo: "<<tareas[j].ciclo;
   }   

   cout<<endl;

   delete tareas;

   return 0;
}


Yo mismo lo he compilado y ejecutado...

La salida del programa es el siguiente:

Código: Seleccionar todo
-------------Ingreso de Tareas-------------

Cuantas tareas deseas ingresar: 2

Ingresar el item 1
Tarea: cambiate a OOP
Ciclo : 1

Ingresar el item 2
Tarea: mejora el codigo que tienes
Ciclo : 2

La tarea (cambiate a OOP): con ciclo: 1
La tarea (mejora el codigo que tienes): con ciclo: 2
Press any key to continue


Que no funcione.... IMPOSIBLE... esta a prueba de tontos.
Avatar de Usuario
latindeveloper
Administrador
Administrador
 
Mensajes: 1061
Registrado: Lun Jun 02, 2003 8:29 pm
Ubicación: Peru

Notapor Elias el Sab May 07, 2005 5:16 pm

:twisted: Gracias, ahora si mi error fuen en la asignación en la estructura, yo le daba al array... fatal error
Elias
Novato
Novato
 
Mensajes: 4
Registrado: Jue Abr 14, 2005 2:25 pm


Volver a Visual C++

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado