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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda..Problema Con Funcion Que Retorne Pares Positivos En Dev C++...
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda..Problema Con Funcion Que Retorne Pares Positivos En Dev C++...  (Leído 4,789 veces)
grego027

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Ayuda..Problema Con Funcion Que Retorne Pares Positivos En Dev C++...
« en: 15 Agosto 2014, 02:05 am »

Desearia que me ayuden en esta funcion de antemano gracias....se trata de un programa que me tiene que mostrar en dos funciones tipo retorna y recibe una serie de n elementos pares positivos eh intentado de varias maneras y pues se me ah complicado....ehh....si me ejecuta pero no me sale los valores pares me salen otros valores que no vienen al caso aqui les dejo la codificacion gracias....

Código
  1. #include<stdio.h>
  2. #include<conio.h>
  3. int fibo (int n ,char a[100]);
  4. main()
  5. {
  6. char a[100];
  7.      int n=0,i=0,l=0;
  8.       printf("\n\t\tNUMEROS PARES POSITIVOS\n\t\t");
  9.       printf("\n\t\tIngrese el Numero de terminos de la serie:\n\t\t");
  10.       scanf("%d",&n);
  11.       printf("\n");
  12.  
  13.       for(i=0;i<n;i++)  
  14.       {
  15.  
  16. printf("\n\t[%d]",a[i]);
  17. }
  18. a[i]=fibo(n,a);
  19.  
  20.       getch();
  21.       return 0;
  22.      /*la funcion recibe los parametros*/
  23. }
  24. int fibo(int n,char a[100])
  25. {
  26.  
  27.    int i=0;
  28.    printf("\n\tpresione una tecla para continuar");
  29.    a[0]=2;
  30.    for(i=0;i<n;i++)
  31. {
  32. if((a[i]%2)==0)
  33. a[i];
  34. }
  35. return a[i];
  36.    /* la subfuncion retorna parametros*/
  37. }


« Última modificación: 15 Agosto 2014, 11:09 am por Eternal Idol » En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Ayuda..Problema Con Funcion Que Retorne Pares Positivos En Dev C++...
« Respuesta #1 en: 15 Agosto 2014, 02:36 am »

Lo primero que se debe cambiar en el programa es la definición de la función main y evitar el uso de la biblioteca conio de Borland. Mas información en el tema |Lo que no hay que hacer en C/C++. Nivel basico|.

Y si apenas empiezas tu aprendizaje del lenguaje C debes conseguir un buen curso o libro, para recomendaciones solo tienes que utilizar el motor de búsqueda de los foros.

En cuanto al programa hay demasiados errores, los mas importantes son 1) primero imprimes la serie y solo después la calculas cuando debería ser al revés y 2) la función que genera la serie de números pares positivos se debe rescribir desde cero. Para generar esa serie debes utiliza un bucle de esta forma:
Código
  1. int i;
  2.  
  3. for (i = 0; i < n; i++)
  4.   a[i] = (i + 1) * 2;

Un saludo


En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
grego027

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Ayuda..Problema Con Funcion Que Retorne Pares Positivos En Dev C++...
« Respuesta #2 en: 15 Agosto 2014, 03:39 am »

gracias por tu ayuda....modifique el codigo pero igual no pasa nada...disculpa como puedo subir imagenes de la captura de pantalla del programa para que puedas visualizar la ejecucion....



mira asi quedaria
Código
  1. int fibo (int n ,char a[100]);
  2. main()
  3. {
  4. char a[100];
  5.      int n=0,i=0,l=0;
  6.       printf("\n\t\tNUMEROS PARES POSITIVOS\n\t\t");
  7.       printf("\n\t\tIngrese el Numero de terminos de la serie:\n\t\t");
  8.       scanf("%d",&n);
  9.       printf("\n");
  10.  
  11.       for(i=0;i<n;i++)  
  12.       {
  13.  
  14. printf("\n\t[%d]",a[i]);
  15. }
  16. a[i]=fibo(n,a);
  17.  
  18.       getch();
  19.       return 0;
  20. }
  21. int fibo(int n,char a[100])
  22. {
  23.  
  24.    int i=0;
  25.    printf("\n\tpresione una tecla para continuar");
  26.    a[0]=2;
  27.    for(i=0;i<n;i++)
  28. {
  29. a[i]= (i + 1) * 2
  30. }
  31. return a[i];
  32. }
« Última modificación: 15 Agosto 2014, 11:09 am por Eternal Idol » En línea

kutcher

Desconectado Desconectado

Mensajes: 53


