Foros de daboweb
MULTIMEDIA, Video digital, Grabación, Diseño gráfico, Diseño web, Programación => Webmasters - Diseño Web - Programación - Diseño gráfico => Mensaje iniciado por: JalpWeb en 17 de Mayo de 2005, 02:05:01 pm
-
Hola soy nuevo en esto de C y en clase estamos utilizando el Borland C++ 3.1, este codigo me da 6 errores. Que despues detallare el motivo q me da el programa:
#include"stdio.h"
main()
{
char operacion [10];
int num1;
int num2;
int result;
printf ("Escribe la operación: suma, resta, multiplicacion");
scanf ("%s",operacion);
if (operacion) "suma"
printf("Escribe el primer numero\n");
scanf("%d",&num1);
printf("Escribe el segundo numero\n");
scanf("%d",&num2);
result=num1+num2;
printf("El resultado es %d\n",result);
else
if (operacion) "resta"
printf("Escribe el primer numero\n");
scanf("%d",&num1);
printf("Escribe el segundo numero\n");
scanf("%d",&num2);
result=num1-num2;
printf("El resultado es %d\n",result);
else
if (operacion) "multiplicacion"
printf("Escribe el primer numero\n");
scanf("%d",&num1);
printf("Escribe el segundo numero\n");
scanf("%d",&num2);
result=num1*num2;
printf("El resultado es %d\n",result);
else
printf("La operación indicada no es valida");
}
En las tres lineas q sale: printf("Escribe el primer numero\n"); sale Estatement Missing ;.
En las tres lineas q sale: else sale Misplaced else
-
Hace muchisimo que no programo, pero en los if, no deberia aparecer algun operador logico? igual, mayor que, menor que, distinto a, en fin, que sepa si eso es verdadero o falso.
-
...hola...primero te falta algo sisntaxis en c...en primer lugar scanf("%tipo_dato",&variable)//no olvides el & y en segundo, hacen falta los corchetes de los if..espero ya te funciones sino...no dudes en preguntar...saludos... :wink: ...
-
Jalp, por que no pruebas con un switch?? A mi lo del if no me parece que esté bien puesto, aunque voy a probarlo ahora...
-
Bueno, he conseguido que no de errores, aunque se sale al introducir la operacion, siempre dice que no es valida.
#include <stdio.h>
#include <conio.h>
main()
{
char operacion [10];
int num1;
int num2;
int result;
printf ("Escribe la operacion: suma, resta, multiplicacion\n");
scanf ("%s",operacion);
if (operacion=="suma")
{
printf("Escribe el primer numero\n");
scanf("%d",&num1);
printf("Escribe el segundo numero\n");
scanf("%d",&num2);
result=num1+num2;
printf("El resultado es %d\n",result);
}
else
if (operacion=="resta")
{
printf("Escribe el primer numero\n");
scanf("%d",&num1);
printf("Escribe el segundo numero\n");
scanf("%d",&num2);
result=num1-num2;
printf("El resultado es %d\n",result);
}
else
if (operacion=="multiplicacion")
{
printf("Escribe el primer numero\n");
scanf("%d",&num1);
printf("Escribe el segundo numero\n");
scanf("%d",&num2);
result=num1*num2;
printf("El resultado es %d\n",result);
}
else
{
printf("La operacion indicada no es valida");
}
getch();
}
===============================
TE faltan las llaves en los if y, como decian antes, yo tambien creo que en el if debe ir un operador lógico. ESto es lo que yo he conseguido.
Besos!,
Tania
-
...bueno, antes me rectifico, no me habia dado cuenta que la opcion era una cadena, por lo que no necesita del &...Tania, me alegra leerte, la operacion te falla porque no puedes comparar cadenas con el ==, eso es para numeros, o a lo mucho para un caracter (o bueno se puede si el == esta sobrecargdao, pero eso se ve despues)...para comparar cadenas existe una funcion:
strcmp(cad1,cad2)//retorna 0 si las cadenas son iguales
...es decir:
if(operacion=="suma")// no se pùede
if(strcmp(operacion,"suma")==0)// es como se debe hacer
...Pero porque no mejor hacen un menu con numero. Por ejemplo:
1. Suma
2. Resta...
scanf("%d",%Opcion)
switch(Opcion){
case 1:...
}
O
if(opcion==1)// aqui si se puede hacer eso...... saludos...
:twisted:
-
Jirho! Yo también me alegro de leerte!
Bueno, mi primera idea fue la del switch. Lo de comprar cadenas no lo sabia (aun no he llegado a esa parte, hehe) :P Pero vamos, que me esta gustando mucho esto, espero cogerle pronto el truco! Y gracias por lo de comprar cadenas, esta noche me mirare algunos ejemplos de eso :)
Un besazo enorme,
Tania
P.D. Aunque suene ridiculo me hace muchisima ilusion todo esto :P
-
Hola de nuevo y gracias por todo.
Haciendo unas pequeñas modificaciones con el menú con números me ha salido este código que si funciona a la perfección.
#include "stdio.h"
main()
int operacion;
int num1;
int num2;
int resultado;
{
printf ("Escriba el número de la operación que desee realizar:\n 1: Suma\n 2: Resta\n 3: Multiplicación\n ");
scanf ("%d",&operacion);
if (operacion==1)
{
printf ("\nSuma\n");
printf (" Escriba el primer número con el que desee operar\n ");
scanf ("%d",num1);
printf (" Escriba el segundo número con el que desee operar\n ");
scanf ("%d",num2);
resultado=num1+num2;
printf ("El resultado es %d",resultado);
}
else {
if (operacion==2)
{
printf ("\nResta\n");
printf (" Escriba el primer número con el que desee operar\n ");
scanf ("%d",num1);
printf (" Escriba el segundo número con el que desee operar\n ");
scanf ("%d",num2);
resultado=num1-num2;
printf ("El resultado es %d",resultado);
}
else {
if (operacion==2)
{
printf ("\nMultiplicación\n");
printf (" Escriba el primer número con el que desee operar\n ");
scanf ("%d",num1);
printf (" Escriba el segundo número con el que desee operar\n ");
scanf ("%d",num2);
resultado=num1*num2;
printf (" El resultado es %d",resultado);
}
else
printf ("El número de operación indicado no es valido")
}}}
Lo que ahora me pregunto, ¿qué código debería de añadir al final para que me muestre un mensaje preguntando que si quiero hacer otra operación, que le tenga que poner si (que vuelva a empezar) o no (que salga del programa)? Se podría hacer con un scanf ¿verdad?
Pero lo que no se hacer es que vuelva a reiniciar el programa y lo de cerrar el programa.
-
Veo que has hecho una chapuza muy maja ;)
Lo de solucionar la comparacion de cadenas con numeros es una solucion pero no tienes ni idea de por qué fallaba antes, con lo cual no aprendes nada haciendolo asi.
En fin, te comento.
No puedes comparar cadenas de caracteres igualandolas. En su lugar, incluye la string.h en las cabeceras y para comparar dos cadenas haces asi:
if (strcmp(operacion,"suma")==0)
Eso te dira si han escrito "suma" o no. Si sustituyes los
if (operacion=="lo que sea")
por lo que te he dicho, tu programa funciona sin problemas.
Para repetir las operaciones, mete el codigo que quieras que se repita dentro de un bucle do-while que se repita hasta que el usuario diga "no".
-
...oye Buho no me regañes delante del publico... :? ... :wink: ...
-
Jirho, pa mi que estaba regañando a Jalp :P
-
Jajaja, si que era a Jalp, pero no le regañaba xDDD
-
Lo primero gracias por vuestra ayuda :D He modificado la estructura y he intentado añadir la división pero no me sale.
#include "stdio.h"
#include "string.h"
main()
{
char operacion [20];
char fin [2];
int num1;
int num2;
int resultado;
printf ("Escriba la operación que desee realizar: (Escribir igual sino no funciona)\n Suma\n Resta\n Multiplicación\n División\n ");
scanf ("%s",operacion);
if (strcmp(operacion,"Suma")==0)
{
printf ("\nSuma\n");
printf (" Escriba el primer número con el que desee operar\n ");
scanf ("%d",&num1);
printf (" Escriba el segundo número con el que desee operar\n ");
scanf ("%d",&num2);
resultado=num1+num2;
printf ("El resultado es %d\n\n",resultado);
}
else {
if (strcmp(operacion,"Resta")==0)
{
printf ("\nResta\n");
printf (" Escriba el primer número con el que desee operar\n ");
scanf ("%d",&num1);
printf (" Escriba el segundo número con el que desee operar\n ");
scanf ("%d",&num2);
resultado=num1-num2;
printf ("El resultado es %d\n\n",resultado);
}
else {
if (strcmp(operacion,"Multiplicación")==0)
{
printf ("\nMultiplicación\n");
printf (" Escriba el primer número con el que desee operar\n ");
scanf ("%d",&num1);
printf (" Escriba el segundo número con el que desee operar\n ");
scanf ("%d",&num2);
resultado=num1*num2;
printf (" El resultado es %d\n\n",resultado);
}
else {
if (strcmp(operacion,"División")==0)
{
printf ("\nDivisión\n");
printf (" Escriba el primer número con el que desee operar\n ");
scanf ("%d",&num1);
printf (" Escriba el segundo número con el que desee operar\n ");
scanf ("%d",&num2);
resultado=(float)num1/(float)num2;
printf ("El resultado es %.2f\n\n",resultado);
}
else {
printf ("El número de operación indicado no es valido\n");
{
/*1*/
}}}}}
printf ("¿Desea realizar otra operación? Si o No\n");
scanf("%s",fin);
if (strcmp(fin,"Si")==0)
{
/*2*/
}
else
{
if (strcmp(fin,"No")==0)
{
/*3*/
}
else
{
/*4*/
}
}
}
¿Que codigo debería poner en /*1*/ y en /*2*/ para que vaya al principio del programa?
¿Y en el /*3*/ para que saliera totalmente?
¿Y en el /*4*/ para que vuelva a formular la pregunta ¿Desea hacer otra operación?
¿Que he fallado en la división? :?:
-
¿Que error te da la division?
Lo de los puntos /*1, 2, 3 y 4*/ pienso que seria bueno ponerlo dentro de un bucle, al menos algunas de las opciones. No obstante, si tu profesor pasa de todo puedes usar la funcion goto, aunque si yo fuera tu profesor no te dejaria usarla ;)
Para salir del programa totalmente puedes usar exit(). Por ejemplol, exit(1);
-
...jeje... Buho sabe que aqui nada de cosas raras, todo va en un ambiente saludable...por otro lado, Jalp, mira que defines num1 y num2 como enteros y en la division los operas como float, eso te da error, y por otro lado, como dice Buho, un ciclo te permite hacer lo que dices de volver al principio y todo eso, recuerda que un ciclo es el que te permite estar dentro de ciertas sentecias hasta que se cumpla una condicion de salida...es decir si el numero no es valido, volver a menu...trabajalo que asi aprendereras... ha y nada de goto....:wink: ...
-
Se me olvido deciroslo, :oops: ya le entregue al profesor la calculadora con el menu de palabras, lo que pasa es que lo del reiniciar la calculadora era por curiosidad. :D
Como se haria lo del bucle?, creo que con while pero no lo se cierto
-
...aqui estamos para probar y eso se hace probando, asi que intenta las modificaciones que puedas, siempre hay un optima solucion y eso te ayudara en el proceso de mejorar la abstarcion de los programas...si con un while es una opcion... :wink: ...juega con el C, aveces te enseña cosas que te asombran... :twisted: ...
-
Se q no es de este tema xo sabeis de algun compilador para c bajo linux?
He intentado con el Kdevelop pero no me funciona.
¿Como nombraria varios bucles y saldría de ellos? Eso aun no lo se :oops:
-
http://www.elrincondelc.com/compila/gcc.html :)
-
Y mas cerquita....
http://www.hackeando.com/programacion1.htm
Aunque lleva mucho tiempo sin actualizar, ahi sigue,
-
Gracias, aqui tenies una versión de la calculadora con switch:
#include "stdio.h"
#include "string.h"
main()
{
char operacion;
int num1;
int num2;
int resultado;
float resultado2;
printf ("Escriba la operación que desee realizar: (Escribir igual sino no funciona)\n +: Suma\n -: Resta\n *: Multiplicación\n /: División\n ");
scanf ("%c",&operacion);
switch(operacion){
case '+':
printf ("\nSuma\n");
printf (" Escriba el primer número con el que desee operar\n ");
scanf ("%d",&num1);
printf (" Escriba el segundo número con el que desee operar\n ");
scanf ("%d",&num2);
resultado=num1+num2;
printf ("El resultado es %d\n\n",resultado);
break;
case '-':
printf ("\nResta\n");
printf (" Escriba el primer número con el que desee operar\n ");
scanf ("%d",&num1);
printf (" Escriba el segundo número con el que desee operar\n ");
scanf ("%d",&num2);
resultado=num1-num2;
printf ("El resultado es %d\n\n",resultado);
break;
case '*':
printf ("\nMultiplicación\n");
printf (" Escriba el primer número con el que desee operar\n ");
scanf ("%d",&num1);
printf (" Escriba el segundo número con el que desee operar\n ");
scanf ("%d",&num2);
resultado=num1*num2;
printf (" El resultado es %d\n\n",resultado);
break;
case '/':
printf ("\nDivisión\n");
printf (" Escriba el primer número con el que desee operar\n ");
scanf ("%d",&num1);
printf (" Escriba el segundo número con el que desee operar\n ");
scanf ("%d",&num2);
resultado2=(float)num1/(float)num2;
printf ("El resultado es %.2f\n\n",resultado2);
break;
default:
printf ("El número de operación indicado no es valido\n");
break;
}}
Ya intentare hacerla con los whiles.
Ahora estoy intentando hacer un ahorcado :wink: ya os lo pasare.
-
... :shock: ...se ve mejor asi, y luego con funciones mucho mejor y luego con clases :shock: y luego con... :twisted: ...