• Sábado 22 de Enero de 2022, 10:23

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Riskz

Páginas: 1 [2]
26
C/C++ / Re: Unir Cadenas En C
« en: Miércoles 7 de Mayo de 2008, 00:21 »
No puedes hacer esto :
Código: Text
  1.  
  2. Nombre = "fichero" + argv[3];
  3.  
  4.  

Eso en C no existe hasta donde yo se (soy principiante igual).
Yo en tu lugar usaria
Código: Text
  1.  
  2. strcat(Nombre, itoa(argv[3]));   //como bien dijo Eternal Idol
  3.  
  4.  
o
Código: Text
  1.  
  2. sprintf(Nombre,"%s%i", nombre, argv[3]);
  3.  
  4.  

Eso teniendo en cuenta que argv[3] es de tipo int, sino olvidate del atoi() y no uses la segunda opcion que te di. Para usar atoi creo que necesitas incluir <stdlib.h> y para strcat y sprintf <string.h>

Saludos

27
C/C++ / Re: Paso De Argumentos En C
« en: Miércoles 7 de Mayo de 2008, 00:07 »
Pues yo en C lo hago asi, nunca me dio error

ejemplo:
Código: Text
  1.  
  2. char *funcion(static char string[20]) {
  3.  
  4. ...
  5. return string;
  6. }
  7.  
  8.  

Es decir, el argumento es un array con un limite maximo de caracteres, en este caso 19. Para devolver un string si que necesitas un puntero, y para eso yo hago la variable statica (o sea que no se borra al finalizar la funcion)

Ambos metodos son crrectos, tanto el mio (creo) como el de Eternal Idol, creo que la diferencia es que el de el trabajo directo sobre la cadena que le pasas, en cambio el mio crea una cadena nueva copia dentro de la funcion, y no trabaja sobre la original, es decir que para cambiarle el valor tendrias que hacer por ejemplo
Código: Text
  1.  
  2. strcpy(cad, cambiar(cad));   //solo con mi metodo
  3.  
  4.  

Saludos

28
C/C++ / Re: Numero Reflejo!!
« en: Miércoles 7 de Mayo de 2008, 00:00 »
Código: Text
  1. paso= x-10*(x/10);
  2. ...
  3. x=x/10;
  4.  
  5.  

En esas dos lineas ten cuidado porque x/10 puede dar un numero con coma y al ser x y paso variables int el numero se va a recortar
prueba haciendolas tipo float o double que llevan coma

No se mucho sobre matematica pero yo el numero reflejo lo haria usando string/array de char en lugar de int, lo veo mucho mas facil y corto
si no sabes o no tienes una idea de como empezar te ayudo

Saludos

29
C/C++ / Re: Fahrenheit O Celsius En C++
« en: Martes 29 de Abril de 2008, 04:33 »
Pues como bien dice ProfesorX temperatura t debe poder ser tanto en ºC como en ºF

Pues yo lo haria de esta manera (no te lo pongo en codigo, si no sabes como hacer algo avisame)

1) Podrias hacer dos cosas:
    a) que se elija de que unidad a cual convertir, y que luego se introduzca la temperatura (o viceversa)
    b) que se introduzca la temperatura segida de la unidad (ºC/C o ºF/F)

2) Segun a que tipo convertir, utilizar la formula correspondiente (perdon si despeje mal algo, utilice la formula que te dieron a ti):
    a) de ºC a ºF: Celsius = (Fahrenheit – 32) *9*5
    b) de ºF a ºC: Farenheit=Celsius /5 /9 + 32

3) Mostrar el resultado

Yo estoy empezando con C asi que trato de ayudar en lo que puedo.
Cualquier duda MP o por aca
Saludos

30
C/C++ / Re: Error Al Pasar 4 Argumentos A Una Funcion
« en: Viernes 25 de Abril de 2008, 02:14 »
Termine el programa!
Al fin lo deje tal cual queria, y todo gracias a tu ayuda

Como agradecimiento te dejo el programa, aunque no te va a servir de mucho exepto que sepas de quimica o (como yo) te sirva para la tarea de quimica del cole.
Jaja
Gracias

(por cierto, dentro del rar hay dos, uno compilado en ANSI C (o eso creo) y el otro en C comun (tampoco estoy seguro), aunque no tuve que cambiar demasiadas cosas)

EDIT:
Subo la version 3, que arregle un par de cosas y ademas agrege funciones
El programa ya acepta hidruros (metalicos y no metalicos), oxidos basicos y acidos, haluros, hidroxidos y oxoacidos
=)

31
C/C++ / Re: Error Al Pasar 4 Argumentos A Una Funcion
« en: Miércoles 23 de Abril de 2008, 21:06 »
Citar
En C++ no hay tipos de retorno por defecto y tu programa en C no compila.

Mi programa lo compilo con el DevC++
esta compilando en c++? (es decir que no tiene nada que ver que el codigo este en un archivo.c?)
como cambio para que compile en C? (es que nunca me di cuenta si compilaba en c++, nunca me tiro ningun error con respecto a los tipos de retorno automaticos ni nada)

