Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - durasno

#251
Hola! te marco los errores:
1º Estas llenando mal la matriz, tiene q ser:
a[i][j]=(rand()%(10-0+1)+0);
y porque sumas y restas cero??? entre 0 y 10, rand()%11;
2º No inicias la semilla de rand(), por lo que si ejecutas varias veces el programa te va a repetir los numero. En el main pone srand(time(NULL));
3º para imprimir la matriz tambien tenes q usar a[j]
4º para imprimir el vector tenes q usar b
Citar¿Si pongo el j primero, lo considera como columa o como fila?
es la columna... solo tenes q arreglar el tema de los subindices como te marq antes

SAludos

PD: usa las etiquetas GeSHi para poner codigo
#252
Vos mismo lo dijiste es casi igual, pero no lo es... Fijate en el if de insertar_final() pregunto si lista es NULL(lista vacia), si es verdadero retorno la estructura creada. (ademas t falta un else :P)

Si vos pasas de esta manera el puntero:
insertar_final(i,lista); // llamada  a la funcion
cuando lista regrese al main no va a hacer ningun cambio, esto es porque el puntero se paso por valor. Podes hacer dos cosas: retornar una estructura como lo hic antes o pasar el puntero por referencia, ¿como? pasando la direccion del puntero
insertar_final(i,&lista); // paso la direccion
......................
void insertar_final(int i,L **lista)
{
    L *ultimo;
    ultimo= nuevo_nodo(i);

    if(*lista==NULL) /* lista vacia */
       *lista=ultimo;
    else {
       L *aux=*lista; /* creo un puntero auxiliar para q me recorra la lista */
       while(aux->sig!=NULL) /* recorro la lista */
           aux=aux->sig; /* cambia al siguiente nodo */
       aux->sig=ultimo; /* el ultimo de la lista apunta a "ultimo" creado aca
    }
}

Fijate que creo un puntero auxiliar para recorrer la lista; esto es porque si vos usas el puntero lista vas a perder la referencia al primer nodo lo cual no es bueno... Cualquier duda segui pregutando

Saludos
#253
Asignacion dinamica
http://www.fismat.umich.mx/mn1/manual/node10.html

...y en google hay mucho mas. Saludos
#255
Hola! es raro lo que te pasa, asi que decidi adapatarlo a C puro :P (sacando el & de las funciones, paso n por valor y retorno esa n....) lo compile y probe el problema que decias, a mi me anda perfecto. Elimino y despues imprime correctamente ya sea desde el main o desde la funcion.
Seguro es como dijo ferno, tenes un problema de referencias pero eso ya pasa a un problema de C++, xq a mi me anda :)

Saludos
#256
Hola! una pregunta esto es C++??? porque veo q usas int &n, creo q en C++ usan & en los parametros de la funcion, a menos q en C tambien se emplee y no me entere :)...

Te respondo como si esto fuese C: es raro que te deje compilar con
x = auxiliar;
el compilador deberia darte error. El problema es que "x" y "auxiliar" son arreglos; a pesar de q son arreglos de estructuras, para asignar uno a otro siempre se hace copiando cada elemento(como si fuesen arreglos comunes). Es por eso que te funciona bien con
for(i=0; i<n; i++){
          x[i]= auxiliar[i]; // asignacion de elemento x elemento
          }


Saludos

PD: la asignacion de estructuras si es valida, la  de arreglos no
#257
Hola! tal vez si te hicieras algunos graficos entenderias un poco mejor... Con esto: if(ultimo->sig!=NULL)//aqui recorro la lista hasta encontrar NULL
        ultimo=ultimo->sig;

no estas recorriendo la lista, es con while. Igual esta mal vos no podes recorrer la lista con el puntero ultimo(ultimo no es la lista); la lista es el puntero "lista"

Y con esto:ultimo->sig= *lista;//aqui ya encontro NULL entonces lo apunto con lista
no estas haciendo que ultimo se coleque al final de la lista sino al principio; igual la logica tambien esta mal

Fijate el codigo q te pase antes, si bien no use puntero a puntero, lo podes hacer vos solo cambiando algunas cosas

Saludos
#258
Hola! si te imprime error puede ser por el nombre del archivo q le pasas a fopen. En consulta.c usas "Arti.dat", la primera letra en mayuscula
En ordenar.c y altas.c usas "arti.dat", todo en minuscula

"Arti.dat" y "arti.dat" son dos cosas distintas. Saludos
#259
Como vos decis
Citareste es mi principal error
Declarar un puntero a la estructura no implica que ya puedas hacer uso de los campos de la struct, siempre a un puntero le tenes q asignar algo. En otras palabras un puntero no es mas que una variable, y como toda variable(int, float....) le tenes q asignar algo. Lo q vos hiciste equivale a hacer:
int a,c;
int b=10;
c=b + a; // y esto q da como resultado????


Espero se haya entendido. Saludos
#260
Hola! pedis ayuda pero no especificas nada, error de compilacion?? no hace lo que esperas??? Si decis algo es mas facil de ayudarte...

El error que yo veo es hacer persona[t]; Deberia ser
persona[MAX];
Con el define t solo estas declarando un arreglo de estructura de 2 posiciones, y esto en la funcion Registrarse() te traeria problemas.

En la funcion entrar() en:
for(int i=0;i<t;i++)
la condicion debe ser i<N, siendo N el numero de personas a registrarse declarada en la funcion Registrarse(). Fijate como resolves esto

Saludos