Vous êtes sur la page 1sur 30

Captulo 7

Problemas 7.18
Problema 7.3_Escribir
una funcin que
convierta una temperatura dada en grados Celsius a
grados Fahrenheit. La frmula de conversin es:

9
F= C+ 32
5

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

float CelsiusAFarenheit(float num1);

void main()
{
float a, c;
printf("Ingrese el valor de la Temperatura en C:");
scanf_s("%f", &a);

c = CelsiusAFarenheit(a);

printf("El valor de la Temperatura en Farenheit es :%f", c);

_getch();

float CelsiusAFarenheit(float num1)


{
float num2;
num2 = (9 * num1) / 5 + 32;
return(num2);
}
Problema 7.6_ Escribir una funcin redondeo, que acepte un valor real cantidad y un valor
entero decimales y devuelva el valor cantidad redondeado al nmero especificado de
decimales. Ejemplo: redondeo (20,563), devuelve 20,56.

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

void redondeada(float cantidad, int decimales);


void main()

{
float a, b;
printf("Ingrese el valor de Real :");
scanf_s("%f", &a);

printf("Ingrese el valor de crifas decimales en entero :");


scanf_s("%f", &b);

redondeada(a, b);

_getch();

}
void redondeada(float cantidad, int decimales)
{
printf("%.*f", decimales, cantidad);

}
Problemas 7.19
Problema7.4 _ Escribir un programa mediante una funcin que acepte un numero de da,
mes y ao y lo visualice en el formato dd/mm/aa
#include <stdio.h>
#include <conio.h>
#include <math.h>
int dia(int num1);
int mes(int num2);
int anio(int num3);

void main()

{
int a, b, c, d, e, f;
printf("Ingrese el dia:");
scanf_s("%d", &a);

printf("Ingrese el mes:");
scanf_s("%d", &b);

printf("Ingrese el anio:");
scanf_s("%d", &c);

d = dia(a);
e = mes(b);
f = anio(c);

printf("La Fecha Ingresada es :%d/%d/%d", d, e, f);

_getch();
}

int dia(int num1)


{
if (num1 > 0 && num1 <= 31)
{
int num4;
num4 = num1;
return(num4);
}
else
return(0);
}
int mes(int num2)
{
if (num2 > 0 && num2 <= 12)
{
int num4;
num4 = num2;
return(num4);
}
else
return(0);
}
int anio(int num3)
{
if (num3 > 0 )
{
int num4;
num4 = num3;
return(num4);
}
else
return(0);
}

Problema7.5_Escribir un programa que utilice una funcin para convertir coordenadas


polares a rectangulares:
#include <stdio.h>
#include <conio.h>
#include <math.h>
#define PI 3.1416

double CoordenadaX(double num1, double num2);


double CoordenadaY(double num1, double num2);
double ConvertirGradosARadianes(double b);

void main()

{
double a, b, x, y;
printf("Conversion de Coordenadas Polares a Rectangulares\n");
printf("Ingrese el valor del radio :");
scanf_s("%lf", &a);

printf("Ingrese el valor del angulo en grados :");


scanf_s("%lf", &b);
b = ConvertirGradosARadianes(b);

x = CoordenadaX(a,b);
y = CoordenadaY(a, b);

printf("El valor de la Coordenada en X es :%.3lf\n", x);

printf("El valor de la Coordenada en X es :%.3lf", y);

_getch();

double CoordenadaX(double num1, double num2)


{
double num3;
num3 = num1*cos(num2);
return(num3);
}

double CoordenadaY(double num1, double num2)


{
double num3;
num3 = num1*sin(num2);
return(num3);
}
double ConvertirGradosARadianes(double b)
{
return(b = (b*pi) / 180);
}

Problema7.8 _ Escribir un programa que lea los dos enteros positivos n y b que llame a
una funcin Cambiar Base para calcular y visualizar la representacin del nmero n en la
base b.
#include <stdio.h>
#include <conio.h>
#include <math.h>

float Cambiar_Base(float num1, float num2);

void main()

{
float n, b, c;
printf("Funcion Cambiar_Base\n");
printf("Ingrese el valor al que quiere elevar la base:");
scanf_s("%f", &n);

printf("Ingrese el valor de la base:");


scanf_s("%f", &b);

c = Cambiar_Base(n,b);

printf("El valor de %.2f elevado al %.2f es:%.2f", b, n, c);

_getch();
}

float Cambiar_Base(float num1, float num2)


{
float num3;
num3 = pow(num2, num1);
return(num3);
}
Problema 7.9_ Escribir un programa que permita el clculo del mcd de dos nmeros por el
algoritmo de Euclides. (Dividir a entre b, se obtiene el cociente q y el resto r si es cero b es
el mcd, si no se divide b entre rm y as sucesivamente hasta encontrar un resto cero, el
ltimo divisor es el mcd. La funcin mcd devolver el mximo comn divisor.
#include <stdio.h>
#include <math.h>
#include <conio.h>

void leer(long *pn1, long *pn2);


long mcd(long n1, long n2);
void imprimir(long n1, long n2, long m);

void main()
{
long n1, n2; //Datos de entrada
long m; //Dato de salida o mcd

//Llamada a la funcion leer


leer(&n1, &n2);
//LLamada a la funcion mcd
m = mcd(n1, n2);
//Llamada a la funcion imprimir
imprimir(n1, n2, m);
//Dividir sucesivamente los dos numeros.

_getch();
}

//Implementacion de funciones
long mcd(long n1, long n2)
{
long D, d, R;
long m;
D = n1; d = n2;
do{
R = D%d;
D = d; d = R;
} while (d != 0);
m = D; //variable auxiliar
return m;
}
void leer(long *pn1, long *pn2)
{
printf("Ingrese el primer numero ");
scanf_s("%ld", pn1);
printf("Ingrese el segundo numero:");
scanf_s("%ld", pn2);
}
void imprimir(long n1, long n2, long m)
{
printf("El MCD entre %ld y %ld es: %ld", n1, n2, m);
}

Problema 7.10_Escribir una funcin que devuelva el inverso de un numero dado (1234,
inverso 4321)
#include <stdio.h>
#include <math.h>
#include <conio.h>
//Las funciones que utilizaremos
int vuelta(int n);

void main()

{
int n;
int c;

//La funcion imprimir puede ser funcion o estar implicita


printf("\n Introduzca un numero entero: ");
scanf_s("%d", &n);

c = vuelta(n);

//Llamada a la funcion imprimir


printf("\n El inverso es: %d", c);
_getch();
}
//Implementacion de la funcion vuelta
int vuelta(int n)
{
int inverso=0;
int digito=0;
do
{
digito = n % 10;

inverso = inverso * 10 + digito;


n = n / 10;
} while (n > 0);

return inverso;
}

Problema 7.11_ Calcular el coeficiente del binomio con una funcion factorial.
m!
( m )= donde m!=1 si m=0 ; 1,2,3 si m=! 0
n ! ( mn ) !

(n)

// Libreras
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
// Prototipos de las funciones.
long Factorial(long n);
void Leer(long *pm, long *pn);
long Serie(long m, long n);
void Imprimir(long n);

void main()
{
long m, n, mCn;

printf("Calculo de mCn ( m > n) \n");

Leer(&m, &n);

mCn = Serie(m, n);

Imprimir(mCn);

_getch();
}

void Leer(long *m, long *n)


{
printf("Ingrese el valor de m: ");
scanf_s("%ld", m);
printf("Ingrese el valor de n: ");
scanf_s("%ld", n);
}

long Factorial(long n)
{
long i; // Contador
long producto = 1; // Acumulador
for (i = 1; i <= n; i++)
{
producto = producto * i;
}
return(producto);
}

long Serie(long m, long n)


{
long num, den, mCn = 0;

num = Factorial(m);
den = (Factorial(n)*Factorial(m - n));
mCn = num / den;
return (mCn);
}

void Imprimir(long n)
{
printf("El mCn es igual a: %ld", n);
}

Problema 7.19_ Escribir un programa que lea una cadena de hasta diez caracteres que
representa a un nmero en numeracin romana e imprima el formato del nmero romano y
su equivalente en numeracin arbiga.
Captulo Arrays
3 Problema 3_
#include<conio.h>
#include<stdio.h>
#include<math.h>
#include <iostream>
int Random()
{
return rand() % 6 + 1;
}
void main()
{
int num;
printf("Ingrese el numero de lanzamientos: ");
scanf_s("%d",&num);
int sum;
int arreglo[100];
printf("N\t suma\t exitoso\n");
for (int i = 0; i < num; i++)
{
sum = Random() + Random();
arreglo[i] = sum;
printf("%d\t%d", i + 1, sum);
if (sum == 7)
printf("\tsi\n");
else
printf("\tno\n");
}
_getch();

}
Problema 6_ Una empresa le paga por comisin a su personal de ventas. Los vendedores
reciben una cantidad entera de 200 dlares por semana ms el 9% de sus ventas brutas de
dicha semana. Por ejemplo, un vendedor que vende 3000 dlares en ventas brutas en una
semana recibe 200 dlares ms el 9% de 3000 dlares o sea un total de 470 dlares.
Escribir un programa que ingrese desde teclado las ventas de los vendedores, utilizando un
array que determine cuantos de los vendedores ganaron salarios en cada uno de lo rangos
siguientes:
1) 200-299 dlares
2) 300-399 dlares
3) 400-499 dlares
4) 500-599 dlares
5) 600-699 dlares
6) 700-799 dlares
7) 800-899 dlares
8) 900-999 dlares
9) I000 dlares o mas
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>

