martes, 19 de febrero de 2013

Elabore un programa modular que lea una matriz de m X n y la escriba poniendo las columnas como renglones y los renglones como columnas

Elabore un programa modular que lea una matriz de m X n y la escriba poniendo
las columnas como renglones y los renglones como columnas.

Por ejemplo, si la matriz que da el usuario es:

4 7 1 3 5
2 0 6 9 7
3 1 2 6 4

Entonces el programa debe escribir la matriz transpuesta:
4 2 3
7 0 1
1 6 2
3 9 6
5 7 4


#include<iostream>
using namespace std;

void leerMatriz(int [][100], int &, int &);
void mostrarMatriz(int [][100], int &, int &);
void matriz_transpuesta(int [][100], int [][100], int &, int &);
void mostrar_matrizTranspuesta(int [][100], int &, int &);

int main()
{
    int matriz[100][100], matrizTranspuesta[100][100], filas, columnas;

    cout<<"indique la cantidad de filas de la matriz: ";
    cin>>filas;
    cout<<"indique la cantidad de columnas de la matriz: ";
    cin>>columnas;

    leerMatriz(matriz, filas, columnas);
    mostrarMatriz(matriz, filas, columnas);
    matriz_transpuesta(matriz, matrizTranspuesta, filas, columnas);
    mostrar_matrizTranspuesta(matrizTranspuesta, filas, columnas);

    cin.get(); cin.get();
    return 0;
}

void leerMatriz(int matriz[100][100], int &filas, int &columnas)
{
    for(int i=0; i<filas; i  )
    {
        for (int j=0; j<columnas; j  )
        {
            cout<<"ingrese un numero: ";
            cin>>matriz[i][j];
        }
    }
}

void mostrarMatriz(int matriz[100][100], int &filas, int &columnas)
{
    cout<<"\n\n la matriz que introdujo es: "<<endl;
    for(int i=0; i<filas; i  )
    {
        for (int j=0; j<columnas; j  )
        {
            cout<<matriz[i][j]<<" ";
        }
        cout<<endl;
    }
}

void matriz_transpuesta(int matriz[100][100], int matrizTranspuesta[100][100], int &filas, int &columnas)
{
    cout<<"\n\n la matriz transpuesta es: "<<endl;
    for(int i=0; i<filas; i  )
    {
        for(int j=0; j<columnas; j  )
        {
            matrizTranspuesta[j][i]=matriz[i][j];
        }
    }
}

void mostrar_matrizTranspuesta(int matrizTranspuesta[100][100], int &filas, int &columnas)
{
    for(int i=0; i<columnas; i  )
    {
        for (int j=0; j<filas; j  )
        {
            cout<<matrizTranspuesta[i][j]<<" ";
        }
        cout<<endl;
    }
}

domingo, 9 de diciembre de 2012

Programa en c++ para calcular la producción total de toneladas de cereales (arroz, avena, cebada, trigo) cosechadas durante los meses del año anterior

Se tiene la producción total de toneladas de cereales (arroz, avena, cebada, trigo) cosechadas
durante cada mes del año anterior. Elaborar un programa que proporcione la siguiente información:
  •  El promedio anual de toneladas cosechadas.
  • ¿Cuantos meses tuvieron una cosecha superior al promedio anual?  
  • ¿Cuantos meses tuvieron una cosecha inferior al promedio anual?  
  • ¿Cuál fue el mes en el que se produjeron mayor numero de toneladas?

#include<iostream>
#include<cstdlib>
#include<cstring>
#include<windows.h>
using namespace std;

void ini_array(float []);
void leer(float [][4], char [][11], char [][7]);
void escribir(char [][11], float [], float &, int &, int &, int &);
float promedio_produccion(float [][4]);
void total_produccion_mes(float [][4], float []);
void meses_cosecha_sup_inf_prom(float [], float &, int &, int &);
int mes_produccion_alta(float []);

int main()
{
    int cont_sup=0, cont_inf=0, pos_mes;
    float produccion[12][4], produccion_mes[12], promedio_anual;
    char meses[12][11]={"ENERO", "FEBRERO", "MARZO", "ABRIL", "MAYO", "JUNIO", "JULIO", "AGOSTO", "SEPTIEMBRE", "OCTUBRE", "NOVIEMBRE", "DICIEMBRE"};
    char nombre_cosecha[4][7]={"ARROZ", "AVENA", "CEBADA", "TRIGO"};

    ini_array(produccion_mes);
    leer(produccion, meses, nombre_cosecha); //llama a la funcion leer()
    promedio_anual=promedio_produccion(produccion); //llama a la funcion promedio_produccion()
    total_produccion_mes(produccion, produccion_mes); //llama a la funcion total_produccion_mes()
    meses_cosecha_sup_inf_prom(produccion_mes, promedio_anual, cont_sup, cont_inf); //llama a la funcion meses_cosecha_sup_inf_prom()
    pos_mes=mes_produccion_alta(produccion_mes); //llama a la funcion mes_produccion_alta()
    escribir(meses, produccion_mes, promedio_anual, cont_sup, cont_inf, pos_mes); //llama a la funcion escribir()

    cin.get(); cin.get();
    return 0;
}

void ini_array(float produccion_mes[12]) //inicializa la produccion total del mes en 0
{
    int i;

    for(i=0; i<12; i++)
    {
        produccion_mes[i]=0;
    }
} //fin funcion ini_array()

void leer(float produccion[12][4], char meses[12][11], char nombre_cosecha[4][7])
{
    int i, j;

    for(i=0; i<12; i++)
    {
        cout<<endl<<"\t "<<"Produccion del mes de "<<meses[i]<<endl;

        for(j=0; j<4; j++)
        {
            do{
                cout<<endl<<"\t "<<"  Indique produccion total de "<<nombre_cosecha[j]<<" del mes: ";
                cin>>produccion[i][j];

                if(produccion[i][j]<0)
                {
                    cout<<endl<<"\t La produccion de total de "<<nombre_cosecha[j]<<" no puede ser menor que 0"<<endl;
                    Sleep(1500);
                    system("cls");
                }
            }while(produccion[i][j]<0); //valida que el total de la produccion del cereal no sea menor que 0
        }
        cout<<endl;
    }

    system("cls");
} //fin funcion leer()

void escribir(char meses[12][11], float produccion_mes[12], float &promedio_anual, int &cont_sup, int &cont_inf, int &pos_mes)
{
    int i;

    cout<<endl<<"\t Promedio anual de produccion: "<<promedio_anual<<" T"<<endl<<endl;

    for(i=0; i<12; i++)
    {
        cout<<"\t Produccion total del mes de "<<meses[i]<<" : "<<produccion_mes[i]<<" T"<<endl;
    }

    cout<<endl<<"\t Cantidad de meses con cosecha superior al promedio anual: "<<cont_sup<<endl<<endl;
    cout<<"\t Cantidad de meses con cosecha inferior al promedio anual: "<<cont_inf<<endl<<endl;

    cout<<"\t Mes con la produccion mas alta: "<<meses[pos_mes]<<endl;
} //fin funcion escribir()

float promedio_produccion(float produccion[12][4]) //caldula el promedio de la produccion anual
{
    int i, j;
    float promedio_anual, sum=0;

    for(i=0; i<12; i++)
    {
        for(j=0; j<4; j++)
        {
            sum+=produccion[i][j];
        }
    }

    promedio_anual=(sum/12);
    return promedio_anual;
} //fin funcion promedio_produccion()

void total_produccion_mes(float produccion[12][4], float produccion_mes[12]) //calcula la produccion total del mes
{
    int i, j;

    for(i=0; i<12; i++)
    {
        for(j=0; j<4; j++)
        {
            produccion_mes[i]+=produccion[i][j];
        }
    }
} //fin funcion total_produccion_mes()

void meses_cosecha_sup_inf_prom(float produccion_mes[12], float &promedio_anual, int &cont_sup, int &cont_inf) //cuenta la cantidad meses que tienen la produccion por encima o por debajo del promedio anual
{
    int i;

    for(i=0; i<12; i++)
    {
        if(produccion_mes[i]>promedio_anual)
        {
            cont_sup++;
        }
        else
            {
                cont_inf++;
            }
    }
} //fin funcion meses_cosecha_sup_inf_prom()

int mes_produccion_alta(float produccion_mes[12]) //determina cual es el mes con la produccion mas alta
{
    int i=0, pos_mes;
    float mayor=0;

    for(i=0; i<12; i++)
    {
        if(produccion_mes[i]>mayor)
        {
            mayor=produccion_mes[i];
            pos_mes=i;
        }
    }

    return pos_mes;
}

jueves, 22 de noviembre de 2012

Reloj digital en C++

Definir una clase que permita representar el tiempo, es decir horas, minutos y segundos. Desarrollar que permitan inicializar el tiempo en 0 horas, 0 minutos y 0 segundos; mostrar las horas, minutos y segundos en el siguiente formato hh:mm:ss; incrementar el tiempo en un segundo.


#include<iostream>
#include<cstdlib>
#include<windows.h>
using namespace std;

const int h=24;
const int m=60;
const int s=60;

class reloj
{
    private:
    int hora;
    int minutos;
    int segundos;
    int formato;

    public:
    reloj(){};
    reloj(int &, int &, int &);
    void mostrar_hora();
    friend void ajustar_hora(reloj &);
};

int menu();

int main()
{
    int opc;
    reloj tiempo;

    do{
        opc=menu();

        switch(opc)
        {
            case 1:
            {
                ajustar_hora(tiempo);

                system("cls");
                break;
            }

            case 2:
            {
                tiempo.mostrar_hora();

                break;
            }

            case 3:
            {
                exit(0);
                break;
            }

            default:
            {
                cout<<"\n\n\t Opcion invalida"<<endl;
                cin.get(); cin.get();
                system("cls");
                break;
            }
        }
    }while(opc!=3);

    cin.get(); cin.get();
    return 0;
}

reloj::reloj(int &hr, int &min, int &seg)
{
    hora=hr;
    minutos=min;
    segundos=seg;
}

int menu()
{
    int opc;

    cout<<"\n\n\t 1.- Ajustar hora"<<endl;
    cout<<"\t 2.- Mostrar hora"<<endl;
    cout<<"\t 3.- Salir"<<endl;
    cout<<"\t indique opcion: ";
    cin>>opc;

    system("cls");
    return opc;
}

void reloj::mostrar_hora()
{
    while(1)
    {
        while (hora<h)
        {
            while (minutos<m)
            {
                while(segundos<s)
                {
                    cout<<"\n\n\t"<<hora<<":"<<minutos<<":"<<segundos;

                    Sleep(1000);
                    system("cls");
                    segundos+=1;
                }
                segundos=0;
                minutos+=1;
            }
            minutos=0;
            hora+=1;
        }
        hora=0;
    }
}

void ajustar_hora(reloj &tiempo)
{
    int hr, min, seg;

    do{
        cout<<"\n\t Hora: ";
        cin>>hr;

        if(((hr<0)||(hr>h)))
        {
            cout<<"\n\t Hora invalida"<<endl;
            cin.get(); cin.get();
            system("cls");
        }
    }while((hr<0)||(hr>h));

    do{
        cout<<"\t Minutos: ";
        cin>>min;

        if(((min<0)||(min>m)))
        {
            cout<<"\n\t Minuto invalido"<<endl;
            cin.get(); cin.get();
            system("cls");
        }
    }while((min<0)||(min>m));

    do{
        cout<<"\t Segundos: ";
        cin>>seg;

        if(((seg<0)||(seg>s)))
        {
            cout<<"\n\t Segundoo invalido"<<endl;
            cin.get(); cin.get();
            system("cls");
        }
    }while((seg<0)||(seg>s));

    reloj temp(hr, min, seg);
    tiempo=temp;
}


Descargar Código

martes, 20 de noviembre de 2012

Al momento de su ingreso al hospital, a un paciente se le solicitan los siguientes datos: Nombre, Edad, Sexo, Teléfono, Seguro

Al momento de su ingreso al hospital, a un paciente se le solicitan los
siguientes datos: Nombre, Edad, Sexo, Teléfono, Seguro (este campo tendrá el
valor verdadero si el paciente tiene seguro y Falso si no lo posee).
Escriba un programa que pueda llevar a cabo las siguientes operaciones:
  • Listar los nombres de todos los pacientes hospitalizados.
  • Obtener el porcentaje de pacientes hospitalizados en las siguientes categorías:
  1. Niños: hasta 13 años. 
  2. Jóvenes: mayores de 13 años y menores de 30 años. 
  3. Adultos: mayores de 30 años.
  • Obtener el porcentaje de hombres y mujeres hospitalizados.
  • Dado el nombre de un paciente, listar todos los datos relacionados a dicho paciente.
  • Calcular el porcentaje de pacientes que poseen seguro.
Nota: Se manejará un máximo de 100 pacientes.


#include<iostream>
#include<cstring>
#include<cstdlib>
using namespace std;

const int tam=100;
const int tam_nombre=50;
const int tam_sex=10;
const int tam_tlf=11;
const int tam_seguro=3;

class datos
{
    private:
    char nombre[tam_nombre];
    int edad;
    char sexo[tam_sex];
    char telefono[tam_tlf];
    bool seguro;

    public:
    datos(){};
    datos(char [], int &, char [], char [], char []);
    ~datos(){};
    void mostrar(char []);
    int obt_edad();
    bool obt_seguro();
    friend void ingresar_paciente(datos [], int &, char [], int &, char [], char [], char []);
    friend int buscar(datos [], char [], int &);
    friend void porc_pacientes_sexo(datos [], int &);

};

int menu();

int main()
{
    int edad_paciente, opc, cont=0, cont_ninos=0, cont_jovenes=0, cont_adultos=0, cont_seguro=0, indice, i;
    float porc_ninos, porc_jovenes, porc_adultos, porc_seguro;
    char nombre_paciente[tam_nombre], sexo_paciente[tam_sex], tlf_paciente[tam_tlf], seguro_paciente[tam_seguro];
    datos pacientes[tam];

    do{
        opc=menu();

        switch(opc)
        {
            case 1:
            {
                ingresar_paciente(pacientes, cont, nombre_paciente, edad_paciente, sexo_paciente, tlf_paciente, seguro_paciente);

                system("cls");
                break;
            }

            case 2:
            {
                for(i=0; i<cont; i++)
                {
                    pacientes[i].mostrar(seguro_paciente);
                }

                cin.get();
                system("cls");
                break;
            }

            case 3:
            {
                for(i=0; i<cont; i++)
                {
                    if(pacientes[i].obt_edad()<=13)
                    {
                        cont_ninos++;
                    }
                    else
                        {
                            if((pacientes[i].obt_edad()>13)&&(pacientes[i].obt_edad()<=30))
                            {
                                cont_jovenes++;
                            }
                            else
                                {
                                    cont_adultos++;
                                }
                        }
                }

                porc_ninos=(cont_ninos*100)/cont;
                porc_jovenes=(cont_jovenes*100)/cont;
                porc_adultos=(cont_adultos*100)/cont;

                cout<<"\n\n\t El porcentaje de niños hospitalizados es: "<<porc_ninos<<"%"<<endl;
                cout<<"\n\n\t El porcentaje de jovenes hospitalizados es: "<<porc_jovenes<<"%"<<endl;
                cout<<"\n\n\t El porcentaje de adultos hospitalizados es: "<<porc_adultos<<"%"<<endl;

                cont_ninos=0;
                cont_jovenes=0;
                cont_adultos=0;

                cin.get();
                system("cls");
                break;
            }

            case 4:
            {

                porc_pacientes_sexo(pacientes, cont);

                cin.get();
                system("cls");
                break;
            }

            case 5:
            {
                cout<<"\n\n\t Nombre: ";
                cin.getline(nombre_paciente, tam_nombre);

                for(int i=0; i<(strlen(nombre_paciente)); i++)
                {
                    nombre_paciente[i]=toupper(nombre_paciente[i]);
                }

                indice=buscar(pacientes, nombre_paciente, cont);

                if(indice!=-1)
                {
                    cout<<"\n\t Informacion del paciente"<<endl;
                    pacientes[indice].mostrar(seguro_paciente);
                }
                else
                    {
                        cout<<"\n\t Paciente no encontrado"<<endl;
                    }

                cin.get();
                system("cls");
                break;
            }

            case 6:
            {
                for(i=0; i<cont; i++)
                {
                    if(pacientes[i].obt_seguro()==true)
                    {
                        cont_seguro++;
                    }
                }

                porc_seguro=(cont_seguro*100)/cont;

                cout<<"\n\n\t El porcentaje de pacientes hospitalizados con seguro es: "<<porc_seguro<<"%"<<endl;

                cont_seguro=0;

                cin.get();
                system("cls");
                break;
            }

            case 7:
            {
                exit(0);
                break;
            }

            default:
            {
                cout<<"\n\n\t Opcion invalida"<<endl;

                cin.get();
                system("cls");
                break;
            }
        }

    }while(opc!=7);

    cin.get(); cin.get();
    return 0;
}

datos::datos(char nombre_paciente[tam_nombre], int &edad_paciente, char sexo_paciente[tam_sex], char tlf_paciente[tam_tlf], char seguro_paciente[tam_seguro])
{
    strcpy(nombre, nombre_paciente);
    edad=edad_paciente;
    strcpy(sexo, sexo_paciente);
    strcpy(telefono, tlf_paciente);

    if(strcmp(seguro_paciente, "SI")==0)
    {
        seguro=true;
    }
    else
        {
            seguro=false;
        }
}

void datos::mostrar(char seguro_paciente[tam_seguro])
{
    cout<<"\n\n\t Nombre: "<<nombre<<endl;
    cout<<"\t Edad: "<<edad<<endl;
    cout<<"\t Sexo: "<<sexo<<endl;
    cout<<"\t Telefono: "<<telefono<<endl;

    if(seguro==true)
    {
        strcpy(seguro_paciente, "SI");
    }
    else
        {
            strcpy(seguro_paciente, "NO");
        }

    cout<<"\t Seguro: "<<seguro_paciente<<endl;
}

int datos::obt_edad()
{
    return edad;
}

bool datos::obt_seguro()
{
    return seguro;
}

int menu()
{
    int opc;

    cout<<"\n\n\t 1.- Registrar paciente"<<endl;
    cout<<"\t 2.- Listar pacientes"<<endl;
    cout<<"\t 3.- Porcentaje de pacientes hospitalizados por categorias"<<endl;
    cout<<"\t 4.- Porcentaje de hombres y mujeres hospitalizados"<<endl;
    cout<<"\t 5.- Mostrar informacion de un pacientes"<<endl;
    cout<<"\t 6.- Porcentaje de pacientes hospitalizados asegurados"<<endl;
    cout<<"\t 7.- Salir"<<endl;
    cout<<"\t Indique opcion: ";
    cin>>opc;
    cin.ignore();

    system("cls");
    return opc;
}

void ingresar_paciente(datos pacientes[tam], int &cont, char nombre_paciente[tam_nombre], int &edad_paciente, char sexo_paciente[tam_sex], char tlf_paciente[tam_tlf], char seguro_paciente[tam_seguro])
{
    cout<<"\n\n\t Nombre: ";
    cin.getline(nombre_paciente, tam_nombre);

    for(int i=0; i<(strlen(nombre_paciente)); i++)
    {
        nombre_paciente[i]=toupper(nombre_paciente[i]);
    }

    cout<<"\t Edad: ";
    cin>>edad_paciente;
    cin.ignore();

    do{
    cout<<"\t Sexo: ";
    cin.getline(sexo_paciente, tam_sex);

    for(int i=0; i<(tam_sex-1); i++)
    {
        sexo_paciente[i]=toupper(sexo_paciente[i]);
    }

    }while((strcmp(sexo_paciente, "MASCULINO")!=0)&&(strcmp(sexo_paciente, "FEMENINO")!=0));

    cout<<"\t Telefono: ";
    cin.getline(tlf_paciente, tam_tlf);

    do{
        cout<<"\t Seguro: ";
        cin.getline(seguro_paciente, tam_seguro);

        for(int i=0; i<(tam_seguro-1); i++)
        {
            seguro_paciente[i]=toupper(seguro_paciente[i]);
        }

    }while((strcmp(seguro_paciente, "SI")!=0)&&(strcmp(seguro_paciente, "NO")!=0));

    datos temp(nombre_paciente, edad_paciente, sexo_paciente, tlf_paciente, seguro_paciente);
    pacientes[cont]=temp;
    cont++;
}

int buscar(datos pacientes[tam], char nombre_paciente[tam_nombre], int &cont)
{
    int indice=-1;

    for(int i=0; i<cont; i++)
    {
        if(strcmp(pacientes[i].nombre, nombre_paciente)==0)
        {
            indice=i;
            break;
        }
    }

    return indice;
}

void porc_pacientes_sexo(datos pacientes[tam], int &cont)
{
    int i, cont_masculino=0, cont_femenino=0;
    float porc_masculino, porc_femenino;

    for(i=0; i<cont; i++)
    {
        if(strcmp(pacientes[i].sexo, "MASCULINO")==0)
        {
            cont_masculino++;
        }
        else
            {
                cont_femenino++;
            }
    }

    porc_masculino=(cont_masculino*100)/cont;
    porc_femenino=(cont_femenino*100)/cont;

    cout<<"\n\n\t El porcentaje de hombres hospitalizados es: "<<porc_masculino<<"%"<<endl;
    cout<<"\n\n\t El porcentaje de mujeres hospitalizados es: "<<porc_femenino<<"%"<<endl;

    cont_masculino=0;
    cont_femenino=0;
}


Descargar Código

lunes, 19 de noviembre de 2012

Suma del triángulo inferior más el triángulo superior de una matriz cuadrada

Haga un programa que calcule la suma del triángulo inferior más el triángulo superior de
una matriz cuadrada de n X n, dejando el resultado en el triángulo inferior de otra matriz cuadrada de
dimensión n X n. La matriz resultante tendrá 0 en la diagonal y en el triángulo superior. Por ejemplo, si la matriz que proporciona el usuario es:

 

Entonces la matriz resuelta es:




#include<iostream>
#include<cstdlib>
#include<windows.h>
using namespace std;

void leer(int [][100], int &, int &);
void escribir(int [][100], int [][100], int [], int &, int &);
void diagonal_principal(int [][100], int [], int &);
void sum(int [][100], int [][100], int [], int &, int &);

int main()
{
    int matriz1[100][100], matriz2[100][100], vector[100], filas, columnas;

    do{
        do{
            cout<<endl<<"\t indique la cantidad de filas que tendra la matriz: ";
            cin>>filas;

            if((filas<1)||(filas>100))
            {
                cout<<endl<<"\t el numero de filas no puede ser menor que 1 o mayor a 100"<<endl;
                Sleep(1500);
                system("cls");
            }
        }while((filas<1)||(filas>100)); //valida la cantidad de filas que tendra la matriz

        do{
            cout<<endl<<"\t indique la cantidad de columnas que tendra la matriz: ";
            cin>>columnas;

            if((columnas<1)||(columnas>100))
            {
                cout<<endl<<"\t el numero de columnas no puede ser menor que 1 o mayor a 100"<<endl;
                Sleep(1500);
                system("cls");
            }
        }while((columnas<1)||(columnas>100)); //valida la cantidad de columnas que tendra la matriz

        if(filas!=columnas)
        {
            cout<<endl<<"\t las filas y las columnas deben ser iguales"<<endl;
            Sleep(700);
            system("cls");
        }

    }while(filas!=columnas); //valida que la matriz sea cuadrada

    system("cls");

    leer(matriz1, filas, columnas); //llama a la funcion leer()
    diagonal_principal(matriz1, vector, filas); //llama a la funcion diagonal_principal()
    sum(matriz1, matriz2, vector, filas, columnas); //llama a la funcion sum()
    escribir(matriz1, matriz2, vector, filas, columnas); //llama a la funcion escribir()

    cin.get(); cin.get();
    return 0;
}

void leer(int matriz1[100][100], int &filas, int &columnas)
{
    int i, j;

    cout<<endl;

    for(i=0; i<filas; i++)
    {
        for(j=0; j<columnas; j++)
        {
            cout<<"\t "<<"["<<i<<"]"<<"["<<j<<"]"<<" indique dato: ";
            cin>>matriz1[i][j];
        }
        cout<<endl;
    }

    system("cls");
} //fin funcion leer()

void diagonal_principal(int matriz1[100][100], int vector[100], int &filas)
{
    int i;

    for(i=0; i<filas; i++)
    {
        vector[i]=matriz1[i][i]; //almacena la diagonal principal en un vector
    }
} //fin funcion diagonal_principal()

void sum(int matriz1[100][100], int matriz2[100][100], int vector[100], int &filas, int &columnas)
{
    int i, j, k=0;

    for(i=0; i<filas; i++)
    {
        for(j=0; j<columnas; j++)
        {
            matriz2[i][j]=matriz1[i][j]; //copia el contenido de la matriz1 en la matriz2

            if(matriz2[j][j]==vector[j]) //compara la diagonal principal
            {
                matriz2[j][j]=0; //excluye la diagonal principal
            }

            matriz2[i][j]+=matriz2[j][i]; //suma las filas con las columnas
            matriz2[j][i]=0; //excluye los valores de la triangular superior
        }
    }
} //fin funcion sum()

void escribir(int matriz1[100][100], int matriz2[100][100], int vector[100], int &filas, int &columnas)
{
    int i, j;

    cout<<endl<<"\t Matriz original"<<endl<<endl;

    for(i=0; i<filas; i++)
    {
        cout<<"\t ";
        for(j=0; j<columnas; j++)
        {
             if((matriz1[i][j]<10)&&(matriz1[i][j]<100))
            {
                cout<<"00";
            }
            else
                {
                    if((matriz1[i][j]>9)&&(matriz1[i][j]<100))
                    {
                        cout<<"0";
                    }
                }
            cout<<matriz1[i][j]<<" ";
        }
        cout<<endl;
    }

    cout<<endl<<"\t Diagonal principal"<<endl<<endl;
    cout<<"\t | ";

    for(i=0; i<filas; i++)
    {
        cout<<vector[i]<<" | ";
    }

    cout<<endl<<endl<<"\t Matriz resuelta"<<endl<<endl;

    for(i=0; i<filas; i++)
    {
        cout<<"\t ";
        for(j=0; j<columnas; j++)
        {
            if((matriz2[i][j]<10)&&(matriz2[i][j]<100))
            {
                cout<<"00";
            }
            else
                {
                    if((matriz2[i][j]>9)&&(matriz2[i][j]<100))
                    {
                        cout<<"0";
                    }
                }
            cout<<matriz2[i][j]<<" ";
        }
        cout<<endl;
    }
} //fin funcion escribir()


Descargar Código


jueves, 15 de noviembre de 2012

Juego de craps y rojo - amarillo - verde código en lenguaje cpp

JUEGO 1: ROJO – AMARILLO – VERDE:
Escriba un programa que juegue al ROJO – AMARILLO – VERDE. El programa genera
tres dígitos aleatoriamente entre 0 y 9. A estos dígitos se le asigna la posición 1, 2, 3. El
objetivo del juego es adivinar los dígitos así como sus posiciones correctas con el menor
número de intentos posibles. Para cada intento, el jugador proporciona tres dígitos para
las posiciones 1, 2, 3. El programa responde con una pista que consta  de rojo, amarillo y
verde. Si un dígito está en la posición correcta, la respuesta es verde. Si el dígito
adivinado está en la posición incorrecta, la respuesta es amarillo. Si el dígito para una
posición dada no coincide con ninguno de los tres dígitos, la respuesta es roja. A
continuación se muestra un ejemplo de respuestas para los dígitos: 6, 5 y 8 en las
opciones 1, 2, 3, respectivamente:

INTENTOS                              PISTAS
1  2  5                ROJO               ROJO       AMARILLO
8  5  3                AMARILLO    VERDE    ROJO
8  5  6                AMARILLO    VERDE    AMARILLO
6  5  8                VERDE            VERDE    VERDE

JUEGO 2: CRAPS.
Un juego de azar muy popular es el juego de dados conocido como “crasp”, el cual
consiste en:
Un jugador lanza dos dados. Cada dado tiene seis caras. Estas caras contienen 1, 2, 3, 4, 5
y 6 puntos. Una vez que los dados caen, se calcula la suma de los puntos de las caras
superiores de ambos dados. Si la suma es 7 u 11 en el primer tiro, el jugador gana. Si la
suma es 2, 3 o 12 en el primer tiro (llamado crasp), el jugador pierde (es decir, la casa
gana). Se la suma es 4, 5, 6, 8, 9 o 10 en el primer tiro, entonces ésta se convierte en
“puntos” del jugador. Para ganar, usted debe continuar tirando los dados hasta que
“haga su punto”. El jugador pierde si tira 7 antes de hacer su punto.


#include<iostream>
#include<stdlib.h>
#include<string.h>
#include<time.h>
using namespace std;
enum estado{CONTINUA, GANA, PIERDE};

int main()
{
    int opcion, apuesta, balance_banco=1000, dado1, dado2, sum_dados, ptos; //variables
    int adv_num1, num1, adv_num2, num2, adv_num3, num3, intentos=0;
    char pista_num1 [10], pista_num2 [10], pista_num3 [10], respuesta;
    enum estado estado_juego; //puede contener los estados del juego GANA, PIERDE o CONTINUA

    system("COLOR 1F"); //cambia el color de fondo y de las letras
    srand(time(NULL)); //evita que los numeros aleatorios se repitan

    do{
        cout<<endl<<"\t\t\t ***** Menu Principal *****"<<endl;

        cout<<endl<<endl<<"\t     ########                   ###                  ##     ## "<<endl;
                    cout<<"\t     ##     ##                 ## ##                 ##     ## "<<endl;
                    cout<<"\t     ##     ##                ##   ##                ##     ## "<<endl;
                    cout<<"\t 1.- ########     #######    ##     ##    #######    ##     ## "<<endl;
                    cout<<"\t     ##   ##                 #########                ##   ##  "<<endl;
                    cout<<"\t     ##    ##                ##     ##                 ## ##   "<<endl;
                    cout<<"\t     ##     ##               ##     ##                  ###    "<<endl<<endl;

                    cout<<"\t      ######  ########     ###    ########   ######  "<<endl;
                    cout<<"\t     ##    ## ##     ##   ## ##   ##     ## ##    ## "<<endl;
                    cout<<"\t     ##       ##     ##  ##   ##  ##     ## ##       "<<endl;
                    cout<<"\t 2.- ##       ########  ##     ## ########   ######  "<<endl;
                    cout<<"\t     ##       ##   ##   ######### ##              ## "<<endl;
                    cout<<"\t     ##    ## ##    ##  ##     ## ##        ##    ## "<<endl;
                    cout<<"\t      ######  ##     ## ##     ## ##         ######  "<<endl<<endl;

        cout<<"\t 3.- Salir del Programa"<<endl;
        cout<<"\t Indique la opcion seleccionada: ";
        cin>>opcion;
        cout<<endl;

        system("cls"); //borra la pantalla del menu principal

        switch (opcion)
        {
            case 1:
            {
                do{
                    cout<<endl<<endl<<"\t ########                   ###                  ##     ## "<<endl;
                                cout<<"\t ##     ##                 ## ##                 ##     ## "<<endl;
                                cout<<"\t ##     ##                ##   ##                ##     ## "<<endl;
                                cout<<"\t ########     #######    ##     ##    #######    ##     ## "<<endl;
                                cout<<"\t ##   ##                 #########                ##   ##  "<<endl;
                                cout<<"\t ##    ##                ##     ##                 ## ##   "<<endl;
                                cout<<"\t ##     ##               ##     ##                  ###    "<<endl;

                    cout<<endl<<"\t\t ***** Menu *****"<<endl;
                    cout<<"\t 1.- Juego Nvo."<<endl;
                    cout<<"\t 2.- Regresar al menu principal"<<endl;
                    cout<<"\t 3.- Salir del Programa"<<endl;
                    cout<<"\t Indique la opcion seleccionada: ";
                    cin>>opcion;

                    system("cls"); //borra la pantalla de menu del juego

                    switch(opcion)
                    {
                        case 1:
                        {
                            do{
                                adv_num1=rand()%10; //genera numeros aleatorios del 0 al 9
                                adv_num2=rand()%10;
                                adv_num3=rand()%10;

                                do{
                                    cout<<endl<<endl<<"\t Indique el primer numero: ";
                                    cin>>num1;
                                    cout<<"\t Indique el segundo numero: ";
                                    cin>>num2;
                                    cout<<"\t Indique el tercer numero: ";
                                    cin>>num3;

                                    if(num1==adv_num1)
                                    {
                                        strcpy(pista_num1,"VERDE");
                                    }
                                    else
                                        {
                                            if((num1!=adv_num1)&&(num1!=adv_num2)&&(num1!=adv_num3))
                                            {
                                                strcpy(pista_num1,"ROJO");
                                            }
                                            else
                                                {
                                                    if((num1==adv_num2)||(num1==adv_num3))
                                                    {
                                                        strcpy(pista_num1,"AMARILLO");
                                                    }
                                                }
                                            }

                                    if(num2==adv_num2)
                                    {
                                        strcpy(pista_num2,"VERDE");
                                    }
                                    else
                                        {
                                            if((num2!=adv_num1)&&(num2!=adv_num2)&&(num2!=adv_num3))
                                            {
                                                strcpy(pista_num2,"ROJO");
                                            }
                                            else
                                                {
                                                    if((num2==adv_num1)||(num2==adv_num3))
                                                    {
                                                        strcpy(pista_num2,"AMARILLO");
                                                    }
                                                }
                                            }

                                    if(num3==adv_num3)
                                    {
                                        strcpy(pista_num3,"VERDE");
                                    }
                                    else
                                        {
                                            if((num3!=adv_num1)&&(num3!=adv_num2)&&(num3!=adv_num3))
                                            {
                                                strcpy(pista_num3,"ROJO");
                                            }
                                            else
                                                {
                                                    if((num3==adv_num1)||(num3==adv_num2))
                                                    {
                                                        strcpy(pista_num3,"AMARILLO");
                                                    }
                                                }
                                        }

                                    intentos+=1; //cuenta el numero de intentos

                                    cout<<endl<<"\t INTENTOS "<<"\t\t PISTAS"<<"\t\t OPORTUNIDAD: "<<intentos<<"/3"<<endl;
                                    cout<<"\t  "<<num1<<" "<<num2<<" "<<num3<<"\t\t "<<pista_num1<<"  "<<pista_num2<<"  "<<pista_num3<<endl;

                                }while(((strcmp(pista_num1,"VERDE")!=0)||(strcmp(pista_num2,"VERDE")!=0)||(strcmp(pista_num3,"VERDE")!=0))&&(intentos!=3)); //verifica el valor de la pista dada y termuna el turno si falla 3 veces

                                intentos=0; //reinicia el contador de intentos

                                do{ //valida la continuacion el juego
                                    cout<<endl<<"\t Desea continuar con el juego (S) o (N): ";
                                    cin>>respuesta;

                                    if((respuesta!='n')&&(respuesta!='N')&&(respuesta!='s')&&(respuesta!='S'))
                                    {
                                    cout<<endl<<endl<<"\t Opcion invalida intentelo de nuevo"<<endl<<endl;
                                    }
                                }while((respuesta!='n')&&(respuesta!='N')&&(respuesta!='s')&&(respuesta!='S'));

                                system("cls"); //borra la pantalla luego de cada jugada

                            }while((respuesta!='n')&&(respuesta!='N'));
                            break;
                        }

                        case 2:
                        {
                            break;
                        }

                        case 3:
                        {
                            exit(0);
                            break;
                        }

                        default:
                        {
                            cout<<endl<<"\t opcion invalida"<<endl<<endl;
                            break;
                        }
                    }
                }while((opcion!=2)&&(opcion!=3));
                break;
            }

            case 2:
            { //inico opcion 2
                do{
                    cout<<endl<<endl<<"\t  ######  ########     ###    ########   ######  "<<endl;
                                cout<<"\t ##    ## ##     ##   ## ##   ##     ## ##    ## "<<endl;
                                cout<<"\t ##       ##     ##  ##   ##  ##     ## ##       "<<endl;
                                cout<<"\t ##       ########  ##     ## ########   ######  "<<endl;
                                cout<<"\t ##       ##   ##   ######### ##              ## "<<endl;
                                cout<<"\t ##    ## ##    ##  ##     ## ##        ##    ## "<<endl;
                                cout<<"\t  ######  ##     ## ##     ## ##         ######  "<<endl;

                    cout<<endl<<endl<<"\t\t ***** Menu *****"<<endl;
                    cout<<"\t 1.- Juego Nvo."<<endl;
                    cout<<"\t 2.- Regresar al menu principal"<<endl;
                    cout<<"\t 3.- Salir del Programa"<<endl;
                    cout<<"\t Indique la opcion seleccionada: ";
                    cin>>opcion;
                    cout<<endl;

                    system("cls"); //borra la pantalla de menu del juego

                    switch(opcion)
                    {
                        case 1:
                        {//inicio craps
                            do{
                                cout<<endl<<endl<<"\t Balance del banco Bs. "<<balance_banco<<endl<<endl;

                                do{
                                    cout<<"\t Jugador apuesta Bs: ";
                                    cin>>apuesta;

                                    if(apuesta<0)
                                    {
                                        cout<<endl<<"\t Monto invalido"<<endl<<endl;
                                    }
                                    else
                                        {
                                            if(apuesta<50)
                                            {
                                                cout<<endl<<"\t El monto minimo para apostar es de 50 Bs."<<endl<<endl;
                                            }
                                            else
                                                {
                                                    if(apuesta>500)
                                                    {
                                                        cout<<endl<<"\t El monto de la apuesta no puede ser mayor de 500 Bs."<<endl<<endl;
                                                    }
                                                }
                                            }
                                }while((apuesta<0)||(apuesta<50)||(apuesta>500)); //valida el monto de la apuesta

                                if(apuesta<=balance_banco) //valida que el monto de la apuesta no sea mayor que el balance del banco
                                {
                                    cout<<endl<<"\t El jugador esta lanzando los dados"<<endl;

                                    dado1=1+(rand()%6); //genera la cara del dado 1 aleatoriamente
                                    dado2=1+(rand()%6); //genera la cara del dado 2 aleatoriamente
                                    sum_dados=dado1+dado2; //suma de los dados

                                    cout <<"\t El jugador lanzo: "<< dado1<<" + "<<dado2<<" = "<<sum_dados<<endl; //muestra el resultado de este lanzamiento

                                    if((sum_dados==7)||(sum_dados==11)) //el jugador gana en el primer intento
                                    {
                                        estado_juego=GANA;
                                    }
                                    else
                                        {
                                            if((sum_dados==2)||(sum_dados==3)||(sum_dados==12)) //el jugador pierde en el primer intento
                                            {
                                                estado_juego=PIERDE;
                                            }
                                            else //el juego continua
                                                {
                                                    estado_juego=CONTINUA;
                                                    ptos=sum_dados;
                                                    cout<<endl<<"\t Puntos: "<<ptos<<endl;
                                                }
                                        }

                                    while(estado_juego==CONTINUA)
                                    {
                                        cout<<endl<<"\t El jugador esta lanzando los dados"<<endl;

                                        dado1=1+(rand()%6); //genera la cara del dado 1 aleatoriamente
                                        dado2=1+(rand()%6); //genera la cara del dado 2 aleatoriamente
                                        sum_dados=dado1+dado2; //suma de los dados

                                        cout <<"\t El jugador lanzo: "<< dado1<<" + "<<dado2<<" = "<<sum_dados<<endl; //muestra el resultado de
                                        cout<<endl<<"\t Puntos: "<<sum_dados<<endl;

                                        if(sum_dados==ptos) //el jugador gana por punto
                                        {
                                            estado_juego=GANA;
                                        }
                                        else
                                            {
                                                if(sum_dados==7) //el jugador pierde por punto
                                                {
                                                    estado_juego=PIERDE;
                                                }
                                            }
                                    }

                                    if(estado_juego==GANA)
                                    {
                                        balance_banco+=apuesta; //se suma el monto de la apuesta
                                        cout<<endl<<"\t El jugador gana, el nuevo balance es: "<<balance_banco<<endl;
                                    }
                                    else
                                        {
                                            if(estado_juego==PIERDE)
                                            {
                                                balance_banco-=apuesta; //se resta el monto de la apuesta
                                                cout<<endl<<"\t Craps! El jugador pierde"<<endl;
                                                cout <<"\t El jugador tiene Bs. "<<balance_banco<<endl;
                                            }
                                        }

                                    if(balance_banco==0) //si el monto del banco es cero el juego finaliza
                                    {
                                        system("cls");
                                        cout<<endl<<"\t Disculpe, ya no tiene suficiente dinero"<<endl;
                                        break; //rompe el ciclo
                                    }
                                }
                                 else
                                    {
                                        cout<<endl<<"\t La apuesta no puede ser mayor que el balance del banco"<<endl;
                                        cout<<endl<<"\t Intente con otro monto"<<endl<<endl;
                                    }

                                do{ //valida la continuacion el juego
                                    cout<<endl<<"\t Desea continuar con la apuesta actual (S) o terminar el juego (N): ";
                                    cin>>respuesta;

                                    if((respuesta!='n')&&(respuesta!='N')&&(respuesta!='s')&&(respuesta!='S'))
                                    {
                                        cout<<endl<<endl<<"\t Opcion invalida intentelo de nuevo"<<endl<<endl;
                                    }
                                }while((respuesta!='n')&&(respuesta!='N')&&(respuesta!='s')&&(respuesta!='S'));

                                system("cls"); //borra la pantalla luego de cada jugada

                            }while((respuesta!='n')&&(respuesta!='N'));

                            balance_banco=1000; //al finalizar el juego reinicia el monto del banco

                            break;
                        } //fin craps

                        case 2: //vuelve al menu principal
                        {
                            break;
                        }

                        case 3:
                        {
                            exit(0); //cierra el programa
                            break;
                        }

                        default: //valida las opciones del menu del juego
                        {
                            cout<<endl<<"\t Opcion invalida"<<endl<<endl;
                            break;
                        }
                    }
                }while((opcion!=2)&&(opcion!=3)); //continua el juego hasta que seleccione la opcion 2 o la opcion 3
                break;
            } //fin opcion 2

            case 3:
            {
                exit(0); //cierra el juego
                break;
            }

            default: ////valida las opciones del menu principal
            {
                cout<<endl<<"\t Opcion invalida"<<endl<<endl;
                break;
            }
    }
    }while(opcion!=3);

    system("pause");
    return 0;
}

Descargar Código

Realice un programa que maneja la información de 10 alumnos

Realice un programa que maneja la información de 10 alumnos. Los datos a
manejar son nombre, nombre de la asignatura y 4 notas acumulativas. Calcular
y mostrar el promedio y la suma de las notas de un alumno en particular.



#include<iostream>
#include<cstdlib>
#include<cstring>
using namespace std;

const int tam=10;
const int tam_cad=50;
const int cant_unidades=4;

class datos
{
    private:
    char nombre[tam_cad];
    char materia[tam_cad];
    float notas[cant_unidades];
    float prom;

    public:
    datos(){};
    datos(char [], char [], float []);
    void mostrar();
    friend void leer(datos [], int &, char [], char [], float []);
    friend void promedio(datos [], int &, int &);
    friend int buscar(datos [], int &, char []);
};

int menu();

int main()
{
    int cont=0, opc, indice;
    char nom[tam_cad], asignatura[tam_cad];
    float notas_acum[cant_unidades];
    datos estudiante[tam];

    do{
        opc=menu();

        switch(opc)
        {
            case 1:
            {
                leer(estudiante, cont, nom, asignatura, notas_acum);
                system("cls");
                break;
            }

            case 2:
            {
                cout<<"\n\n\t Indique nombre a buscar: ";
                cin.getline(nom, tam_cad);
                system("cls");

                indice=buscar(estudiante, cont, nom);
                promedio(estudiante, cont, indice);
                estudiante[indice].mostrar();

                cin.get();
                system("cls");
                break;
            }

            case 3:
            {
                exit(0);
                break;
            }

            default:
            {
                cout<<"\n\t opcion invalida"<<endl;

                cin.get();
                system("cls");
                break;
            }
        }
    }while(opc!=3);

    cin.get(); cin.get();
    return 0;
}

