elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


  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:

Código:

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:

Código:
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:

Código:
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:
Código:
 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.



Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define DIM 100
  4.  
  5. void leer_vector(int *, int);
  6. void escribir_vector(int *, int);
  7. void max_min_lista(int *, int, int *, int *);
  8.  
  9. int main(int argc, char *argv[])
  10. {
  11.    int dim;
  12.    int vector[DIM];
  13.    int maximo, minimo;
  14.  
  15.    printf("Introduzca la dimension del vector: ");
  16.    scanf("%d",&dim);
  17.  
  18.    leer_vector(vector,dim);
  19.  
  20.    printf("\n");
  21.  
  22.    escribir_vector(vector, dim);
  23.  
  24.    printf("\n");
  25.  
  26.    max_min_lista(vector, dim, maximo, minimo);
  27.  
  28.    printf("\n\n");
  29.  
  30.  
  31.  system("PAUSE");
  32.  return 0;
  33. }
  34.  
  35. void leer_vector(int *v, int dim){
  36.     int i;
  37.     for(i=0;i<dim;i++){
  38.                                      printf("\nElemento (%d): ", i+1);
  39.                                           scanf("%d",&v[i]);
  40.                                           }
  41.     }
  42.  
  43. void escribir_vector(int *v, int dim){
  44.     int i;
  45.     for(i=0;i<dim;i++){
  46.                         printf("%8d ", v[i]);
  47.                         }
  48. }
  49.  
  50. void max_min_lista(int *v, int dim, int *max, int *min){
  51.     int f, c;
  52.  
  53.     min = v[0];
  54.     max = v[0];
  55.  
  56.     for(f=0;f<dim;f++){
  57.                        if(v[f] > max){
  58.                        max = v[f];
  59.                        } else if(v[f] < min){
  60.                        min = v[f];
  61.                        }
  62.                                                              }
  63.  
  64.     printf("Maximo: %d   Minimo: %d", max, min);
  65.                                             }
  66.  
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);
                         }
}
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines