• Viernes 8 de Noviembre de 2024, 19:59

Autor Tema:  ¿Que ha de pedir este ejercicio en C?  (Leído 2448 veces)

tocinonaro

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
¿Que ha de pedir este ejercicio en C?
« en: Domingo 20 de Junio de 2010, 01:49 »
0
Hola, ante nada me presento mi nombre es Juan, ya que es mi primera visita al foro.

El sentido de este post es que me pide que realice este ejercicio en C:

Enuncia: Imprimir la suma de los numeros en [a,b], donde a y b son ingresados por el usuario.

Creo que pide algo diferente a lo que pienso (Leer 2 variables del teclado y sumarlas).

Desde ya Gracias!
Saludos ;)

N3oDoc

  • Nuevo Miembro
  • *
  • Mensajes: 10
    • Ver Perfil
Re: ¿Que ha de pedir este ejercicio en C?
« Respuesta #1 en: Domingo 20 de Junio de 2010, 13:51 »
0
Yo supongo que será implementar una función que te sume dos números, algo así como:

Código: C++
  1.  
  2. #include <iostream>
  3. using namespace std;
  4.  
  5. int Suma(const int a, const int b){
  6.    return (a + b);
  7. }
  8.  
  9. int main(){
  10.    int a,b;
  11.    cout << "Introduce el numero a:";
  12.    cin >> a;
  13.    cout << "Introduce el numero b:";
  14.    cin >> b;
  15.    cout << "la suma de a y b es": << Suma(a,b);
  16.    system("pause");
  17.    return 0;
  18. }
  19.  
  20.  

tocinonaro

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: ¿Que ha de pedir este ejercicio en C?
« Respuesta #2 en: Domingo 20 de Junio de 2010, 16:53 »
0
Gracias, la cosa es que no lo hicieras xD, igual esta en C++ jaja.

En fin es implementar una funcion, gracias ;)

cbug

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: ¿Que ha de pedir este ejercicio en C?
« Respuesta #3 en: Domingo 20 de Junio de 2010, 19:07 »
0
Esto es lo que entiendo yo:
Código: Text
  1.  
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5.  
  6. int suma(char *s){
  7.   int *a;
  8.   int i = 0;
  9.   char *aux;
  10.   a = calloc(2, sizeof(int));
  11.   aux = strtok(s, " [],");
  12.   while(aux != NULL){
  13.     *(a + i) = atoi(aux);
  14.     i++;
  15.     aux = strtok(NULL, " [],");
  16.   }
  17.   return (*a + *(a+1));
  18. }
  19. int main(){
  20.   char *input;
  21.   input = (char *)(malloc(sizeof(char)*20));
  22.   fgets(input, 20, stdin);
  23.   printf("nSUMA %dn", suma(input));
  24. }
  25.  

Salida:

Citar
[2000,3000]

SUMA 5000


[5000,7125]

SUMA 12125

tocinonaro

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: ¿Que ha de pedir este ejercicio en C?
« Respuesta #4 en: Domingo 20 de Junio de 2010, 19:43 »
0
Me he aferrado al programa de N3oDoc, no por que el otro estuviera mal si no es que hay varias cosas que para mi nivel todavia desconosco. He pasado el programa de N3oDoc a C, pero esta linea me da problemas:

En C++:
Citar
cout << "la suma de a y b es": << Suma(a,b);
En C:
Citar
printf("La suma de a + b es", suma(a,b));

Con respecto a tu programa cbug, si me explicaras la funcion de estas lineas, te lo agradeceria y para la proxima ya lo tendria en mente:

LINEAS:

Citar
a = calloc(2, sizeof(int));

Desconosco calloc, sizeof y demas, no tengo la menor idea de para que se utiliza.

Citar
aux = strtok(s, " [],");

Empieza denominando a aux un valor, pero strtok y lo que sigue no conosco :S.

Citar
*(a + i) = atoi(aux)

Desconosco la funcion del atoi.

Citar
input = (char *)(malloc(sizeof(char)*20));

Tampoco conosco la funcion del malloc.

En fin esas lineas y funciones desconosco, creo que tendria que revisar la libreria string.h para saber de que trata.
Saludos ;)

