Título: [C] Problema con código Publicado por: audiogalaxy. en 28 Marzo 2013, 23:42 pm Hola, soy nuevo programando.
Estoy tratando de hacer ejercicios para aprender a programar: Tengo este ejercicio: En un supermercado, se realizan descuentos por las compras a partir de unas bolitas de colores. Si el cliente saca una bolita color azul, tiene un descuento del 20%, si la bolita es roja, se aplica un descuento del 30% y si saca una bolita color blanca, no se aplica ningún descuento. Diseñe un programa que a partir del importe de la compra y el color de la bolita, muestre lo que debe pagar dicho cliente. Pues bien tengo así el código en C: Código: #include <stdio.h> El programa sí corre, pero cuando me pide el color de la bola, lo escribo y no me devuelve ningun resultado. Sale una nueva línea sin nada. ¿Hay algo que me falta? Título: Re: [C] Problema con código Publicado por: avesudra en 28 Marzo 2013, 23:52 pm Claro, es que para comparar cadenas de caracteres en C se utiliza la función strcmp:
Código Referencia: http://www.cplusplus.com/reference/cstring/strcmp/ Esa función devuelve 0 si las dos cadenas que le pasas son iguales.Quedando tu código así: Código Te sobraba el ampersand(&) en esta sentencia: Código Quedando así: Código Y en la declaración del main al menos debes indicar el valor de retorno: Código Y no poner solamente: Código Y obviamente retornar con: Código ¡Un saludo y bienvenida/o al foro! Título: Re: [C] Problema con código Publicado por: audiogalaxy. en 29 Marzo 2013, 00:02 am ohh la función strcmp:
Voy a leer más sobre el tema. ;-) Muchas Gracias. Título: Re: [C] Problema con código Publicado por: amchacon en 29 Marzo 2013, 01:27 am Código Cuando el compilador lee esto, interpetra que quieres comparar la dirreción de memoria del puntero char con el valor decimal de "roja" (se hace una conversión de cadena a su equivalente char). Por eso te compila pero no funciona, aunque me extraña que el compilador no te lanzado un warning (a ver si lo adivino, usas Devcpp). Título: Re: [C] Problema con código Publicado por: audiogalaxy. en 29 Marzo 2013, 01:52 am Código Cuando el compilador lee esto, interpetra que quieres comparar la dirreción de memoria del puntero char con el valor decimal de "roja" (se hace una conversión de cadena a su equivalente char). Por eso te compila pero no funciona, aunque me extraña que el compilador no te lanzado un warning (a ver si lo adivino, usas Devcpp). Pero con strcmp funcionó ya que sirve, por lo que leo, para comparar dos cadenas Título: Re: [C] Problema con código Publicado por: amchacon en 29 Marzo 2013, 02:22 am Está desfasado, su última versión oficial fue hace 10 años.
Yo miraria pasarme a Codeblocks (la version que incluye el mingw). Merece la pena el cambio. Título: Re: [C] Problema con código Publicado por: rir3760 en 29 Marzo 2013, 04:14 am Solo para redondear lo comentado por avesudra y amchacon.
Cuando se declara un array este debe tener el tamaño suficiente para almacenar la cadena incluyendo el '\0' al final de esta. Ya que "blanca" es una cadena de siete caracteres hay que cambiar la declaración a: Código
Y en la llamada a scanf debes utilizar el especificador "%Ns" donde N indica el numero máximo de caracteres que serán almacenados en el array sin incluir el '\0': Código Por ultimo no es necesario calcular primero el descuento y a continuación restarlo: Código Ya que puedes hacerlo directamente: Código
Un saludo Título: Re: [C] Problema con código Publicado por: audiogalaxy. en 29 Marzo 2013, 04:34 am Muchas gracias por puntualizar la infromación.
Precisamente tenía esa duda con el tamaño de caracteres que va entre los corchetes. Ya lo optimicé. Título: Re: [C] Problema con código Publicado por: Luchoz95 en 29 Marzo 2013, 05:07 am Título: Re: [C] Problema con código Publicado por: rir3760 en 29 Marzo 2013, 06:28 am El operador "&" se utiliza cuando se desea obtener la dirección en memoria de una variable, por ejemplo:
Código
En el caso de los arrays no es necesario porque (salvo contadas excepciones) al utilizar el nombre de uno automáticamente se obtiene la dirección en memoria de su primer elemento: Código
Otro ejemplo, el prototipo de la función puts es: Código La función espera la dirección en memoria del primer carácter de la cadena a imprimir, para indicarlo podemos utilizar: Código
Un saludo |