#define Num 10000


#define P 0.09
#define S 200

void main()
{
float Arrayvendedores[Num];
float Arraycomision[Num];
int i,j, n1,a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0,l=0;

// Leer el numero de trabajadores


printf ("Ingrese el numero de trabajadores:");
scanf_s("%d",&n1);
printf ("Ingrese el valor en ventas por cada vendedor:\n");
for (i=0; i<n1;i++)
{
printf("vendedor %d=",i);
scanf_s("%f",&Arrayvendedores[i]);
}

for (j=0; j<n1;j++)


{
Arraycomision[j] =((Arrayvendedores[j])*P + S);
}
printf ("Sueldo vendedores:\n");

for(i=0,j=0; i<n1,j<n1;i++,j++)
{

printf("vendedor %d= %.2f\n",j,Arraycomision[i]);


}

for (j=0;j<n1;j++)
{
if (Arraycomision[j]<=299)
{a=a+1; };
}
printf("Sueldos de 200 a 299=%d\n",a);

for (j=0;j<n1;j++)
{
if ((300 <=Arraycomision[j])&&(Arraycomision[j]<=399))
{b=b+1; };
}
printf("Sueldos de 300 a 399=%d\n",b);

for (j=0;j<n1;j++)
{
if ((400 <=Arraycomision[j])&&(Arraycomision[j]<=499))
{c=c+1; };
}
printf("Sueldos de 400 a 499=%d\n",c);

for (j=0;j<n1;j++)
{
if ((500 <=Arraycomision[j])&&(Arraycomision[j]<=599))
{d=d+1; };
}
printf("Sueldos de 500 a 599=%d\n",d);
for (j=0;j<n1;j++)
{
if ((600 <=Arraycomision[j])&&(Arraycomision[j]<=699))
{e=e+1; };
}
printf("Sueldos de 600 a 699=%d\n",e);

for (j=0;j<n1;j++)
{
if ((700 <=Arraycomision[j])&&(Arraycomision[j]<=799))
{f=f+1; };
}
printf("Sueldos de 700 a 799=%d\n",f);

for (j=0;j<n1;j++)
{
if ((800 <=Arraycomision[j])&&(Arraycomision[j]<=899))
{g=g+1; };
}
printf("Sueldos de 800 a 899=%d\n",g);

for (j=0;j<n1;j++)
{
if ((900 <=Arraycomision[j])&&(Arraycomision[j]<=999))
{h=h+1; };
}
printf("Sueldos de 900 a 999=%d\n",h);

for (j=0;j<n1;j++)
{
if (1000<=Arraycomision[j])
{l=l+1; };
}
printf("Sueldos de 1000 en adelante=%d\n",l);

_getch();
}
Problema 8_

#include <stdlib.h>
#include <conio.h>
#include<iostream>

int i = 1, j = 6;
void seleccion_menu(int asiento);
void numero_asiento(int asientos[10], int clase);
void imprimir_pasep(int asientos[10]);
void imprimir_paset(int asientos[10]);
using namespace std;
int main()
{
int menu, asientos[10];
char continuar;
do
{
system("cls");
cout << "Porfavor digite 1 para primera clase o 2 para clase turista: ";
cin >> menu;
seleccion_menu(menu);
numero_asiento(asientos, menu);
cout << "\nDesea continuar? (s/n) : ";
cin >> continuar;
} while (continuar == 's' || continuar == 'S');
_getch();
return 0;
}
void seleccion_menu(int asiento)
{
switch (asiento)
{
case 1:
cout << "\nUsted selecciono primera clase, a continuacion se le asignara un
asiento: " << endl;
break;
case 2:
cout << "\nUsted selecciono clase turista, a continuacion se le asignara un
asiento: " << endl;
break;
default:
cout << "\nError, debe digitar 1 para primera clase o 2 para turista." << endl;
}
}
void numero_asiento(int asientos[10], int clase)
{
char cambio;
switch (clase)
{
case 1:
if (clase == 1 && i<6)
{
asientos[i] = 1;
cout << "Su asiento es el numero " << i << " en primera clase.";
imprimir_pasep(asientos);
i++;
}
else
{
cout << "\nLa primera clase esta llena,\nAcepta que lo asignemos en
clase turista?(s/n)" << endl;
cin >> cambio;
if (cambio == 's' && j<11)
{
asientos[j] = 1;
cout << "Su asiento es el numero " << j << " en clase
turista.";
imprimir_paset(asientos);
j++;
}
else
{
if (cambio == 's' && j>10)
{
cout << "\nAmbas clases estan llenas" << endl;
cout << "\nLamentamos las molestias, el siguiente
vuelo parte en 3 horas" << endl;
}
else
{
cout << "\nLamentamos las molestias, el siguiente
vuelo parte en 3 horas" << endl;
}
}
}
break;
case 2:
if (clase == 2 && j<11)
{
asientos[j] = 1;
cout << "Su asiento es el numero " << j << " en clase turista.";
imprimir_paset(asientos);
j++;
}
else
{
cout << "\nLa clase turista esta llena,\nAcepta que lo asignemos en
primera clase?(s/n)" << endl;
cin >> cambio;
if (cambio == 's' && i<6)
{
asientos[i] = 1;
cout << "Su asiento es el numero " << i << " en primera
clase.";
imprimir_pasep(asientos);
i++;
}
else
{
if (cambio == 's' && i>5)
{
cout << "\nAmbas clases estan llenas" << endl;
cout << "\nLamentamos las molestias, el siguiente
vuelo parte en 3 horas" << endl;
}
else
{
cout << "\nLamentamos las molestias, el siguiente
vuelo parte en 3 horas" << endl;
}
}
}
}
}
void imprimir_pasep(int asientos[10])
{
cout << "\n________________________________________________________"
<< endl;
cout << "| |" << endl;
cout << "| |" << endl;
cout << "| # de asiento: " << i << " |" << endl;
cout << "| |" << endl;
cout << "| Clase: Primera |" << endl;
cout << "| |" << endl;
cout << "| |" << endl;
cout << " ________________________________________________________" <<
endl;
}
void imprimir_paset(int asientos[10])
{
cout << "\n________________________________________________________"
<< endl;
cout << "| |" << endl;
cout << "| |" << endl;
cout << "| # de asiento: " << j << " |" << endl;
cout << "| |" << endl;
cout << "| Clase: Turista |" << endl;
cout << "| |" << endl;
cout << "| |" << endl;
cout << " ________________________________________________________" <<
endl;
}
Problema 11_
#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;

void main()
{
int n, i, j, A[50], aux;

cout << "Ingrese la Cantidad de Nuemeros a Ingresar: ";


cin >> n;
//LLENA EL VECTOR
for (i = 1; i <= n; i++)
{
cout << "Vector Numero " << i << " :";
cin >> A[i];
}
//REALIZA LA ORDENACION
for (i = 1; i <= n - 1; i++)
{
for (j = 1; j <= n - 1; j++)
{
if (A[j]>A[j + 1])
{
aux = A[j];
A[j] = A[j + 1];
A[j + 1] = aux;
}
}
}
//IMPRIME LOS DATOS ORDENADOS
cout << "ascendente: ";
for (i = 1; i <= n; i++)
{
cout << "," << A[i];
}
cout << "\ndecendente: ";
for (i = n; i >= 1; i--)
{
cout << "," << A[i];
}
_getch();
}

Problema 12_
#include <stdio.h>
#include <iostream>
#include <conio.h>
void main()
{
int n;
printf("ingrese el numero de elementos: ");
scanf_s("%d", &n);
int elem[100];
for (int i = 0; i < n; i++)
{
printf("N%d: ",i+1);
scanf_s("%d", &elem[i]);
}
int frecuencia[9];
for (int i = 0; i < 9; i++)
{
frecuencia[i] = 0;
}

for (int i = 0; i < n; i++)


{
if (elem[i] == 1)
frecuencia[0]++;
if (elem[i] == 2)
frecuencia[1]++;
if (elem[i] == 3)
frecuencia[2]++;
if (elem[i] == 4)
frecuencia[3]++;
if (elem[i] == 5)
frecuencia[4]++;
if (elem[i] == 6)
frecuencia[5]++;
if (elem[i] == 7)
frecuencia[6]++;
if (elem[i] == 8)
frecuencia[7]++;
if (elem[i] == 9)
frecuencia[8]++;
}
int max=0;
int numero;
for (int i = 0; i < 9; i++)
{
if (max < frecuencia[i])
{
max = frecuencia[i];
numero = i + 1;
}
}
printf("la frecuencia maxima es: %d, se repite %d\n", numero, max);
for (int i = 0; i < n; i++)
{
elem[i] = elem[i] / numero;
printf("%d ", elem[i]);
}
_getch(); }
Problema 13_

#include <stdio.h>
#include <conio.h>
#include <iostream>
using namespace std;
void main()
{
int num[500];
char seguir = 's';

int cont = 0;
//pide los numero mientras se aplaste la 's'
while (seguir == 's')
{
cout << "ingrese un numero: ";
cin >> num[cont++];
cout << "desea continuar (s/n): ";
cin >> seguir;
}
for (int j = 0; j < cont - 1; j++)
{
for (int i = 0; i < cont - 1; i++)
{
if (num[i] == 0)
{
num[i] = num[i + 1];
num[i + 1] = 0;
}
}
}
for (int i = 0; i < cont; i++)
{
printf("%d\t", num[i]);
}

_getch();
}

Problema14_
# include <stdio.h>
# include <conio.h>
# define MAX 99

void main()
{
int a[MAX], b[MAX], c[MAX];
int tamA, tamB, tamC, i,m, aux;
//Ingreso de datos
printf("Ingrese el tamanio del array \"a\": ");
scanf_s("%d", &tamA);
printf("Ingrese el tamanio del array \"b\": ");//tamB debe ser tamA-1
scanf_s("%d", &tamB);
tamC = tamA + tamB;

printf("\n\n");
for (i = 0; i < tamA; i++)
{
printf("Ingrese el valor de \"a[%d]\": ",i);
scanf_s("%d", &a[i]);
}

printf("\n\n");
for (i = 0; i < tamB; i++)
{
printf("Ingrese el valor de \"b[%d]\": ", i);
scanf_s("%d", &b[i]);
}
//Ordenado Arreglo de la burbuja
//Para a
for (i = 0; i < tamA; i++)
{
for (m = 0; m < tamA; m++)
{
if (a[i] < a[m])
{
aux = a[m];
a[m] = a[i];
a[i] = aux;
}
}
}
//Para b

for (i = 0; i < tamB; i++)


{
for (m = 0; m < tamB; m++)
{
if (b[i] < b[m])
{
aux = b[m];
b[m] = b[i];
b[i] = aux;
}
}
}

//Intercalado
int j=0, k=0;
for (i = 0; i < tamC; i++)
{
if ((i % 2) == 0)
{
c[i] = a[j];
j++;
}
else
{
c[i] = b[k];
k++;
}
}
//Imprimir
printf("\n\n a:");
for (i = 0; i < tamA; i++)
{
printf(" %d",a[i]);
}

printf("\n\n b:");
for (i = 0; i < tamB; i++)
{
printf(" %d",b[i]);
}

printf("\n\n c:");
for (i = 0; i < tamC; i++)
{
printf(" %d", c[i]);
}

_getch();

Problema 17_

#include <iostream>
#include "conio.h"
#include "math.h"

void main()

{
using namespace std;
int V[50], N[50], Rep[50];
int i, j, k, total, indice, elementos, existeModa, n;
float suma, suma2, media, varianza, desv_estandar, desv_media;
cout << "Numeros de datos que desea introducir: ";
cin >> n;

suma = 1;
suma2 = 0;
for (i = 1; i <= n; i++)
{
cout << "Valor" << i << "= ";
cin >> V[i];
suma = suma + V[i];

suma2 = suma2 + (V[i] * V[i]);


}

// Saca copia del arreglo


for (i = 1; i <= n; i++)
N[i] = V[i];

elementos = n;
total = elementos;
for (i = 1; i <= elementos; i++)
{
for (j = i + 1; j <= elementos; j++)
{
if (N[i] == N[j])
{

for (k = j + 1; k <= elementos; k++)


N[k - 1] = N[k];

elementos--;
j--;
}
}
}
for (i = 1; i <= elementos; i++)
Rep[i] = 1;
for (i = 1; i <= elementos; i++)
for (j = 1; j <= total; j++)
if (N[i] == V[j])
Rep[i]++;

indice = 0;
for (i = 1; i <= elementos; i++)
if (Rep[i]>Rep[indice])
indice = i;

existeModa = 1;
for (i = 1; i <= elementos; i++)
if (i != indice)
{
if (Rep[i] == Rep[indice])
{
existeModa = 0;
break;
}
}

if (existeModa == 1)
{
cout << "\n\nModa= " << N[indice];
}
else
cout << "No existe moda";

media = suma / n;
cout << "\n\nMedia= " << media << "\n";

varianza = ((n*suma2) - (suma*suma)) / (n*(n - 1));


cout << "\n\nVarianza= " << varianza;

desv_estandar = sqrt(varianza);
cout << "\n\nDesviacin estandar= " << desv_estandar;

desv_media = ((suma2)-(suma*suma)) / n;
cout << "\n\nDesviacin media= " << desv_media;

_getch();
}
Problema 22_
#include <iostream> //Colocar.h en TC++
#include <conio.h>
#define max 100

using namespace std; //Eliminar esta linea en TC++


void main()
{
int a[max], b[max], i, j = 0, n, div, t = 0;
cout << "Ingrese las dimensiones del arreglo: ";
cin >> n;
system("cls");
for (i = 0; i<n; i++)
{
cout << "Ingrese el elemento nro " << i + 1 << " del arreglo: ";
cin >> a[i];

}
for (i = 0; i<n; i++)
{
div = 2;
while (div<a[i] && a[i] % div>0) // Determinando si es primo
div++;
if (div == a[i]){
b[j++] = a[i];
t++; //Contador para saber si encontr al menos un numero primo
}
}
if (t>0){
cout << "\nLos numeros primos de su arreglo son:" << endl;
for (i = 0; i<j; i++)
cout << b[i] << " ";
}
else cout << "\nNo hay numeros primos en su arreglo";
_getch();