/*Programa de Matrices*/
void opcion7(){
// ordena x columnas
int v[FIL];
for(int c=0; c<COL; c++){
// pasa contenido de f al vector v
for(int f=0; f<FIL; f++){
v[f] = m[f][c];
}
// ordena vector
ordenAsc(v,FIL);
// regresa contenido de v a la fila c
for(int f=0; f<FIL; f++){
m[f][c]=v[f];
}
}
// muestra nuevo contenido de la matriz
opcion2();
}
/*Programa de Matrices*/
void opcion5(){
double p[COL];
for( int c=0;c<COL;c++){
p[c]=0;
for(int f=0;f<FIL;f++){
p[c]+=m[f][c];
}
p[c] /=FIL;
}
printf("PROMEDIO POR COLUMNA\n");
for(int f=0;f<FIL;f++){
for(int c=0; c<COL;c++){
printf("%4d",m[f][c]);
}
printf("\n");
}
for(int c=0;c<COL;c++){
printf("%5.1f",p[c]);
}
}
/*
PROGRAMA 1:
vectores con funciones
incluye funciones adicionales de intercambio
*/
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <time.h>
using namespace std;
// define tamaño constante
#define TAM 30
// declara vector globalmente
int a[TAM];
// prototipos de funciones
void llenaVector();
void lista();
void capicuas();
void primos();
void estadistica();
void ordenAsc(int v[], int n);
int aleatorio(int vi, int vf);
int esCapicua(int n);
int esPrimo(int n);
double promedio();
double dstandar();
double varianza();
int menu();
void intercambiaPares();
int posicionPrimerPar();
int posicionUltimoPar();
void intercambia(int i,int j);
void intercambiaImPares();
void main()
{
int opcion;
do{
opcion = menu();
switch(opcion){
case 1:
llenaVector();
lista();
break;
case 2:
capicuas();break;
case 3:
primos(); break;
case 4:
estadistica();break;
case 5:
ordenAsc(a,TAM);
lista();
break;
case 6:
intercambiaPares();
break;
case 7:
intercambiaImPares();
break;
}
}while(opcion!=0);
}
// desarrollo de funciones
void llenaVector(){
srand(time(NULL));
for(int i=0; i<TAM; i++)
a[i] = aleatorio(100,999);
}
int aleatorio(int vi, int vf){
return rand() % (vf-vi+1) + vi;
}
void lista(){
printf("CONTENIDO DEL VECTOR\n");
for(int i=0; i<TAM; i++){
printf("a[%2d] = %5d\n",i,a[i]);
}
}
void capicuas(){
printf("Numeros capicuas encontrados\n");
int c=0;
for(int i=0; i<TAM; i++){
if(esCapicua(a[i])==1){
c++;
printf("a[%2d] = %5d\n",i,a[i]);
}
}
printf("Hay %3d capicuas en el vector\n",c);
}
int esCapicua(int n){
// n recibe un numero de 3 cifras
if(n/100 == n%10)
return 1; // si es
else
return 0; // no es
}
void primos(){
printf("Numeros primos encontrados\n");
int c=0;
for(int i=0; i<TAM; i++){
if(esPrimo(a[i])==1){
c++;
printf("a[%2d] = %5d\n",i,a[i]);
}
}
printf("Hay %3d primos en el vector\n",c);
}
int esPrimo(int n){
int cd=0;
for(int i=1; i<=n; i++){
if(n % i == 0)
cd++;
}
if(cd == 2)
return 1; // si es primo
else
return 0; // no es primo
}
void estadistica(){
printf("ESTADISTICAS\n");
printf("Promedio: %5.1f\n",promedio());
printf("Desviacion estandar: %5.1f\n",dstandar());
printf("Varianza: %5.1f\n",varianza());
}
double promedio(){
double suma=0;
for(int i=0; i<TAM; i++)
suma += a[i];
return suma/TAM;
}
double varianza(){
double prom=promedio();
double suma=0;
for(int i=0; i<TAM; i++)
suma += pow(a[i]-prom,2);
return suma/(TAM-1);
}
double dstandar(){
return sqrt(varianza());
}
void ordenAsc(int v[], int n){
for(int i=0; i<n-1; i++){
for(int j=i+1; j<n; j++){
if(v[i] > v[j]){
// intercambia
int aux=v[i];
v[i] = v[j];
v[j] = aux;
}
}
}
}
int menu(){
int op;
printf("MENU DE OPCIONES\n");
printf("[1] Genera\n");
printf("[2] Capicuas\n");
printf("[3] Primos\n");
printf("[4] Estadistica\n");
printf("[5] Orden ascendente\n");
printf("[6] Intercambia pares\n");
printf("[7] Intercambia impares\n");
printf("[0] Fin\n");
printf("OPCION: ");cin>>op;
return op;
}
void intercambiaPares(){
/*
intercambia primer par con ultimo par encontrados
*/
int ppp = posicionPrimerPar();
if(ppp == -1)
printf("No hay primer par\n");
else{
int pup = posicionUltimoPar();
if(pup == -1)
printf("No hay ultimo par\n");
else{
intercambia(ppp,pup);
lista();
}
}
}
int posicionPrimerPar(){
for(int i=0; i<TAM; i++){
if(a[i] % 2 == 0)
return i;
}
return -1; // no encontro primer par
}
int posicionUltimoPar(){
for(int i=TAM-1; i>=0; i--){
if(a[i] % 2 == 0)
return i;
}
return -1; // no encontro ultimo par
}
void intercambia(int i,int j){
int aux=a[i];
a[i] = a[j];
a[j] = aux;
}
void intercambiaImPares(){
/*
intercambia segundo impar con penultimo impar encontrados
*/
}
/*
PROGRAMA 2: MATRICES
AVANCE 3 CON ORDENAMIENTO
*/
#include "stdafx.h"
#include <iostream>
#include <time.h>
using namespace std;
// define tamaño de la matriz
#define FIL 10
#define COL 10
// declara matriz global
int m[FIL][COL];
// prototipos
void opcion1();
void opcion2();
void opcion3();
void opcion4();
void opcion5();
void opcion6();
void opcion7();
int menu();
int aleatorio(int vi, int vf);
int mayorValor();
void ordenAsc(int v[], int n);
void main()
{
int op;
do{
op=menu();
switch(op){
case 1: opcion1(); break;
case 2: opcion2(); break;
case 3: opcion3(); break;
case 4: opcion4(); break;
case 5: opcion5(); break;
case 6: opcion6(); break;
case 7: opcion7(); break;
}
}while(op!=0);
}
// desarrollo de funciones
void opcion1(){
srand(time(NULL));
for(int f=0; f<FIL; f++)
for(int c=0; c<COL; c++)
m[f][c] = aleatorio(10,99);
printf("matriz generada satisfactoriamente!\n");
}
int aleatorio(int vi, int vf){
return rand()%(vf-vi+1) + vi;
}
void opcion2(){
printf("CONTENIDO DE LA MATRIZ\n");
for(int f=0; f<FIL; f++){
for(int c=0; c<COL; c++){
printf("%4d",m[f][c]);
}
printf("\n");
}
}
void opcion3(){
int mayor = mayorValor();
int cont=0;
printf("El mayor valor encontrado es: %4d\n",mayor);
// muestra las posiciones donde se encuentra
printf("Esta en las siguientes posiciones: \n");
for(int f=0; f<FIL; f++){
for(int c=0; c<COL; c++){
if( m[f][c] == mayor){
printf("[%2d,%2d]\n",f,c);
cont++;
}
}
}
printf("se repite %2d veces\n",cont);
}
int mayorValor(){
int x=10; // supuesto falso: el menor posible
for(int f=0; f<FIL; f++){
for(int c=0; c<COL; c++){
if( m[f][c] > x)
x = m[f][c];
}
}
return x;
}
void opcion4(){
// promedios por fila
double p[FIL];
for(int f=0; f<FIL; f++){
p[f] = 0;
for(int c=0; c<COL; c++){
p[f] += m[f][c];
}
p[f] /= COL;
}
// muestra matriz con promedio x fila
printf("PROMEDIOS POR FILA\n");
for(int f=0; f<FIL; f++){
for(int c=0; c<COL; c++){
printf("%4d",m[f][c]);
}
printf("%5.1f\n",p[f]);
}
}
void opcion5(){
// promedios por columna
}
int menu(){
int op;
printf("MENU DE OPCIONES\n");
printf("[1] Genera\n");
printf("[2] Lista\n");
printf("[3] Mayor valor\n");
printf("[4] Promedios x fila\n");
printf("[5] Promedios x columna\n");
printf("[6] Ordena por fila\n");
printf("[7] Ordena por columna\n");
printf("[0] Fin\n");
printf("OPCION: ");cin>>op;
return op;
}
void opcion6(){
// ordena x filas
int v[COL];
for(int f=0; f<FIL; f++){
// pasa contenido de f al vector v
for(int c=0; c<COL; c++){
v[c] = m[f][c];
}
// ordena vector
ordenAsc(v,COL);
// regresa contenido de v a la fila f
for(int c=0; c<COL; c++){
m[f][c]=v[c];
}
}
// muestra nuevo contenido de la matriz
opcion2();
}
void opcion7(){
// ordena x columnas
}
void ordenAsc(int v[], int n){
for(int i=0; i<n-1; i++){
for(int j=i+1; j<n; j++){
if(v[i] > v[j]){
// intercambia
int aux=v[i];
v[i] = v[j];
v[j] = aux;
}
}
}
}
/*
FUNCIONES PROPIAS
-factorial de un numero entero
-muestre el factorial de los n primeros numeros naturales
- validar que n sea inferior a 16 y aplicar
estructura iterativa
*/
#include "stdafx.h"
#include <iostream>
#include <conio.h>
using namespace std;
// prototipos de funciones
long factorial(int n);
void muestraFactoriales(int n);
int leeNumero();
void mensaje(char * texto);
int continua();
// funcion principal
void main()
{
int sigue;
do{
// llamada
int n=leeNumero();
if(n > 16)
mensaje("Error en el dato ingresado");
else
// llamada
muestraFactoriales(n);
sigue = continua();
}while(sigue==1);
}
// desarrollo de funciones
long factorial(int n){
long f=1;
for(int i=1; i<=n; i++)
f *= i;
return f;
}
void muestraFactoriales(int n){
for(int i=1; i<=n; i++){
// llamadas a las funciones
long rpta = factorial(i);
// muestra el resultado
cout<<"Factorial de "<<i<<" = "<<rpta<<endl;
}
}
int leeNumero(){
int n;
cout<<"Ingrese un numero entero: ";
cin>>n;
return n;
}
void mensaje(char * texto){
cout<<texto<<endl;
}
int continua(){
int n;
cout<<"Desea continuar? [1=si, 0=no]: ";
cin>>n;
return n;
}
/*
FUNCIONES PROPIAS
-retorna numero entero aleatorio en un rango dado
-muestra n notas aleatorias
-numeroProhibido:
genera, muestra y cuenta los numeros aleatorios de 2 cifras
hasta que salga el numero 69. Al finalizar debe mostrar
la cantidad de numeros generados.
-menu: muestra las opciones:
[1] notas aleatorias
[2] numero prohibido
[0] fin
ingresa la opcion y lo retorna.
*/
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <time.h>
using namespace std;
// prototipos
int aleatorio(int vi, int vf);
int leeNumero();
void muestraNotas(int n);
void numeroProhibido();
int menu();
// principal
void main()
{
int opcion;
do{
opcion=menu();
switch(opcion){
case 1:
//int n=leeNumero(); // llamada
muestraNotas(leeNumero()); // llamada
break;
case 2:
numeroProhibido();// llamada
break;
}
}while(opcion!=0);
}
// desarrollo
int aleatorio(int vi, int vf){
int n;
n = rand()%(vf-vi+1) + vi;
return n;
}
int leeNumero(){
int n;
cout<<"Ingrese numero entero: ";
cin>>n;
return n;
}
void muestraNotas(int n){
// inicia generador de numeros aleatorios
srand(time(NULL));
for(int i=1; i<=n; i++){
// obtiene nota aleatoria
int numero=aleatorio(0,20); // llamada
// muestra nota generada
cout<<"nota "<<i<<" = "<<numero<<endl;
}
}
void numeroProhibido(){
int numero;
int cont=0;
do{
numero=aleatorio(10,99);
cout<<numero<<endl;
cont++;
}while(numero != 69);
cout<<"Se generaron "<<cont<<" numeros aleatorios"<<endl;
}
int menu(){
int n;
cout<<"MENU DE OPCIONES"<<endl;
cout<<"[1] Notas aleatorias"<<endl;
cout<<"[2] Numero prohibido"<<endl;
cout<<"[0] Fin"<<endl;
cout<<"OPCION: ";
cin>>n;
return n;
}