Ver Perfil
Re: Ayuda..Problema Con Funcion Que Retorne Pares Positivos En Dev C++...
« Respuesta #3 en: 15 Agosto 2014, 04:04 am »

Creo que tu código debería quedar de esta manera:

Código
  1. int *fibo(int n, int *a);
  2.  
  3. int main(void)
  4. {
  5.    int a[100] = {0};
  6.    int n = 0, i = 0;
  7.  
  8.    printf("\n\t\tNUMEROS PARES POSITIVOS\n\t\t");
  9.    printf("\n\t\tIngrese el Numero de terminos de la serie:\n\t\t");
  10.    scanf("%d",&n);
  11.    printf("\n");
  12.  
  13.    fibo(n, a);
  14.  
  15.    for(i = 0; i < n; i++)
  16.        printf("\n\t[%d]", a[i]);
  17.  
  18.    return 0;
  19. }
  20.  
  21. int *fibo(int n, int *a)
  22. {
  23.    int i;
  24.    printf("\n\tpresione una tecla para continuar");
  25.    for (i = 0; i < n; i++)
  26.        a[i] = (i + 1) * 2;
  27.  
  28.    return a;
  29. }
  30.  
  31.  


Un Saludo
En línea

grego027

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Ayuda..Problema Con Funcion Que Retorne Pares Positivos En Dev C++...
« Respuesta #4 en: 15 Agosto 2014, 04:29 am »

lo corregi.....pero ahora al comienzo de la serie me sale 96
de ahi en adelante si me salen numeros pares al ejecutar me sale algo asi al ingresar el numero de elementos en este caso le pongo 10 elementos....me ejecuta asi....96-2--6-8-10.....y todo normal desde el segundo numero en adelante que podria hacer para que el primer numero no me bote 96 esta es la codifficacion.....de antemano gracias por su ayuda....

Código
  1. int prome1(int n ,char a[]);
  2. main()
  3. {
  4. char a[100];
  5.      int n=0,i=0,l=0;
  6.       printf("\n\t\tNUMEROS PARES POSITIVOS\n\t\t");
  7.       printf("\n\t\tIngrese el Numero de terminos de la serie:\n\t\t");
  8.       scanf("%d",&n);
  9.       printf("\n");
  10.     a[i]=prome1(n,a);
  11.       for(i=0;i<n;i++)  
  12.       {
  13. printf("\n\t[%d]",a[i]);
  14. }
  15.       getch();
  16.       return 0;
  17.      /*la funcion recibe los parametros*/
  18. }
  19. int prome1(int n,char a[])
  20. {
  21.  
  22.    int i=0;
  23.    printf("\n\tpresione una tecla para continuar");
  24.    a[i]=2;
  25.    for(i=0;i<n;i++)
  26. {
  27. a[i]=(i)*2;
  28. }
  29. return a[i];
  30.    /* la subfuncion retorna parametros*/
  31. }

solo deseo que no me salga 96 el primer numero ...cuando ingreso 20 elementos me sale 8 el primer numero y asi mismo del segundo numero en adelante el programa me bota los pares...
« Última modificación: 15 Agosto 2014, 11:10 am por Eternal Idol » En línea

erest0r

Desconectado Desconectado

Mensajes: 147



Ver Perfil
Re: Ayuda..Problema Con Funcion Que Retorne Pares Positivos En Dev C++...
« Respuesta #5 en: 15 Agosto 2014, 06:42 am »

Hola grego027, la funcion prome1 esta asignandole el valor 2 a la primera posicion de "a", despues en el for lo sobrescribe, tambien dentro de ese ciclo solo esta asignandole valores a la primera posicion de "a" porque haces a = i * 2, cuando deberia ser a[ i ] = i * 2 (recuerda que estas trabajando con arreglos) luego en el main dentro del ciclo for, estas mostrando el valor de la primera posicion de "a" tambien, deberia ser:

Código
  1. for(i=0;i<n;i++)  
  2. {
  3.    printf("\n\t[%d]",a[i]);
  4. }
  5.  

En línea

Cruzar la calle junto a mucha gente cuando el semáforo sigue en rojo da seguridad y espíritu de equipo... o cruzamos todos o morimos juntos.
kutcher

Desconectado Desconectado

Mensajes: 53


Ver Perfil
Re: Ayuda..Problema Con Funcion Que Retorne Pares Positivos En Dev C++...
« Respuesta #6 en: 15 Agosto 2014, 15:45 pm »

Este intento de asignación:

Código
  1. a[i] = prome1(n, a);

