Foros del Web » Programación para mayores de 30 ;) » C/C++ »

problema con codigo, error de segmento

Estas en el tema de problema con codigo, error de segmento en el foro de C/C++ en Foros del Web. Tengo este codigo, que me da error de segmento y no encuentro el problema, a ver si podeis echarme una mano. Gracias de antemano. Código: ...
  #1 (permalink)  
Antiguo 02/01/2013, 08:18
 
Fecha de Ingreso: mayo-2012
Mensajes: 14
Antigüedad: 11 años, 11 meses
Puntos: 0
problema con codigo, error de segmento

Tengo este codigo, que me da error de segmento y no encuentro el problema, a ver si podeis echarme una mano. Gracias de antemano.

Código:
// Ficheros a incluir.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "prodEscalar.h"


// Funcion principal.
void iniciaFibonacci (int vector[], int num);



int main (int argc, char ** argv)
{
  int num=atoi(argv[1]);
  int vector[2]={000, 001};
  
  if (argc <= 0)
  {
    printf(ERROR_DIMENSION);
  }
  else
  {
    iniciaFibonacci(vector, num);
    printf("\n");

  }
        
  return 0;
}


void iniciaFibonacci(int vector[], int num) 
{
  int cero=vector[0];
  int uno=vector[1];
  int aux=0;
  int i=0;
  num=num-1;
  printf("[%d,%d",cero,uno);
  for(i=1; i<num; i++)
  {
    aux=cero+uno;
    printf(",%d",aux);
    cero=uno;
    uno=aux; 
  }
  printf("]\n");
}
  #2 (permalink)  
Antiguo 02/01/2013, 09:48
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 4 meses
Puntos: 94
Respuesta: problema con codigo, error de segmento

Hola! el codigo no tiene problemas, pero si en la linea de comandos no especificas los argumentos para el main entonces si va a aparecer un error de segmento.. como ejecutas el programa??

Otra cosa argc nunca va a ser menor o igual a cero, por defecto siempre es uno. Debes cambiar la condicion

Saludos

PD: revisa el tema de pasajes de argumentos al main, porque me parece que no lo tenes claro
  #3 (permalink)  
Antiguo 02/01/2013, 09:57
 
Fecha de Ingreso: mayo-2012
Mensajes: 14
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: problema con codigo, error de segmento

gracias no me daba cuenta de que no le pasaba los argumentos, vaya despiste que tengo jaja
  #4 (permalink)  
Antiguo 02/01/2013, 10:28
 
Fecha de Ingreso: mayo-2012
Mensajes: 14
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: problema con codigo, error de segmento

Por cierto tengo que introducir otra funcion pero esta vez que imprima la sucecion de padovan hasta el numero que de como argumento, pero nose muy bien como funcion el algoritmo de la susecion de padovan, alguna idea??
  #5 (permalink)  
Antiguo 02/01/2013, 13:51
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 4 meses
Puntos: 94
Respuesta: problema con codigo, error de segmento

Creo q la manera mas facil es haciendo por "funciones recursivas", por iteracion se complicaria un poco.

Si buscas en internet vas a encontrar varios ejemplos usando recursividad. Saludos
  #6 (permalink)  
Antiguo 03/01/2013, 04:19
 
Fecha de Ingreso: mayo-2012
Mensajes: 14
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: problema con codigo, error de segmento

he hecho esta función pero no me sale ni a la de tres, a ver si me dais alguna idea.

Cita:
int iniciaPadovan ( int num)
{
int aux=0;
int i=0;
if (num==0 || num==1 || num==2)
{
aux=1;
}
else
{
aux=iniciaPadovan(num-2)+iniciaPadovan(num-3);
}
for (i=0; i<= num; i++)
{
printf("[%d,",aux);
}
printf("]");
}
  #7 (permalink)  
Antiguo 03/01/2013, 15:31
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 4 meses
Puntos: 94
Respuesta: problema con codigo, error de segmento

Hola! el problema principal es que no retornas nada, igual la idea no esta del todo mal. Te dejo el codigo resuelto de internet:
Código C:
Ver original
  1. int padovan(int n)
  2. {
  3. if (n < 3)
  4. return 1;
  5. else
  6. return padovan(n - 2) + padovan(n - 3);
  7. }

Para mi gusto no es el mejor ejercicio para empezar con funciones recursivas, hay mas faciles como el de calcular el factorial de un numero(hacelo si podes)... Trata de analizar como funciona este codigo, sino pregunta

Saludos
  #8 (permalink)  
Antiguo 07/01/2013, 07:56
 
Fecha de Ingreso: mayo-2012
Mensajes: 14
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: problema con codigo, error de segmento

El caso es que me piden que la funcion no devuelva nada, he ahi mis dudas de como hacerlo funcionar.
  #9 (permalink)  
Antiguo 07/01/2013, 12:46
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 4 meses
Puntos: 94
Respuesta: problema con codigo, error de segmento

Que raro que te pidan que no devuelva nada, en ese caso no estarias haciendo un uso completo de las funciones; toda funcion deberia retornar algo. Ademas(para mi gusto) las funciones deberian ser lo mas generales posibles, es decir nada de cosas extras que pueden ir en el main...

En fin, si lo queres imprimir en la funcion creo q seria bastante dificil, aunque si trabajas con variables globales o estaticas tal vez se te facilite un poco

SAludos

Etiquetas: fichero, funcion, int, segmento, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:21.