cbug

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: ¿Que ha de pedir este ejercicio en C?
« Respuesta #5 en: Domingo 20 de Junio de 2010, 20:08 »
0
Lo que sucede es que yo entendí que el ingreso sería una cadena de tipo: "[entero,entero]" y se debería devolver: "entero + entero".
Ahora con respecto a las funciones, puedes buscarlas en cplusplus.com, que es mejor referencia de lo que te puedo explicar yo. Por otra parte ¿por qué razón pusieron un código usando iostream de C++, cuando tu pediste resolver el problema en C?

Ahora bien si tus conocimientos son básicos, entonces basta con:

Código: Text
  1.  
  2. #include <stdio.h>
  3.  
  4. int main(){
  5.   int a, b;
  6.   scanf("%d %d", &a, &b);
  7.   printf("n%d + %d = %dn", a, b, a + b);
  8. }
  9.  
  10.  

Recuerda que scanf no es recomendable utilizarlo, es preferible una combinación de fgets + sscanf.

tocinonaro

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: ¿Que ha de pedir este ejercicio en C?
« Respuesta #6 en: Domingo 20 de Junio de 2010, 21:20 »
0
Citar
Por otra parte ¿por qué razón pusieron un código usando iostream de C++, cuando tu pediste resolver el problema en C?

No va al caso, igualmente es tan solo reemplazar la libreria iosteam por stdio.h y cin / cout por scanf / printf respectivamente.
Igualmente esta bien, por que no vine ha pedir una solucion, solamente vine a ver que pedia el enunciado dicho.

Citar
Ahora bien si tus conocimientos son básicos, entonces basta con

Si, supuse que era eso ya tenia el codigo preparado, pero :S de tan simple que era no pense que podria llegar a ser eso.

Citar
Recuerda que scanf no es recomendable utilizarlo, es preferible una combinación de fgets + sscanf.

Si, pero de momento la clase va muy de principio recien, no quiero aparecer con otras funciones.

Por cierto no me sabia lo de cplusplus.com gracias ;)

cbug

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: ¿Que ha de pedir este ejercicio en C?
« Respuesta #7 en: Domingo 20 de Junio de 2010, 21:26 »
0
Hay que tener cuidado porque [a,b] parecería ser una lista también... En ese caso:

Código: Text
  1.  
  2. int suma_array(int lista[], int n){
  3. //El n es opcional ya que en este caso aparecen 2 elementos
  4.     int i = 0;
  5.     int suma = 0;
  6.     for(i = 0; i < n; i++)
  7.         suma += lista[i];
  8.     return suma;
  9. }
  10.  
  11.  

tocinonaro

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: ¿Que ha de pedir este ejercicio en C?
« Respuesta #8 en: Domingo 20 de Junio de 2010, 21:31 »
0
Citar
Hay que tener cuidado porque [a,b] parecería ser una lista también... En ese caso

Presenta un error raro y no compila:

 [Linker error] undefined reference to `WinMain@16'

Obviamente le agrege la libreria stdio.h

cbug

  • Nuevo Miembro
  • *
  • Mensajes: 8
    • Ver Perfil
Re: ¿Que ha de pedir este ejercicio en C?
« Respuesta #9 en: Domingo 20 de Junio de 2010, 22:26 »
0
Pero ten en cuenta que el anterior mensaje presenta la definición de una función unicamente.

N3oDoc

  • Nuevo Miembro
  • *
  • Mensajes: 10
    • Ver Perfil
Re: ¿Que ha de pedir este ejercicio en C?
« Respuesta #10 en: Domingo 20 de Junio de 2010, 22:39 »
0
Cita de: "tocinonaro"
Me he aferrado al programa de N3oDoc, no por que el otro estuviera mal si no es que hay varias cosas que para mi nivel todavia desconosco. He pasado el programa de N3oDoc a C, pero esta linea me da problemas:

En C++:
Citar
cout << "la suma de a y b es": << Suma(a,b);
En C:
Citar
printf("La suma de a + b es", suma(a,b));


El error está en que me equivoque y puse los : fuera de las comillas.
Así estaría correcto:

cout << "la suma de a y b es:" << Suma(a,b);