Me parece redundante e inapropiado,  porque al retornar de la función prome1() ya tienes todos lo números pares almacenados en la cadena a no entiendo el propósito de la reasignación; y ademas usas como indice una variable local para retornar un valor de la cadena a lo cual es incorrecto la variable i puede tomar cualquier valor al salir de la función.

Un Saludo
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: Ayuda..Problema Con Funcion Que Retorne Pares Positivos En Dev C++...
« Respuesta #7 en: 15 Agosto 2014, 16:44 pm »

Desearia que me ayuden en esta funcion de antemano gracias....
................................................................

Como te comentó rir3760, lo primero es declarar main de tipo int, como manda el estándar de C y evitar el uso de la librería conio y sus funciones por lo mismo, no forman parte del estándar de C.

¿ char a[] ?. Si el array "a" va a almacenar números lo lógico es que sea de tipo int, ¿no?. Y declararlo previamente a tamaño de 100 cuando al introducir los pares pedidos pudiera ser que se pidan 200 pues se quedaría cortito. Mejor declarar el array después de introducir el valor de  "n".

¿La función "prome1" de tipo char?. Ni tan siquiera de tipo int ya que le pasas el array y esto hace que se pase por referencia. No es necesario pues que retorne nada.

Con estas ideas te quedaría algo como:

Código
  1. ********************************************
  2. int main ( ) {
  3. ---------------------------------------------------------------------------
  4.  scanf ( "%d" , &n ) ;
  5.  int a[ n ] ;
  6.  printf( "\n" ) ;
  7.  prome1 ( n , a ) ;
  8.  for ( i = 0 ; i < n ; i++ )
  9.    printf ( "\n\t[%d]" , a[ i ]) ;
  10.  return 0;
  11. ****************************************************
  12. void prome1( int n , int a[ ] ) {
  13.  int i = 0 ;
  14.  for( i = 0 ; i < n ; i++ )
  15.    a[ i ] = ( i ) * 2 ;
  16. }

¡¡¡¡ Saluditos! ..... !!!!


En línea

grego027

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Ayuda..Problema Con Funcion Que Retorne Pares Positivos En Dev C++...
« Respuesta #8 en: 17 Agosto 2014, 18:24 pm »

Gracias a todos por su ayuda con cada granito de arena aportado eh podido realizar  
el programa con éxito......
este es el código final a donde quería llegar mil gracias....

Código
  1. #include<stdio.h>
  2. int prome1(int n ,int a[]);
  3. int main()
  4. {
  5.  
  6.      int n=0,i=0;
  7.       printf("\n\t\tNUMEROS PARES POSITIVOS\n\t\t");
  8.       printf("\n\t\tIngrese el Numero de terminos de la serie:\n\t\t");
  9.       scanf("%d",&n);
  10.       int a[n];
  11.       printf("\n");
  12.     a[i]=prome1(n,a);
  13.       for(i=1;i<=n;i++)  
  14.       {
  15. printf("\n\t[%d]",a[i]);
  16. }
  17.       return 0;
  18.      /*la funcion recibe los parametros*/
  19. }
  20. int prome1(int n,int a[])
  21. {
  22.  
  23.    int i=0;
  24.    printf("\n\tpresione una tecla para continuar");
  25.    for(i=1;i<=n;i++)
  26. {
  27. a[i]=i*2;
  28. }
  29. return a[i];
  30.    /* la subfuncion retorna parametros*/
  31. }



Bueno gracias a los que me ayudaron eh logrado completar este pequeñisimo programa con la funcion recibe y retorna en fin este era el ejercicio y pues eh aqui el programa terminado..... ;)..... :)
1) Desarrollar un programa que realice la siguiente operacion
L=Promedio 1+Promedio2/n
Promedio 1----->> Es un valor devuelto por una funcion que contiene un arreglo A de n elementos pares positivos
Promedio 2------>> Es un valor devuelto por una funcion que contiene un arreglo B de n elementos impares negativos
donde N es un valor ingresado por teclado en la funcion principal
Valga la redundancia....no esta de mas decir nuevamente ...gracias a los que aportaron con sus conocimientos pude realizar este pequeño trabajo graciasss nuevamente....!!!

