Menú

Mostrar Mensajes

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

Mostrar Mensajes Menú

Mensajes - DickGumshoe

#461
Cita de: $Edu$ en  9 Noviembre 2011, 23:47 PM
Jeje esta bueno el ejercicio, intentalo hacer en papel y lapicera primero pensando siempre en todas los posibles numeros que ingresara el usuario.

Busca sobre ordenamiento burbujeo para saber la idea general, luego yo tomaria el valor del primer numero en una variable ( a ) y luego el resto en un array el que haras un ordenamiento burbujeo pero personalizado para tu ejercicio, talvez restar el primer item del array entre a y si el resultado es menor al resultado del segundo item del array restado por a no haces ningun cambie de orden, pero si es mayor, haces el cambio.

Despues con alguna variable auxiliar controlas si de esas cuentas que hiciste existe algun - 1 como resultado, y ahi te darias cuenta que hay 2 numeros proximos como en el ejemplo que mostraste.

Intenta aprender el burbujeo y lo traes aca con tu burbujeo personalizado

Te digo esta forma de hacerlo porque tu forma es poco fiable, fijate que haces las cuentas mientras va ingresando los valores, en vez de hacer todo una vez q se ingresaron todos los datos, porque talvez tienes que hacer que una funcion devuelva los numeros proximos y ahi no podras hacer eso que haces

Muchas gracias, pero lo que pasa es que me gustaría aprender bien a usar if y else, ya que programas como este, no me salen por ejemplo con esos códigos, y si avanzo más,  quizá me líe un poco...

En papel he puesto todas las posibilidades que hay, lo que pasa que después al intentar pasarlo, no sé cómo podría hacerlo...

Muchas gracias de nuevo.

Saludos.
#462
¡Hola!

Estoy creando un pequeño programa, en el que introduzco cinco números, y debe calcularme el más próximo al primero. Por ejemplo, si pongo 5,9,6,3,1; sería 6 el número más próximo al primero. O si pongo 5,7,4,6,9; los números más próximos son dos; 6 y 4.

Pero llevo toda la tarde intentándolo, y nada...

El código que tengo por ahora es:

Código (cpp) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

int main (void){
 
    float n,n_mejor,d_mejor,a,d;
   
    printf("Introduce el primer numero");
    scanf("%f",&a);
   
    printf("Introduce el segundo numero");
    scanf("%f",&n);
   
  d_mejor=(n-a)*(n-a);
   
    printf("Introduce el tercer numero");
    scanf("%f",&n);
   
  d_mejor=(n-a)*(n-a);
  if(d<d_mejor){
                d_mejor=d;
                n_mejor=n;
                }
   
         
         
    printf("Introduce el cuarto numero");
    scanf("%f",&n);
   
    d_mejor=(n-a)*(n-a);
  if(d<d_mejor){
                d_mejor=d;
                n_mejor=n;
                }
           
    printf("Introduce el quinto numero");
    scanf("%f",&n);
     
                 d_mejor=(n-a)*(n-a);
  if(d<d_mejor){
                d_mejor=d;
                n_mejor=n;
                }
               

         printf("El numero mas cercano al primero es %f",n);
             
   
    system("pause");
}
   


Ah, d_mejor es la distancia menor entre "a" y cualquier otro número.

Ah ,y el programa me gustaría hacerlo con if, else, printf y scanf, para mejorar el uso de ellos e ir poco a poco aprendiendo programación.

Muchísimas gracias.
#463
Ah, muchas gracias a todos ^^

Acabo de hacerlo de varias maneras; con la librería <complex>, que me ha ayudado ghastly, como me ha dicho Ferno, y como me ha dicho тαптяαпсє.

Muchas gracias a todos los que me habéis ayudado.

Saludos.
#464
Muchísimas gracias a los dos. Gracias a vosotros ya no me sale como resultado lo del -1#IND00, pero  lo que sí me da mal es el resultado final. Por ejemplo de la ecuación x^2 2x 2=0, me da como resultados 0+i y -1-i... Y debería ser 2+i y -2-i... (No lo hago como тαптяαпсє porque no he llegado a la función de los "cout", y prefiero mejorar lo que sé con los if, else, printf, etc., para después dar un paso más.

El código ahora es:

Código (cpp) [Seleccionar]
//Este programa calcula la solucion de una ecuacion de segundo grado introduciendo los coeficientes


#include<stdio.h>
#include<stdlib.h>
#include<math.h>

