Áreas y volúmenes de varias figuras geométricas

Jaime Jiménez Omeñaca

/*ESTE PROGRAMA TE PERMITE HALLAR EL ÁREA Y EL VOLUMEN
DE UN CUBO, DE UN CILINDRO, DE PRISMA CUADRANGULAR, DE PIRÁMIDE CUADRANGULAR Y DE UNA ESFERA*/

#include<iostream>
using namespace std;

int main()
{
double l1, l2, l3, r1,r2, h1, h2, h3, a;
double volumen, area;
//CUBO

cout << “Dame el lado del cubo: “;
cin >> l1;
volumen=l1*l1*l1;
area=6*l1*l1;

cout << endl << endl << “El area del cubo de lado ” << l1 << ” es: ” << area << endl;
cout << “El volumen del cubo de lado ” << l1 << ” es: ” << volumen << endl;
cout << endl << endl;

//CILINDRO.
cout << “Dame el radio de la base, y la altura del cilindro:”;
cin >> r1 >> h1;

area= 2*3.14*r1*(r1 + h1);
volumen=3.14*r1*r1*h1;

cout << endl << endl << “El area del cilindro es: ” << area << endl;
cout << “El volumen de este cilindro es: ” << volumen << endl;

cout << endl << endl;
//PRISMA CUADRANGULAR
cout << “Dame el lado de la base y la altura del prisma: “;
cin >> l2 >> h2;

area=2*l2*l2 + 4*l2*h2;
volumen=l2*l2*h2;

cout << endl << endl << “El area de este prisma cuadrangular es:” << area << endl;
cout << “El volumen de este prisma cuadrangular es:” << volumen << endl;

cout << endl << endl;
//PIRÁMIDE CUADRANGULAR
cout << “Dame el lado de la base, la altura y la apotema de la piramide: “;
cin >> l3 >> h3 >> a;

area= l3*l3 + 4*(l3*a)/2;
volumen=(l3*l3*h3)/3;

cout << endl << endl << “El area de esta piramide cuadrangular es:” << area << endl;
cout << “El volumen de esta piramide cuadrangular es:” << volumen << endl;

cout << endl << endl;

//ESFERA
cout << “Dame el radio de la esfera: “;
cin >> r2;

area=4*3.14*r2*r2;
volumen=(4*3.14*r2*r2*r2)/3;

cout << endl << endl << “El area de esta esfera es:” << area << endl;
cout << “El volumen de esta esfera es :” << volumen << endl;
}

Anuncios
Publicado en Informática e Internet | Deja un comentario

Interpolación polinómica de Newton en C++

Santiago Pareja Pérez

//NOTA: este programa requiere que el compilador esté configurado para utilizar el estándar C++11 o superior.

//Este programa determina un polinomio f(x) tal que f(i)=a_i para la secuencia de enteros (a_1, a_2, ..., a_n) introducida por el usuario.
//Utiliza para ello la interpolación polinómica de Newton (también conocido como método de diferencias),
//creando una tabla de diferencias sucesivas de los enteros introducidos. Los detalles se pueden consultar en la web.

#include <iostream>
#include <string>
#include <vector>
using namespace std;

int factorial(int x); //declaramos la función

int main(){

    cout << "Introduzca una secuencia de enteros separados por espacios y terminada en un punto." << endl; //ejemplo: 1 2 3 4 5.
    int number;
    vector<int> fx;
    while(cin >> number){ //el bucle parará cuando encuentre algo que no pueda interpretar como un número.
                        //cada cin lee solo hasta el siguiente espacio.
        fx.push_back(number); //leemos los números del buffer y los colocamos en un vector (una estructura parecida a un array pero de tamaño dinámico).
    };

    vector<vector<int>> diffs; //vector de vectores, para calcular las diferencias sucesivas.
    diffs.push_back(fx);

    int count = 0;
    while(true){
        bool break_while = false;
        vector<int> result;
        cout << "D_" << count << "(x): ";
        for(int i = 0;
            i+1 < diffs[count].size(); //queremos que i+1 sea siempre estrictamente menor al tamaño del vector.
            ++i){

            cout << diffs[count][i] << " "; //imprimimos el valor de cada elemento, nos dará una tabla de diferencias.
            int dif = diffs[count][i+1] - diffs[count][i];
            result.push_back(dif);
        }
        cout << diffs[count][diffs[count].size()-1] << endl; //imprime el último valor del vector, que nos habíamos dejado en el anterior bucle.
        diffs.push_back(result);
        count += 1;
        //Primera condición de salida: que una fila tenga un único número.
        if(diffs[count-1].size() == 1){
            break;
        }
        //Segunda condición de salida: que todos los números de una fila sean ceros.
        for(int i = 0;
            i < diffs[count].size(); //este count es 1 mayor al del bucle anterior,
            //ya que estamos iterando sobre los elementos de la fila que acabamos de generar.
            ++i){

            if(diffs[count][i]!=0){
                break_while = false; //no es lo más elegante, pero nos permite romper el bucle while desde dentro del bucle for.
                break;
            }
            else{
                break_while = true;
            }
        }
        if(break_while){
            break;
        }

    };
    cout << endl << "Polinomio generado:" << endl << endl;
    //Tomamos el primer valor de cada fila para generar el polinomio:
    string x = "";
    for(int i = 0;
        i < diffs.size()-1; //existe un vector nulo al final de diffs.
        i++){

        int a = diffs[i][0];
        if(i==0){
            cout << a; //podemos omitir coeficientes innecesarios en el primer factor.
        }
        else{
            x += "(x-"+to_string(i)+")";
            cout << a << '/' << factorial(i) << '*' << x;
        }
        if(i != diffs.size()-2){ //evita que haya un "+" suelto al final del polinomio.
            cout << '+' << endl;
        }
    }
    cout << '.' << endl;
    return 0;
}

int factorial(int x){
        if(x == 0 || x == 1){
            return 1; //0! = 1! = 1
        }
        int fact = 1;
        int c = 2; //contador
        while(c <= x){ //terminar el bucle si c>x
            fact *= c;
            c += 1;
        }
        return fact;
}
Publicado en Informática e Internet | Deja un comentario

Simulador de un dado de 6 caras

Rodrigo Barberán Tirado

/*Este programa simula el lanzamiento de un dado de 6 caras y 
   muestra en pantalla el resultado*/

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

using namespace std;

int main()
{
    int numero;
    srand(getpid());
    numero = rand() % 6;
    cout << numero + 1 << endl;
    system("pause");
    return 0;

}

Publicado en Informática e Internet | Deja un comentario

Tablas de multiplicar

Ignacio Montero Gil


//ESTE PROGRAMA CALCULA LA TABLA DE MULTIPLICAR DEL NÚMERO INDICADO

#include <iostream>

using namespace std;

main()

{
int numero;
cout << "Introduzca un numero entre el 1 y el 9 y calcularemos su tabla de multiplicar:";
cin >> numero;
cout << endl ;
cout << numero <<"x0=" << numero*0 <<endl <<endl;
cout << numero <<"x1=" << numero*1 <<endl <<endl;
cout << numero <<"x2=" << numero*2<<endl <<endl;
cout << numero <<"x3=" << numero*3<<endl <<endl;
cout << numero <<"x4=" << numero*4<<endl <<endl;
cout << numero <<"x5=" << numero*5<<endl <<endl;
cout << numero <<"x6=" << numero*6<<endl <<endl;
cout << numero <<"x7=" << numero*7<<endl <<endl;
cout << numero <<"x8=" << numero*8<<endl <<endl;
cout << numero <<"x9=" << numero*9<<endl <<endl;
cout << numero <<"x10=" << numero*10<<endl <<endl;

}

Publicado en Informática e Internet | Deja un comentario

Inauguración del curso 2018-2019

Retomamos la actividad docente después del receso veraniego.

Seguiremos ofreciendo de nuevo en este blog una aproximación lenta y gradual a la programación en C/C++ desde setiembre-2018 hasta febrero-2019. Obsérvese que hay aquí a día de hoy un depósito de más de 1300 programas que pueden ser de gran utilidad a todos aquellos que se inician en la programación en C/C++.

En este curso seguiremos usando Code::Blocks. Recordar que hay otros entornos, tal como NetBeans, ZinjaI, etc., que son de acceso libre y gratuito.

un saludo y feliz curso,
Ricardo López.

Publicado en Informática e Internet | Deja un comentario

Noticias sobre los Wikis

En este regreso de Septiembre hemos tenido una mala noticia de Wikispaces: ha cerrado su espacio de Wikis. Así pues, sin posibilidad de réplica alguna, todo el material que habíamos almacenado ahí durante estos cursos (los últimos 8 años) se ha perdido. Es una verdadera pena porque era un material muy valioso de lecturas complementarias a la asignatura y que por cierto tenía cientos de visitas diarias.. Lástima de todo el tiempo invertido tanto por vosotros como por mí.. Wikispaces no responde ni un mensaje y no ha tenido consideración alguna.. Solo nos queda decir lo de aquel: “¡Qué bonito fue mientras duró!”.. en fin, c’est comme ça, c’est la vie même!!

Felizmente he podido recuperar por otro lado el material del Wiki de Teoría y lo he incorporado en un nuevo blog que servirá de apoyo a los nuevos estudiantes. El Wiki de Problemas con toda una rica colección de ejemplos se ha perdido pero en contraparte tenemos este blog con centenares de ejemplos que puede servir.

La experiencia de los Wikis ha sido ciertamente muy positiva pero después de este shock post-veraniego (con nada menos que 9 buenos wikis volatizados en el espacio-tiempo) tengo que reconsiderar si continuamos con ella o la reoriento de alguna otra forma. Sirva como moraleja que en este mundo virtual en el que vivimos (tipo Matrix) todo es tan sutil como la vida mismo, y basta que desconecten un servidor perdido en cualquier rincón del mundo para perder trabajo de años así como información valiosa.

Sin otro particular, y para aquellos que leáis esto, desearos un feliz inicio de curso o inicio de faena para aquellos que ya estéis trabajando.

Ricardo.

Publicado en Informática e Internet | Deja un comentario

Calificaciones de Febrero

Os aviso que tenéis las calificaciones finales de la convocatoria de Febrero puestas en el tablón. Animo a aquellos que no han superado la materia en esta convocatoria para que la trabajen adecuadamente y lo intenten de nuevo en la convocatoria de Setiembre.

Con el resto de materias os deseo mucha suerte y éxito.

Ricardo.

Publicado en Informática e Internet | Deja un comentario