Por Jesus Gomez Garcia, salon 602 ingenieria en electronica.
Modifique el programa 4.9 para que las raíces imaginarias sean calculadas y desplegadas cuando el discriminante sea negativo. En este caso las dos raíces de la ecuación son:
X= (-b/2a)+((sqrt[-(b^2 – 4ac)]/2a) i
X=(-b/2a)-((sqrt[-(b^2 – 4ac)]/2a) i
Donde I es el símbolo del número imaginario para la raíz cuadrada de -1.
Pseudocodigo del programa original.
a, b, c, disc, raiz1, raiz2 reales
print "Este programa calcula las raices de una"
print "ecuacion cuadratica de la forma "
print "2"
print "ax+bx+c=0"
print "Porfavor introdusca valores para a, b, y c: "
leer a, b, c;
if(a==0.0&&b==0.0)
print"La ecuacion es deganerada y no tiene raices"
else if(a==0.0)
print "La ecuacion tiene la raiz unica X = ", -c/b
else
{
disc=pow(b,2.0) -4*a*c
if(disc>0.0)
{
disc=sqrt(disc);
raiz1=(-b+disc)/(2*a);
raiz2=(-b-disc)/(2*a);
print "Las dos raices reales son", raiz1 " y ", raiz2
}
else if(disc<0.0)
print "Ambas raices son imaginarias"
else
print "Ambas raices son iguales a ", -b/(2*a)
fin.
print "Este programa calcula las raices de una"
print "ecuacion cuadratica de la forma "
print "2"
print "ax+bx+c=0"
print "Porfavor introdusca valores para a, b, y c: "
leer a, b, c;
if(a==0.0&&b==0.0)
print"La ecuacion es deganerada y no tiene raices"
else if(a==0.0)
print "La ecuacion tiene la raiz unica X = ", -c/b
else
{
disc=pow(b,2.0) -4*a*c
if(disc>0.0)
{
disc=sqrt(disc);
raiz1=(-b+disc)/(2*a);
raiz2=(-b-disc)/(2*a);
print "Las dos raices reales son", raiz1 " y ", raiz2
}
else if(disc<0.0)
print "Ambas raices son imaginarias"
else
print "Ambas raices son iguales a ", -b/(2*a)
fin.
double a, b, c, disc, raiz1, raiz2, x1, xa, xb, x1z;
print "Este programa calcula las raices de una"
print " ecuacion cuadratica de la forma "
print " 2";
print " ax+bx+c=0"
print "Porfavor introdusca valores para a, b, y c: "
leer a , b , c;
if(a==0.0&&b==0.0)
print "La ecuacion es deganerada y no tiene raices"
else if(a==0.0)
print " La ecuacion tiene la raiz unica X = ", -c/b
else
{
disc=pow(b,2.0) -4*a*c; //Calcula el discriminante
if(disc>0.0)
{
disc=sqrt(disc);
raiz1=(-b+disc)/(2*a);
raiz2=(-b-disc)/(2*a);
print ""Las dos raices reales son ", raiz1, " y ", raiz2
}
else if(disc<0.0)
{
print "Ambas raices son imaginarias"
x1=pow(b,2.0) -4*a*c;
}
if(x1<=0)
{
x1z=(-1)*(x1);
xa=((-b)-(sqrt(x1z)))/(2.0*a);
xb=((-b)+(sqrt(x1z)))/(2.0*a);
print "Y su resultado es "xa"i", " y ", xb"i"
}
else
{
print "Ambas raices son iguales a "-b/(2*a)
fin.
Codigo en C++ programa original.
#include<iostream.h>
#include<conio.h>
#include<math.h>
//Este programa encuentr las raices de una ecuacion cuadratica
int main()
{
double a, b, c, disc, raiz1, raiz2;
cout<<"Este programa calcula las raices de una\n";
cout<<" ecuacion cuadratica de la forma \n";
cout<<" 2\n";
cout<<" ax+bx+c=0\n\n";
cout<<"Porfavor introdusca valores para a, b, y c: ";
cin>> a >> b >> c;
if(a==0.0&&b==0.0)
cout<<"La ecuacion es deganerada y no tiene raices.\n";
else if(a==0.0)
cout<<" La ecuacion tiene la raiz unica X = "<<-c/b<<endl;
else
{
disc=pow(b,2.0) -4*a*c; //Calcula el discriminante
if(disc>0.0)
{
disc=sqrt(disc);
raiz1=(-b+disc)/(2*a);
raiz2=(-b-disc)/(2*a);
cout<< "Las dos raices reales son"<<raiz1<<" y "<<raiz2<<endl;
}
else if(disc<0.0)
cout<<"Ambas raices son imaginarias.\n";
else
cout<<"Ambas raices son iguales a "<<-b/(2*a)<<endl;
}
getch();
}
Programa Original.
Codificacion en C++ Modificado para dar raices imaginarias.
#include<iostream.h>
#include<conio.h>
#include<math.h>
//Este programa encuentr las raices de una ecuacion cuadratica
int main()
{
float a, b, c, disc, raiz1, raiz2, x1, xa, xb, xz;
cout<<"Este programa calcula las raices de una\n";
cout<<" ecuacion cuadratica de la forma \n";
cout<<" 2\n";
cout<<" ax+bx+c=0\n\n";
cout<<"Porfavor introdusca valores para a, b, y c: ";
cin>> a >> b >> c;
if(a==0.0&&b==0.0)
cout<<"La ecuacion es deganerada y no tiene raices.\n";
else if(a==0.0)
cout<<" La ecuacion tiene la raiz unica X = "<<-c/b<<endl;
else
{
disc=pow(b,2.0) -4*a*c; //Calcula el discriminante
if(disc>0.0)
{
disc=sqrt(disc);
raiz1=(-b+disc)/(2*a);
raiz2=(-b-disc)/(2*a);
cout<< "Las dos raices reales son "<<raiz1<<" y "<<raiz2<<endl;
}
else if(disc<0.0)
{
cout<<"Ambas raices son imaginarias.\n";
x1=pow(b,2.0) -4*a*c;
}
if(x1<=0)
{
xz=(-1)*(x1);
xa=((-b)-(sqrt(xz)))/(2.0*a);
xb=((-b)+(sqrt(xz)))/(2.0*a);
cout<<"Y su resultado es "<<xa<<"i"<<" y "<<xb<<"i";
}
else if(disc==0)
{
cout<<"Ambas raices son iguales a "<<-b/(2*a)<<endl;
}}
getch();
}
Programa.
-------------------------------------------------------------------------------------------------------------
Tarea # 2
La multiplicación rusa se realiza un tanto diferente a lo que nosotros estamos acostumbrados. Para multiplicar 2 números multiplicador por multiplicando se realiza el siguiente proceso: Se multiplica repetidamente por 2 el multiplicador hasta que el multiplicador tome el valor 1. Luego se suman todos los multiplicandos correspondientes a los multiplicadores impares. Dicha suma es el resultado del producto de los 2 números.
Pseudocodigo.
imp=0, n2, n1 entero
print "Introdusca multiplicador: "
read n1
print "Introdusca multiplicando: "
read n2
while(n1>=1)
{
if(n1%2!=0)
{
imp=imp+n2
n1=n1/2
n2=n2*2
}
else
{
n1=n1/2
n2=n2*2
}
}
print "El resultado es: " imp
Codigo en C++
#include<iostream.h>
#include<conio.h>
void main()
{
int imp=0, n2, n1;
cout<<"Introdusca multiplicador: ";
cin>>n1;
cout<<"Introdusca multiplicando: ";
cin>>n2;
cout<<endl;
while(n1>=1)
{
if(n1%2!=0)
{
imp=imp+n2;
n1=n1/2;
n2=n2*2;
}
else
{
n1=n1/2;
n2=n2*2;
}
}
cout<<"El resultado es: "<<imp<<endl;
getch();
}
Programa.
---------------------------------------------------------------------------------------------------------
Tarea # 3.
Escriba un programa que lea un entero y un carácter, la salida debe ser un rombo dibujado con el carácter dado y de anchura máxima dada por el entero leído, el programa debe repetir el proceso hasta que la anchura sea 0.
C++.
#include<iostream.h>
#include<conio.h>
#include<iomanip.h>
void main()
{
char c;
int n, i=1, z;
cout<<"Inserte la anchura y el caracter porfavor: ";
cin>>n>>c;
cout<<endl;
for(i=0; i<n; i++)
{
cout<<setw(n-i)<<c;
for(z=n-i; z<n; z++)
{
cout<<setw(2)<<c;
}
cout<<endl;
}
for(i=n-2; i>0; i--)
{
cout<<setw(n-i)<<c;
for(z=n-i; z<n; z++)
{
cout<<setw(2)<<c;
}
cout<<endl;
}
cout<<setw(n-i)<<c;
getch();
}
Programa.
No hay comentarios:
Publicar un comentario