int main (void){
   float a,b,c,x1,x2,x,z,y1,y2,form=pow(b*b-4*a*c,0.5);

   printf("\n Introduce el primer coeficiente");
   scanf("%f",&a);


   printf("\n Introduce el segundo coeficiente");
   scanf("%f",&b);


   printf("\n Introduce el tercer coeficiente");
   scanf("%f",&c);
   
   y1=(b*b)-4*a*c;

   if(a!=0){
     if(b*b-4*a*c>=0){
       x1=(-b+pow(b*b-4*a*c,0.5))/(2*a);
       x2=(-b-pow(b*b-4*a*c,0.5))/(2*a);
       printf("\n Las dos soluciones son %f y %f", x1,x2);
     }
     
     else{
         if(y1<0){
                         y1=(-b+sqrt(y1*(-1)))/(2*a);
                         y2=(-b-sqrt(y1*(-1)))/(2*a);
                         
   
           printf("\n La solucion es %f+i y %f-i", y1,y2);
         }
     
     
     else{
             if(b*b-4*a*c==0){
             z=-b/(2*a);                
             printf("\n La solucion es %f",z);
             }    
           }

       }
    }

    if(a==0){
      if(b!=0){
        x=(-c)/b;  
        printf("\n La solucion es %f", x);
      }
       else{
         if((b==0)&&(c!=0)){
         printf("\n No tiene solucion");
         }  
           else{
             if((b==0)&&(c==0)){
             printf("\n La solucion es trivial", x);                    
             }
           }        
       }


    }

    printf("\n");


system ("pause");  
}



Muchas gracias.
#465
Muchas gracias.

Lo he puesto así:

Código (cpp) [Seleccionar]
...

