[Programacion en C] Problemas resueltos
A continuacion veremos algunos problemas tipo examen y su solucion, los programas fueron compilados con la version portable de Dev C++.
1. La fuerza de atracción entre dos masas, m1 y m2 separadas por una distancia d, está dada por la fórmula:
F=(G*m1*m2)/d^2
Donde G es la constante de gravitación:
G=9.81
Escriba un programa que lea la masa de dos cuerpos y la distancia entre ellos y a continuación obtenga la fuerza gravitacional entre ellas.
#include
#include
#define G 9.81
float F,m1,m2,d;
int main()
{
printf("introduce el valor de la masa 1: nnt");
scanf("%f", &m1);
printf("introduce el valor de la masa 2: nnt");
scanf("%f", &m2);
printf("introduce el valor de la distancia entre las masas: nnt");
scanf("%f", &d);
F=(G*m1*m2)/(d*d);
printf("n El valor de la fuerza es F=%f nn",F);
getch();
}
2. Escribir un programa que desglose cierta cantidad de segundos introducida por el teclado en su equivalente en semanas, días, horas, minutos y segundos.
#include
#include
long s=0,m=0,h=0,d=0,sem=0, a=0, dia=0, hora=0, minutos=0, seg=0; //x en segundos
int main()
{
printf("introduce el numero de segundos: nnt");
scanf("%ld", &s);
sem = s / 604800;
d=s % 604800;
dia = d / 86400;
h = s % 86400;
hora = h / 3600;
m = s % 3600;
minutos = m/60;
s = s%60;
seg = s/1;
printf("n %ld semana(s) %ld dia(s) %ld hora(s) %ld minuto(s) %ld segundo(s)nn",sem, dia, hora, minutos, seg);
getch();
}
3. Escribir un programa que declare dos variables enteras y las introduzca por teclado, crear una función que reciba las dos variables por referencia e intercambie sus valores.
#include
#include
int x,y;
void invertir(int &n1 ,int &n2);
int main()
{
printf("Introduce x numero: nnt");
scanf("%d", &x);
printf("Introduce y numero: nnt");
scanf("%d", &y);
invertir(x,y);
printf("n Los nuevos valores son x=%d , y=%dnn",x,y);
getch();
}
void invertir(int &n1,int &n2){
int z;
z=n1;
n1=n2;
n2=z;
}
4. Una frase palíndroma es aquella que se lee igual al derecho y al revés, ejemplo:
“Anita lava la tina”
Escribir un programa que introduzca una frase del teclado, a través de una función le mande la palabra como argumento y la función regrese un uno si la frase es palíndroma y un cero si la frase no es palíndroma.
#include
#include
#include
#include
char frase[30];
int p=0;
int palindroma(char[]);
int main(){
cout< <"ingresa una frase"<<endl;
fflush(stdin);
gets(frase);
cout<<endl;
p=palindroma(frase);
if(p==1){
cout<<"La frase es palindroma";
}
else{
cout<<"La frase no es palindroma";
}
getch();
return 0;
}
int palindroma(char frase[]){
char aux1[30];
char aux2[30];
bool palindroma;
palindroma=true;
int offset=0;
int t=strlen(frase);
for(int x=0; x<=t-1;x++){//busca espacios y los elimina
if (frase[x]!=' '){
aux1[x-offset]=frase[x];
}
else{
offset++;
}
}
t=strlen(aux1);
for(int x=0; x<=t-1;x++){//invierte la frase
aux2[x]=aux1[t-x-1];
}
for(int x=0; x<=t-1;x++){//comprueba si son iguales
if(aux1[x]!=aux2[x]){
palindroma=false;
break;}
}
if(palindroma){
return 1;}
else{
return 0;}
}




