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ú

Temas - TheShocker

#1
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
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 C/C++ / (RESUELTO)
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
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
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.



Código (cpp) [Seleccionar]
#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 C/C++ / Problema con codigo en C
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);
                         }
}