Código
Código
  1. #include<stdio.h>
  2. int prome1(int n ,int a[]);
  3. int prome12(int n ,int b[]);
  4. int prot(int n,int a[], int b[],float t);
  5. int main()
  6. {
  7.  
  8.      int n=0,i=0;
  9.       printf("\n\t\tNUMEROS PARES POSITIVOS E IMPARES NEGATIVOS\n\t\t");
  10.       printf("\n\t\tIngrese el Numero de terminos de las series:\n\t\t");
  11.       scanf("%d",&n);
  12.       int a[n];
  13.     a[i]=prome1(n,a);
  14.     for(i=1;i<=n;i++)  
  15.       {
  16. printf("\t\n[%d]",a[i]);
  17. }
  18. printf("\n\n\n");
  19. int b[n];
  20. b[i]=prome12(n,b);
  21. for(i=1;i<=n;i++)  
  22.       {
  23. printf("\t\n[%d]",b[i]);
  24. }
  25. float t=0;
  26. t=prot(n,a,b,t);
  27. printf("\n\n\n");
  28. printf("\n\n\nel promedio es[%.2f]",t);
  29.       return 0;
  30.      /*la funcion recibe los parametros*/
  31. }
  32. int prome1(int n,int a[])
  33. {
  34.  
  35.    int i=0;
  36.    printf("\n\tTerminos Pares");
  37.    for(i=1;i<=n;i++)
  38. {
  39. a[i]=i*2;
  40. }
  41. return a[i];
  42.    /* la subfuncion retorna parametros*/
  43. }
  44. int prome12(int n,int b[])
  45. {
  46.  
  47.    int i=0;
  48.    printf("\n\tTerminos Impares");
  49.    for(i=1;i<=n;i++)
  50. {
  51. b[i]=(i*-2)+1;
  52. }
  53. return b[i];
  54.    /* la subfuncion retorna parametros*/
  55. }
  56. int prot(int n,int a[],int b[],float t)
  57. {
  58.  
  59.    int i=0,acum=0,acum2=0;
  60.    printf("\n\tTerminos Pares");
  61.    for(i=1;i<=n;i++)
  62. {
  63. a[i]=i*2;
  64. acum=acum+a[i];
  65. }
  66. for(i=1;i<=n;i++)
  67. {
  68. b[i]=(i*-2)+1;
  69. acum2=acum2+b[i];
  70. }
  71. t=(acum+acum2)/n;
  72. return t;
  73.  
  74.    /* la subfuncion retorna parametros*/
  75. }

Una consulta mas como podría publicar imágenes de los ejecutables para mejor comprensión y entendimiento de la lógica de como funcionan los programas.....
« Última modificación: 17 Agosto 2014, 22:06 pm por Eternal Idol » En línea

cascaradebanana

Desconectado Desconectado

Mensajes: 3



Ver Perfil
Re: Ayuda..Problema Con Funcion Que Retorne Pares Positivos En Dev C++...
« Respuesta #9 en: 17 Agosto 2014, 23:03 pm »

Sería mejor que utilizaras Cygwin.
Analizando tu código, en la línea #10 haces una declaración de array con un valor variable, ¿no te marca error? Los arrays sólo pueden tener tamaños constantes (como números en sí o constantes #define). Aquí lo que podrías hacer es declararla con un tamaño fijo (100 por ejemplo, #define MAX_VAL 100), y al momento de hacer el scanf para el número de términos en la serie, evaluar el valor ingresado if (i <= 0 || i > 100).
En la línea #12 el retorno de la función prome1 sólo se asigna en a[0]. Me imagino que si he introducido, por ejemplo 6, en términos de la serie, lo que se esperaría sería tener asignados valores desde a[0], a[1], ... a[n] o a[6] en este caso. En el bucle "for" que está en seguida, que se repite n veces, no muestra nada más que los valores que ya estaban en memoría y no los que se supone que tendrían asignados por la función prom1.
Sería mejor no utilizar arrays e imprimir los valores de la seríe 1...n conforme se vayan generando en el bucle for que está en prome1.
Saludos.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con programa numeros pares e impares:P « 1 2 »
.NET (C#, VB.NET, ASP)
<sylar> 18 29,421 Último mensaje 17 Abril 2009, 03:41 am
por <sylar>
[Batch] Función que suma números positivos mayores a 32 bits. v1.2
Scripting
0x0309 1 4,466 Último mensaje 14 Abril 2009, 23:39 pm
por M a t t
Funcion que retorne char array? « 1 2 »
Programación C/C++
juancaa 13 18,041 Último mensaje 19 Julio 2012, 16:23 pm
por rir3760
C++ funcion que retorne una cadena de caracteres
Programación C/C++
yokino 2 5,367 Último mensaje 25 Julio 2012, 18:00 pm
por yokino
Funcion que retorne structuras
Programación C/C++
perico02 3 2,348 Último mensaje 23 Octubre 2015, 06:36 am
por soyloqbuskas
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines