Escribe un programa que imprima una pirámide de dígitos como la de la figura, tomando
como entrada el número de filas de la misma (debe ser menor de 10):
#incluye<iostream>
using namespace std;
int LeerNFilas(){
int filas;
do{
cout << "Introduce el número de filas de la pirámide entre 1 y 10 ";
cin >> filas;
}while(filas < 1 || filas > 10);
return filas;
}
void PiramideDigitos(int filas){
for(unsigned i= 1; i <= filas; i++){
for(unsigned j = 1; j <= (filas - i); j++){
cout << " ";
}
for(unsigned j= 1; j <= i; j++){
cout << j;
}
for(unsigned h = (i-1); h >= 1; h-- ){
cout << h;
}
cout << endl;
}
}
int main() {
int filas;
cout << "Practica 4. Pirámide de dígitos" << endl;
filas= LeerNFilas();
PiramideDigitos(filas);
return 0;
}
Escribe un programa que calcule el valor de S para un número real X dado por teclado,
utilizando la siguiente serie:
S = 1 + x + (x ^ 2) / 2! + (x^ 3) / 3! + (x ^ 4/4!) + ...
Nota: No se añadirán más sumandos cuando se calcule uno con valor menor que 0.0001.
#include <iostream>
using namespace std;
const double MINIMO = 0.0001;
double potencia(double a,unsigned b) {
double resultado = 1;
if(b == 1){
resultado = a;
} else if (b > 1){
for(int i = 1; i <= b; i++){
resultado = resultado * a;
}
}
return resultado;
}
unsigned factorial(int x){
unsigned fact = 1;
for(unsigned i= 2; i <= x; i++){
fact = fact * i;
}
return fact;
}
double serie(double x){
double suma = 1;
double sumando = 1;
unsigned i = 1;
while(sumando >= MINIMO){
sumando = potencia(x, i)/ factorial(i);
suma = suma + sumando;
i++;
}
return suma;
}
int main (){
cout << " Introduzca el valor de X (X>=0 y X<=1): ";
double x;
cin >> x;
if (! (x >= 0 && x <= 1)){
throw "Error . Valor de X fuera de rango" ;
} else {
cout << " Serie : " << serie (x) << endl ;
}
}
Escribe un programa que calcule e imprima por pantalla los N primeros números primos,
siendo N un número natural que se introduce por teclado. Por ejemplo, si N = 8, los primos
que se mostrarán por pantalla son 1, 2, 3, 5, 7, 11, 13, 17..
#include <iostream>
using namespace std;
unsigned leerDato(){
unsigned n;
cout << "Introduce N: ";
cin >> n;
return n;
}
bool esPrimo(unsigned num){
bool loes = true ;
unsigned i = 2;
while((loes == true) && (i <= unsigned(num/2))){ //modificar para que sea mas rapido
if(num != i){
if(num%i == 0){
loes = false;
}
}
i++;
}
return loes;
}
void imprimePrimos(unsigned N){
unsigned contador = 0;
unsigned i = 1;
while(contador < N){
if(esPrimo(i)){
cout << i <<", ";
contador ++;
}
i++;
}
}
int main() {
unsigned N;
cout << "Programa que calcula e imprime por pantalla los N primeros números primos." << endl; // prints !!!Hello World!!!
N = leerDato();
imprimePrimos(N);
return 0;
}
Dos números a y b se dice que son amigos si la suma de los divisores de a (salvo él mismo)coincide con b y viceversa. Diseña un programa que tenga como entrada de teclado dos
números naturales n y m y que muestre en la pantalla todas las parejas de números amigos
que existan en el intervalo determinado por n y m. El programa debe asegurarse de que n sea
menor que m.
#incluye <iostream>
using namespace std;
void leerDatos(unsigned& n, unsigned& m){
do{
cout << "Introduzca n y m (n < m) :";
cin >> n >> m;
}while (m < n);
}
unsigned SumaDivisores(unsigned num){
unsigned suma = 1;
for(unsigned i= 2; i < num; i++){
if(num%i == 0){
//cout << "Divisores de 6: " << i << endl;
suma = suma + i;
}
}
//cout << "Suma divisores de 6:" << suma << endl;
return suma;
}
bool sonAmigos(unsigned a, unsigned b){
bool son = false;
if((SumaDivisores(a) == b) && (SumaDivisores(b)== a)){
son = true;
}
return son;
}
void imprimirParejas(unsigned n, unsigned m){
for(unsigned i = n; i <= m; i++){
for(unsigned j = i; j <= m; j++){
cout << i << " y "<< j;
if(sonAmigos(i, j)){
cout << " son amigos."<< endl;
cout<<" Suma de divisores de "<<i<<" es "<<SumaDivisores(i)<<" = "<<j<<endl;
cout<<" Suma de divisores de "<<j<<" es "<<SumaDivisores(j)<<" = "<<j<<endl;
}else{
cout << " no son amigos." << endl;
}
}
}
}
int main() {
unsigned n, m;
cout << "Programa que muestra en la pantalla todas las parejas de números amigos que existan en el intervalo determinado por n y m." << endl; // prints !!!Hello World!!!
leerDatos(n, m);
imprimirParejas(n,m);
return 0;
}
Escribe un algoritmo que lea un número natural N por teclado y dibuje un rombo de
asteriscos como el de la figura (N=5):
#include <iostream>
using namespace std;
void leerDatos(int& x){
do{
cout << "Introduce altura de la pirámide: ";
cin >> x;
}while( x < 1);
}
void dibujarFila(int x, int i){
for(unsigned j = 1; j <= (x-i); j++){
cout << " ";
}
for(unsigned j = 1; j<= i; j++){
cout << " * ";
}
}
void dibujarPiramide (int x){
for(unsigned i = 1; i <= x; i++){
dibujarFila(x, i);
cout << endl;
}
}
void dibujarPiramideInv (int x){
for(unsigned i= 1; i < x; i++){
for(unsigned j = 1; j <= i ; j++){
cout << " ";
}
for(unsigned j = 1; j <= (x - i); j++){
cout << " * ";
}
cout << endl;
}
}
int main() {
int x;
leerDatos(x);
dibujarPiramide(x);
dibujarPiramideInv(x);
return 0;
}
Diseña un algoritmo que lea de teclado un número natural N mayor que cero y muestre las N
primeras filas del siguiente triángulo.
#include <iostream>
using namespace std;
int LeerNFilas(){
int filas;
do{
cout << "Introduce el número de filas de la pirámide: ";
cin >> filas;
}while(filas < 1);
return filas;
}
void PiramideDigitos(int filas){
for(unsigned i= 1; i <= filas; i++){
for(unsigned j = 1; j <= (filas - i); j++){
cout << " ";
}
for(unsigned j= i; j <= (i + i -1); j++){
cout << j%10;
}
for(unsigned h = (i + i -2); h >= i; h-- ){
cout << h%10;
}
cout << endl;
}
}
int main() {
int filas;
cout << "Practica 4. Pirámide de dígitos" << endl;
filas= LeerNFilas();
PiramideDigitos(filas);
return 0;
}
Un saludo! (:



No hay comentarios:
Publicar un comentario