|
Mostrar Temas
|
Páginas: [1]
|
1
|
Programación / Programación C/C++ / Duda sobre listas enlazadas (C)
|
en: 30 Diciembre 2015, 18:39 pm
|
Mi intención es crear una pila con listas enlazadas simples
El caso es que a la hora de insertar y eliminar en la última posición hay que recorrer siempre la lista enlazada. Mi pregunta es ¿Hay algún método que permita insertar/eliminar directamente desde el final?
Saludos
|
|
|
2
|
Programación / Programación C/C++ / Recorrer un fichero y meterlo en un vector/Matriz/etc
|
en: 21 Junio 2015, 16:34 pm
|
Buenas, como ya he comentado anteriormente estoy aprendiendo el uso de listas enlazadas, ficheros, etc.
Sé más o menos el funcionamiento básico de ficheros de textos y ficheros binarios pero no sé como se hace para leer un fichero y meter el contenido del fichero en un vector, matriz o lista enlazada.
Así que si alguien sabe y puede ayudar se lo agradecería.
|
|
|
3
|
Programación / Programación C/C++ / (RESUELTO)
|
en: 17 Junio 2015, 20:52 pm
|
Estoy haciendo una función, donde te pasan unos registros y tienes que meterlos dentro de una Lista Enlazada. El codigo es el siguiente: typedef struct empleados { char apellidos[30]; char nombre[15]; int mes; //char bufferRelleno[50000]; } tipoEmpleado;
ListaEnlazada RegistrosListaEnlazada(tipoEmpleado * empleados, int numEmpleados, int mesInf, int mesSup) { int i, temp; tipoNodoRef indice, nuevo, aBorrar; ListaEnlazada lst = NULL; for(i=0;i<numEmpleados;i++){ if(empleados[i].mes > mesInf && empleados[i].mes < mesSup){ if((nuevo = (tipoNodoRef) malloc(sizeof(tipoNodo))) == NULL){ indice = lst; while (indice != NULL){ aBorrar = indice; indice = indice->sig; free(aBorrar); } lst = NULL; } else { nuevo->info = empleados[i]; nuevo->sig = NULL; indice = lst; if(indice == NULL) lst = nuevo; else{ while(indice->sig != NULL) indice = indice->sig; indice->sig = nuevo; } } } } return lst; }
No da ningún error aparentemente, pero a la hora de imprimir los miembros de la lista enlazada tengo problemas. Hago lo siguiente, pero da error: i=0; indice = lst; while(indice->sig != NULL){ i++; printf("\nNODO <%d>\n",i); printf("%c",(indice->info).apellidos); printf("%c",(indice->info).nombre); printf("%d",(indice->info).mes); indice = indice->sig; ¿Alguien sabría como solucionarlo?
|
|
|
4
|
Programación / Programación C/C++ / Funciones y Proyectos en C
|
en: 15 Marzo 2015, 17:59 pm
|
Buenas a todos, estoy haciendo un proyecto divido en varios archivos. Uno con las funciones, el .h, y el main. El caso, es que el programa tiene hacer la suma de dos vectores y el producto escalar pero al compilarlo y ejecutarlo me salen erroneos los resultados. No sé si fallo en las funciones o en la forma de invocarlo. Si alguien puede ayudarme se lo agradecería. Parte de las funciones: float suma_vectores(float *v1, float *v2, int dim){ int i; float vsuma[DIMMAX]; for (i=0; i < dim; i++) vsuma[i] += v1[i] + v2[i]; return vsuma[i]; }
float producto_vectores(float *v1, float *v2, int dim){ float prod_escalar = 0; int i; for (i=0; i < dim; i++) prod_escalar += v1[i] * v2[i]; return prod_escalar; } Parte de la invocación: modulov1 = modulo_vector(vector1, diml); modulov2 = modulo_vector(vector2, diml); vsuma[DIMMAX] = suma_vectores(vector1, vector2,diml); prod_escalar = producto_vectores(vector1, vector2, diml); /* Resultados --------------------------------------- */ puts("\nVectores introducidos:"); puts("\nPrimer vector: "); escribir_vector(vector1,diml);
puts("\n\nSegundo vector: "); escribir_vector(vector2,diml); printf("\n"); printf("Módulo del primer vector: %f\n", modulov1); printf("Módulo del segundo vector: %f\n", modulov2);
puts("\nVector suma:"); escribir_vector(vsuma,diml);
puts("\nProducto escalar:"); printf("V1 x V2 = %f\n", prod_escalar);
printf("\n\n");
|
|
|
5
|
Programación / Programación C/C++ / Maximo y minimo de un vector (Funciones)
|
en: 27 Diciembre 2014, 16:02 pm
|
Estoy aprendiendo a usar funciones y el caso es que ciertas funciones con punteros me resultan algo confusas, así que no sé si lo estoy haciendo bien. El caso es que el programa funciona bien pero a la hora de meter numeros negativos, por ejemplo: -10, 2, 4 Me reconoce como maximo el numero negativo (En este caso -10) y como minimo el 2. #include <stdio.h> #include <stdlib.h> #define DIM 100 void leer_vector(int *, int); void escribir_vector(int *, int); void max_min_lista(int *, int, int *, int *); int main(int argc, char *argv[]) { int dim; int vector[DIM]; int maximo, minimo; printf("Introduzca la dimension del vector: "); scanf("%d",&dim); leer_vector(vector,dim); printf("\n"); escribir_vector(vector, dim); printf("\n"); max_min_lista(vector, dim, maximo, minimo); printf("\n\n"); system("PAUSE"); return 0; } void leer_vector(int *v, int dim){ int i; for(i=0;i<dim;i++){ printf("\nElemento (%d): ", i+1); scanf("%d",&v[i]); } } void escribir_vector(int *v, int dim){ int i; for(i=0;i<dim;i++){ printf("%8d ", v[i]); } } void max_min_lista(int *v, int dim, int *max, int *min){ int f, c; min = v[0]; max = v[0]; for(f=0;f<dim;f++){ if(v[f] > max){ max = v[f]; } else if(v[f] < min){ min = v[f]; } } printf("Maximo: %d Minimo: %d", max, min); }
|
|
|
6
|
Programación / Programación C/C++ / Problema con codigo en C
|
en: 21 Diciembre 2014, 15:07 pm
|
Buenas, estoy aprendiendo a programar en C y tengo una duda.
Al compilar el programa y al hacer la media me devuelve como resultado un 0.0000 y no consigo ver cual es el problema
¿Alguien me echa una mano?
#include <stdio.h> #include <stdlib.h> #define DIM 100
void leer_vector(int *, int); float media_vector (int *, int); void escribir_vector(int *, int);
int main(int argc, char *argv[]) { int dim; int vector[DIM]; printf("Introduce la dimension del vector: "); scanf("%d",&dim); leer_vector(vector,dim); printf("\n\n"); escribir_vector(vector,dim); media_vector(vector,dim); printf("\n\nMedia: %f", media_vector); printf("\n\n"); system("PAUSE"); return 0; }
float media_vector (int *v, int dim){ int i; float media; media = 0; for(i=1;i<=dim;i++){ media = media + v; } return media/dim; } void leer_vector(int *v, int dim){ int i; for(i=1;i<=dim;i++){ printf("\nElemento (%d): ", i); scanf("%d",&v); } } void escribir_vector(int *v, int dim){ int i; for(i=1;i<=dim;i++){ printf("%8d ", v); } }
|
|
|
|
|
|
|