int menu()
{
    int opc;

    cout<<"\n\n\t 1.- Leer alumnos"<<endl;
    cout<<"\t 2.- Mostrar promedio"<<endl;
    cout<<"\t 3.- Salir"<<endl;
    cout<<"\t indique opcion: ";
    cin>>opc;

    cin.ignore();
    system("cls");

    return opc;
}

datos::datos(char nom[tam_cad], char asignatura[tam_cad], float notas_acum[cant_unidades])
{
    strcpy(nombre, nom);
    strcpy(materia, asignatura);
    for(int i=0; i<cant_unidades; i++)
    {
        notas[i]=notas_acum[i];
    }
}

void datos::mostrar()
{
    cout<<"\n\n\t Nombre: "<<nombre<<endl;
    cout<<"\t Materia: "<<materia<<endl;
    cout<<"\t Promedio: "<<prom<<endl;
}

void leer(datos estudiante[tam], int &cont, char nom[tam_cad], char asignatura[tam_cad], float notas_acum[cant_unidades])
{
    cout<<"\n\n\t Nombre: ";
    cin.getline(nom, tam_cad);
    cout<<"\t Materia: ";
    cin.getline(asignatura, tam_cad);

    for(int i=0; i<cant_unidades; i++)
    {
        cout<<"\t Nota "<<(i+1)<<" : ";
        cin>>notas_acum[i];
    }

    datos temp(nom, asignatura, notas_acum);
    estudiante[cont]=temp;
    cont++;
}

void promedio(datos estudiante[tam], int &cont, int &indice)
{
    float prom_notas=0;

    for(int i=0; i<cant_unidades; i++)
    {
        prom_notas+=estudiante[indice].notas[i];
    }

    estudiante[indice].prom=(prom_notas/cant_unidades);
}

int buscar(datos estudiante[tam], int &cont, char nom[tam_cad])
{
    int indice;

    for(int i=0; i<cont; i++)
    {
        if(strcmp(estudiante[i].nombre, nom)==0)
        {
            indice=i;
            break;
        }
    }

    return indice;
}

Descargar Código