/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Errores del Compilador

 
      Índice del Foro elrincondelc.com -> Dev-C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
taskan



Registrado: 01 Feb 2009
Mensajes: 7

MensajePublicado: 01/02/2009 11:35 am
Título: Errores del Compilador

Hola a todos, este es mi primer mensaje en el foro. Mi asunto es el siguiente: he intentado hacer un programa para resolver ecuaciones de segundo grado en C, y cuando lo quiero compilar el compilador me saca unos errores que no entiendo. Me dice que la etiqueta del comando goto (ya se que no esta bien visto, pero de momento lo hago asi) no esta puesta, cuando si que lo esta... despues me tira algunos errores de printfs i scanfs... os dejo el codigo, para k lo compileis i mireis los errores k saca (lo compile con el dev-c++ 4.9.9.2) o directamente me digais si algo esta mal.
Código:
#include<stdio.h>
#include<string.h>
#include<math.h>

int main()
{
    int a;
    int b;
    int c;
    int x;
    int x2;
    char final[3];
   
    printf("Bienvenido al programa");
    iniciar:
    printf("Introduzca la variable a"); /*Pedimos las variables de la ecuacion*/
    scanf("%d", &a);
    printf("Introduzca la variable b");
    scanf("%d", &b);
    printf("Introduzca la variable c");
    scanf("%d", &c);
    if ((a!=0) && (b!=0) && (c!=0));
    {
              if (b*b-4*a*c==0)                                       /*Si la ecuacion es completa, miramos el determinante*/
              {
                              x=(-b+sqrt(b*b-4*a*c))/2*a;
                              printf("X equivale a %d", &x);
                              printf("Desea realizar otra ecuacion?");
                              scanf("%s", &final);
                              if (final=="si") goto iniciar;
                              else goto finalizar;                            /*Aqui es donde me saca el error*/
                              }
              if (b*b-4*a*c>0)
              {
                              x=(-b+sqrt(b*b-4*a*c))/2*a;
                              x2=(-b-sqrt(b*b-4*a*c))/2*a;
                              printf("Ecuación con doble solucion");
                              printf("X equivale a %d", &x);printf("Y X2 equivale a %d", &x2);
                              printf("Desea realizar otra ecuacion?");
                              scanf("%s", &final);
                              if (final=="si") goto iniciar;
                              else goto finalizar;
                              }
              if (b*b-4*a*c<0)
              {
                              printf("Ecuación sin solucion");
                              printf("Desea realizar otra ecuacion?");
                              scanf("%s", &final);
                              if (final=="si") goto iniciar;
                              else goto finalizar;
                              }
                              }
              if((a!=0) && (b==0) && (c!=0))                             /*Si la ecuacion es incompleta, aplicamos la formula*/
              {
                       if(sqrt(-(c/a))>0)   
                       {
                                         x=-sqrt(-(c/a));
                                         x2=+sqrt(-(c/a));
                                         printf("Ecuacion incompleta(b=0)");
                                         printf("X equivale a %d", &x);printf("Y X2 equivale a %d", &x2);
                                         printf("Desea realizar otra ecuacion?");
                                         scanf("%s", &final);
                                         if (final=="si") goto iniciar;
                                         else goto finalizar;
                                         }
                       if(sqrt(-(c/a))<0)
                       {
                                         printf("Ecuación sin solucion");
                                         printf("Desea realizar otra ecuacion?");
                                         scanf("%s", &final);
                                         if (final=="si") goto iniciar;
                                        else goto finalizar;
                                         }
                       if ((a!=0) && (b!=0) && (c==0))                           /*Si la ecuacion es incompleta, aplicamos la formula*/
                       {
                                         x=0;
                                         x2=-(b/a);
                                         printf("Ecuacion incompleta(c=0)");
                                         printf("X equivale a %d", &x);printf("Y X2 equivale a %d", &x2);
                                         printf("Desea realizar otra ecuacion?");
                                         scanf("%s", &final);
                                         if (final=="si") goto iniciar;
                                         else goto finalizar;
                                         }
                                         }
                       if ((a!=0) && (b==0) && (c==0))         /*Si la ecuacion es incompleta, aplicamos la formula*/
                       {
                                         x=0;
                                         printf("Ecuacion incompleta(c=0 y b=0)");
                                         printf("X equivale a %d", &x);
                                         printf("Desea realizar otra ecuacion?");
                                         scanf("%s", &final);
                                         if (final=="si") goto iniciar;
                                         else goto finalizar;
                                         }
                                         };
                       if (a==0)              /*Esta ecuacion no existe!*/
                       {
                                         printf("Ecuación sin solucion");
                                         printf("Desea realizar otra operacion?");
                                         scanf("%s", &final);
                                         if (final=="si") goto iniciar;
                                         else goto finalizar;
                                         }
                                         }
                                         
    finalizar:                                                                      /*Pero la etiqueta esta aqui, no?*/
    return 0
    }