Citar
Si pones void es que no retorna nada (no podes usar return), 0 es un entero.

Con lo de void me referia a sacar el return tambiem.

Citar
Que una funcion se use una sola vez no significa que no deba retornar nada, no tiene nada que ver ...

Quise decir como que si la voy a usar solo una vez para que la hice funcion, si la podria haber escrito en main. Y por eso dije que solo era para entenderla mejor.

Gracias :P

32
C/C++ / Re: Error Al Pasar 4 Argumentos A Una Funcion
« en: Miércoles 23 de Abril de 2008, 20:29 »
Es que las funciones mostrar, etc, solamente devuelven 0 (al no poner tipo de retorno es como poner int, cierto?) para que luego main termine (tambien podria hacerlas void), ya que en realidad esas funciones se utilizan una vez sola en el programa (para que son funciones entonces? jajaja, es solo para que me entienda mejor ya que no comento demasiado los programas como veras, tengo q acostumbrarme)

Ahora me surgio otra duda, en la funcion romanos tambien uso static
y la uso tambien 2 veces en este caso, y me devuelve los valores q quiero (distintos), por ejemplo "I" y la segunda vez "III"
porque?
no tendria que devolverme ambas veces "I"?
quizas no entendi tan bien lo que me explicaste

Gracias, :P

Edito: ya hice simb sin static y funciono, gracias :P

33
C/C++ / Re: Error Al Pasar 4 Argumentos A Una Funcion
« en: Miércoles 23 de Abril de 2008, 20:17 »
Citar
EDITO: recien lei tu respuesta, entendi lo de static que me dijiste, asi que ahora lo arreglo, en el codigo que esta en esta respuesta ya esta arreglado lo de declarar las variables primero, lo que si no entendi es lo de que no pongo el tipo de retorno. Por ejemplo en elementos.h, metalono esta con el tipo de retorno int, no se que me corregiste (exepto que te hallas fijado en la "estructura" que puse en la respuesta anterior, que era solo representativa y no tenia ninguno de los tipos de retorno))
Igualmente ya funciona y ahora que me aclaraste lo de static ya voy a poder seguir con la funcion formula() para oxidos y haluros.
GRACIAS
--------------------------------------------------------------------------------------------

Cita de: "Eternal Idol"
Entonces mucho no sirve  :)
Ahora que me aclaraste eso de static ya puedo hacer que funcione con haluros
Gracias de nuevo

34
C/C++ / Re: Error Al Pasar 4 Argumentos A Una Funcion
« en: Miércoles 23 de Abril de 2008, 20:09 »
EDITO: recien lei tu respuesta, entendi lo de static que me dijiste, asi que ahora lo arreglo, en el codigo que esta en esta respuesta ya esta arreglado lo de declarar las variables primero, lo que si no entendi es lo de que no pongo el tipo de retorno. Por ejemplo en elementos.h, metalono esta con el tipo de retorno int, no se que me corregiste (exepto que te hallas fijado en la "estructura" que puse en la respuesta anterior, que era solo representativa y no tenia ninguno de los tipos de retorno))
Igualmente ya funciona y ahora que me aclaraste lo de static ya voy a poder seguir con la funcion formula() para oxidos y haluros.
GRACIAS
--------------------------------------------------------------------------------------------

Logre hacerlo bien haciendo entre otras cosas que en vez de pasar simb("hidrogeno") pase directamente "H" (al pedo usaba simb ahi)