if(a!=0){
      if(b*b-4*a*c>=0){
        x1=(-b+pow(b*b-4*a*c,0.5))/(2*a);
        x2=(-b-pow(b*b-4*a*c,0.5))/(2*a);
        printf("\n Las dos soluciones son %f y %f", x1,x2);
      }
        else{
          if(b*b-4*a*c<0){
        x1=(-b+pow(b*b-4*a*c,0.5))/(2*a);
        x2=(-b-pow(b*b-4*a*c,0.5))/(2*a);   
            printf("\n La solucion es %f i y %f i", x1,x2);
          }

...

Pero la solución de, por ejemplo 1x^2 2x 2 me da -1#IND00 i y -1#IND00 i...

Estoy aprendiendo a programar, y todavía no me sale muy bien algunas cosas...

Muchas gracias.

#466
¡Hola!

Estaba haciendo un programa, el cual me calcula las soluciones de las ecuaciones de segundo grado. Mi código es el siguiente:



Código (cpp) [Seleccionar]

//Este programa calcula la solucion de una ecuacion de segundo grado introduciendo los coeficientes


#include<stdio.h>
#include<stdlib.h>
#include<math.h>

int main (void){
    float a,b,c,x1,x2,x,z;
   
    printf("\n Introduce el primer coeficiente");
    scanf("%f",&a);
   
   
    printf("\n Introduce el segundo coeficiente");
    scanf("%f",&b);
   
   
    printf("\n Introduce el tercer coeficiente");
    scanf("%f",&c);
   
    if(a!=0){
      if(b*b-4*a*c>=0){
        x1=(-b+pow(b*b-4*a*c,0.5))/(2*a);
        x2=(-b-pow(b*b-4*a*c,0.5))/(2*a);
        printf("\n Las dos soluciones son %f y %f", x1,x2);
      }
        else{
          if(b*b-4*a*c<0){
            printf("\n No tiene solucion real");
          }
            else{
              if(b*b-4*a*c==0){
              z=-b/(2*a);                 
              printf("\n La solucion es %f",z);
              }     
            }
           
        }
     }
     
     if(a==0){
       if(b!=0){
         x=(-c)/b;   
         printf("\n La solucion es %f", x);
       }
        else{
          if((b==0)&&(c!=0)){
          printf("\n No tiene solucion");
          }   
            else{
              if((b==0)&&(c==0)){
              printf("\n La solucion es trivial", x);                     
              }
            }         
        }
               
     
     }
     
     printf("\n");
   
   
system ("pause");   
}


Pero ahora quiero que en vez de ponerme "No tiene solución real", me calcule la solución con números complejos... ¿Cómo podría hacerlo? No veo conveniente declarar la "i" como variante, pero si no la pongo, tampoco sale...

Muchísimas gracias.
#467
Programación C/C++ / Re: Error al compilar
1 Noviembre 2011, 12:14 PM
Ah, ¡muchísimas gracias! Ya ese error no me sale. No me había dado cuenta de que le había metido uno ahí...

Ahora me da otro error más para abajo...

else{
                me=me;
                d=d+1;
                h=0;
                m=0;
                s=0;
                }
               
             
               
               
        //AQUÍ ERROR        else{ if ((me==4||me==6||me==9||me==11)&(d==30)){
                me=me+1;
                d=0;
                h=0;
                m=0;
                s=0;
                }


El error dice que es " expected primary-expression before "else" " expected `;' before "else" "

Muchas gracias!

Saludos

EDITO


Ya me ha salido esto último por mí mismo; muchas gracias a todos!
#468
Programación C/C++ / Re: Error al compilar
1 Noviembre 2011, 10:28 AM
Ah, ese paréntesis lo puse porque no me salía, y estaba probando varias opciones; pero incluso poniendo en esa línea un, dos, tres o ningún paréntesis, me da el mismo error...


                 else{
     //AQUÍ ERROR                  if{        ((me==1)||(me==3)||(me==5)||(me==7)||(me==8)||(me==10)||(me==12)&(d!=31)){                          
                me=me+1;
                d=0;
                h=0;
                m=0;
                s=0;}


Y así también me sigue dando error:

else{
                       if{        (me==1)||(me==3)||(me==5)||(me==7)||(me==8)||(me==10)||(me==12))&(d!=31){                          
                me=me+1;
                d=0;
                h=0;
                m=0;
                s=0;}


(Aunque lo que sé que en realidad es correcto es el primer código que he puesto en este mismo mensaje, ya que abro el primer paréntesis para todo el if{, el segundo para englobar a me==1, ya empiezo a abrir paréntesis dentro del if, pero todos los cierro, y por último, cierro el paréntesis de d!=31 y el paréntesis del if...

Pero muchísimas gracias por responderme ^^
#469
Programación C/C++ / Error al compilar
1 Noviembre 2011, 02:24 AM
¡Hola!

Estaba haciendo un pequeño programa; el cual debe calcularme el mes, día, hora, minuto y segundo que será si le sumo 1 segundo (y posteriormente, le añadiré los años).

Tengo todo terminado, pero al compilar me da el error "expected ´(´ before ´{´ token (línea 48; la dejaré anotada al poner el código).

Bueno, el código es:



//programa para sumar un segundo a los segundos, minutos, horas, dias, meses y años

#include <stdio.h>
#include <stdlib.h>



int main (void){
   
    int me, d, h, m, s;
   
    printf("\n Escribe el numero del mes");
    scanf("%d",&me);
   
    printf("\n Escribe los dias");
    scanf("%d",&d);
   
    printf("\n Escribe las horas");
    scanf("%d",&h);
   
    printf("\n Escribe los minutos");
    scanf("%d",&m);
   
    printf("\n Escribe los segundos");
    scanf("%d",&s);
   
   
    printf("\n");
   
    if (s!=59){
      s=s+1;
      }
      else{
        if(m!=59){
                  m=m+1;
                  s=0;
                  }
        else{
        if(h!=23){
        h=h+1;
        m=0;
        s=0;
        }
         
       
         
           
        else{     
   //ESTA LÍNEA ES LA QUE DA ERROR             if{     (((me=1)||(me=3)||(me=5)||(me=7)||(me=8)||(me=10)||(me=12))&(d!=31)){                       
                 me=me+1;
                 d=0;
                 h=0;
                 m=0;
                 s=0;}
                 
             else{
                 me=me;
                 d=d+1;
                 h=0;
                 m=0;
                 s=0;}
                 
               
                 
               
                 else{if (((me==4)||(me==6)||(me==9)||(me==11))&(d==30))){
                 me=me+1;
                 d=0;
                 h=0;
                 m=0;
                 s=0;}
                 
                 else{
                 me=me;
                 d=d+1;
                 h=0;
                 m=0;
                 s=0;}
                     
                         
                         
                         }
                 
                 }
                 
                         }
                         }                   
                     
        }
     
     
       
      printf("Los meses, las horas, los minutos y los segundos un segundo despues son  %d mes %d dias %d h %d min %d s \n", me,d,h,m,s);
       
   
    system("pause");
}


Por favor, ¿alguien podría ayudarme?

Muchísimas gracias.
#470
Muchas gracias por la aclaración, do-while ^^