Muchas gracias por adelantado y salu2[/code]
Volver arriba
betopin



Registrado: 05 Ene 2009
Mensajes: 43

MensajePublicado: 01/02/2009 12:04 pm
Título:

Saludos

Son varios los errores...primero el tipo de datos. Si vas a sacar raices deberia ser como minimo float y no int

Si vas a capturar cadenas vasta poner %s,nombre del arreglo

Los puntos y comas tras los if sobran

Tras ver las llaves habian varias llaves que sobraban...dos exactamente

Al return 0 le falta un ;

Tras hacer estas correciones no se me generaron mas errores, aunque te aconsejo que condiciones como estas if (final=="si")

las modifiques mejor por un if (strcmp("si",final)==0)

Saludos
Volver arriba
taskan



Registrado: 01 Feb 2009
Mensajes: 7

MensajePublicado: 02/02/2009 12:09 pm
Título:

Muchas Gracias! Very Happy XD la verdad es que debería haber posteado esto en principiantes, pero creí que se trataban de errores de compilacion... Ya lo he probado y funciona, aunque no como debería, me tocara revisarlo Confused Y, por cierto, por que es mejor poner un strcmp que un if("si"==final)?
Bueno, repito, muchas gracias por todo.
Saludos
Volver arriba
betopin



Registrado: 05 Ene 2009
Mensajes: 43

MensajePublicado: 02/02/2009 2:46 pm
Título:

taskan escribió:
Muchas Gracias! Very Happy XD la verdad es que debería haber posteado esto en principiantes, pero creí que se trataban de errores de compilacion... Ya lo he probado y funciona, aunque no como debería, me tocara revisarlo Confused Y, por cierto, por que es mejor poner un strcmp que un if("si"==final)?
Bueno, repito, muchas gracias por todo.
Saludos


Bueno, porque realmente es un error. Cuando corri el codigo sobre el dev c++, no me generaron warnings ni errores aunque al ir a un TC, se generaban warnings por el estilo

Código:
Code has no effect in function main()


Al ejecutar el codigo, este siempre hacia lo que estaba dentro del if...es como si este no estuviera

Por eso, te sugeri la opcion del strcmp
_________________
Programas en C: Tutoriales y Software
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 4836
Ubicación: Mexico

MensajePublicado: 02/02/2009 3:50 pm
Título:

taskan escribió:
Y, por cierto, por que es mejor poner un strcmp que un if("si"==final)?

Porque C no permite la comparacion de cadenas mediante el operador "==". Cuando se realiza la comparacion:
Código:
"si" == final

Lo que en realidad se compara son las direcciones de memoria donde se localizan la literal "si" y el array 'final', por supuesto esas dos direcciones son distintas.

Para comparar el contenido de dos cadenas la unica es opcion es utilizar una funcion ya sea propia o bien strcmp/strncmp (las dos ultimas parte de la biblioteca estandar de C, prototipos en <string.h>).

Un saludo
_________________
The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
Volver arriba
taskan



Registrado: 01 Feb 2009
Mensajes: 7

MensajePublicado: 06/02/2009 10:45 am
Título:

Ya seguí todos sus consejos. Ahora ya me compila, pero cuando intento que resuelva una ecuacion, o me dice que no existe (cuando sí existe, creo) o me devuelve dos resultados: 0 i 0. Que debería hacer? No se si es porque para hacer esto
Cita:
x=(-b+sqrt(b*b-4*a*c))/2*a;
se hace de otra manera... los parentesis estan puestos para indicar el orden de las operaciones, pero quizás no es así... Haber si me pueden ayudar
Saludos
Volver arriba
      Índice del Foro elrincondelc.com -> Dev-C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com