El problema es que solo sirve para hidruros y oxidos (donde el elemento H o O no varia. Cuando son dos elementos variables como en un haluro (no importa que no sepas lo q es, solamente q pueden ser dos elementos cualquiera, entonces si o si tendria q usar simb() en ambos)

Te subo el codigo esta vez arregle un par de cosas y ya funciona, pero sigo con la duda de por que ecuacion ecibia ambos argumentos simb() iguales

Hice una prueba haciendo que cada vez que simb() se ejecute me imprima en pantalla el valor q va a devolver.
Cuando le paso los argumentos a ecuacion() uso simb() dos veces, por lo tanto me imprimia el valor q devolvia en cada caso al argumento. Y para mi sorpresa me devolvio bien los dos, es decir, Al y H (suponiendo que escribo "Hidruro de aluminio" en la opcion 3 del programa).

Esto quiere decir que el error esta cuando ecuacion() me toma los dos argumentos?
si tienes tiempo y ganas de probarlo acordate que cuando llamo a ecuacion() en el codigo actual le paso un solo argumento con simb(), por eso no da error, pero haz la prueba poniendo en vez de "H" simb("hidrogeno")

GRACIAS

35
C/C++ / Re: Error Al Pasar 4 Argumentos A Una Funcion
« en: Miércoles 23 de Abril de 2008, 19:17 »
No, asi es como debe salir, pero en el codigo sin modificar tambien funcionaba pasando los argumentos "manualmente", el tema esta cuando los paso con simb()

no entiendo bien lo que dices al principio, pero stdio.h esta incluida, ya que en quimica.c hago:
#include "elementos.h"
y en elementos.h hago:
#include <stdio.h>

y con respecto a las variables, hay alguna variable/funcion no definida al principio?
es que no me doy cuenta :S

Muchas gracias por gastar tu tiempo y hasta modificar el codigo (no conozco c++ todavia ya que primero quiero aprender bien c)

Editado: Mirando bien me di cuenta que meti algunos printf() antes de la declaracion de algunas variables locales (el codigo esta lleno de printf() que son para revisar el valor de algunas variables, y cuando ya funciones las borro o le agrego las // a esa linea y listo)

Igualmente arregle esto y sige sin pasarme bien el segundo argumento de ecuacion() con simb()

corrigeme si me equivoco, pero la estructura del programa quedaria algo asi como:
Código: Text
  1.  
  2. #includes
  3.  
  4. // Esto estaria incluido en elementos.h
  5. struct tablap {} elemento[];
  6. metalono() {}
  7. simb() {}
  8. romanos() {}
  9. ecuacion() {}
  10. // Aca terminaria elementos.h
  11.  
  12. mostrar() {}
  13. menu() {}
  14. buscar() {}
  15. formula() {}
  16. main() {}
  17.  
  18.  

Jeje sorry si escribo confuso

36
C/C++ / Re: Error Al Pasar 4 Argumentos A Una Funcion
« en: Miércoles 23 de Abril de 2008, 12:27 »
es que no se eso de depurar, como dije, soy nuevo, cuando vuelva del colegio busco por internet como hacerlo

si quieren les dejo el codigo fuente

37
C/C++ / Re: Error Al Pasar 4 Argumentos A Una Funcion
« en: Miércoles 23 de Abril de 2008, 05:54 »
Tienes razon, probe pasando manualmente los simbolos y los tomo bien, entonces el error debe ser de simb()... aca te dejo la declaracion:

Código: Text
  1.  
  2. char *simb(char names[16]) {
  3.         char name[16];  /*Tuve que hacer esta variable para poder cambiar a mayuscula la primer letra*/
  4.         sprintf(name, &#34;%s&#34;, names);
  5.         int num;
  6.         static char simbolo[3];
  7.         if(name[0]&#62;96) {
  8.                        name[0]-=32;
  9.                        }
  10.         for(num=0;num&#60;TOTAL;num++) {
  11.                                    if(strcmp(name, elemento[num].nombre)==0) {
  12.                                                    if(strlen(elemento[num].nombre)==1) sprintf(simbolo, &#34;%c&#34;, elemento[num].simbolo[0]);
  13.                                                    else strcpy(simbolo, elemento[num].simbolo);
  14.                                                    return simbolo;
  15.                                                    }
  16.                                    }
  17.         exit(1);
  18. }
  19.  
  20.  

de alguna forma debe de quedar guardado el simbolo anterior y devuelve el mismo :S

Gracias por tu ayuda

38
C/C++ / Error Al Pasar 4 Argumentos A Una Funcion
« en: Miércoles 23 de Abril de 2008, 04:37 »
bueno soy nuevo en el foro, tengo 15 años y recien estoy empezando a programar. Estoy intentando hacer un programa en C que entre otras cosas clasifica un compuesto quimico, pero cuando tengo que llamar a la funcion ecuacion(), le paso 4 argumentos:

2 strings (cada una viene de otra funcion llamada simb() )
2 enteros (los escribo manualmente)

El problema es que me toma bien el primer string y ambos enteros, pero el segundo string me lo toma igual que el primero, aca les dejo el codigo, perdonen si es alguna macana mia xD

Aca llamo a la funcion:
Código: Text
  1. //paso dos simbolos y dos numeros de valencias
  2.  
  3. printf(&#34;Ecuacion(sin balancear): %s&#34;, ecuacion(1,1,simb(&#34;hidrogeno&#34;),simb(tercera)));
  4.  
  5.  

Aca la declaracion:
Código: Text
  1.  
  2. char *ecuacion(int numv1,int numv2,char simb1[3],char simb2[3]) {...
  3.  
  4.  

(no les copio toda la declaracion porque el error esta cuando paso los argumentos, ya que comprobe los argumentos antes de pasarlos y estaban bien, pero al comprobarlos una vez pasados pasaba lo que comente arriba)

Por ejemplo:
- paso la valencia del hidrogeno y del otro elemento (ambas 1) manualmente
- paso el simbolo del hidrogeno mediante una funcion que hice simb()
- paso el simbolo del elemento guardado en la variable tercera (por ejemplo aluminio) tambien mediante simb()

seria como poner ecuacion(1,1,H,Al)

pero cuando compruebo los valores dentro de la funcion ecuacion, es como si hubiera pasado (1,1,H,H)


Gracias y perdonen si lo puse medio confuso :P

Páginas: 1 [2]