Está en la página 1de 8

ALGORITMOS 2-Funciones Ejemplos:

1) Crear las siguientes funciones pasando un vector de enteros y la cantidad de elementos a) Devolver la suma del vector b) Devolver el mayor valor c) Imprimir el vector d) Devolver el Mnimo Valor e) El promedio de datos f) Ordenar el vector por el mtodo de insercin Representacin de una funcin que retorna valores

Un tipo void no retorna valores(no debe de tener return)

Solucin: //Problema 1 #include <iostream.h> #include <conio.h> int suma(int vec[],int nd){ //se indica la suma del vector //vec->vector y nd->cantidad de elementos int sm=0;//sm es la suma del vector for(int f=0;f<nd;f++){ sm=sm+vec[f]; } return sm; }

void print(int vec[], int nd){ cout<<"\n los datos del vector :\n"; for(int f=0;f<nd;f++) cout<<"indice="<<f<<"\t valor="<<vec[f]<<endl;//el vec[f] se inserta //cuando se usa la variable void } // se devuelve el mayor valor int mayor(int x[],int n){ int max=x[0]; for(int f=0;f<n;f++){ if(x[f]>max) max=x[f]; } return max; } int promp // se devuelve el menor valor int menor(int x[],int n){ int min=x[0]; for(int f=0;f<n;f++){ if(x[f]<min) min=x[f]; } return min; } main(){ int a[]={1,0,2,8};// se coloca dos valores a y b //para realizar la suma del vector //para que se imprima en int suma int b[]={4,16,1,10,3}; cout<<"\n mayor a="<<mayor(a,3); cout<<"\n menor b="<<menor(b,5); print(a,3);print(b,5);//esta variable de los vectores a y b //permiten buscar la funcin de la //variable void //Nota: cada funcion es independiente del otro //el tipo dato (como max y min) es aquel que retorna valor //el tipo void no retorna valor getch(); } //datos: //error //cout<<print(a,3)->no se puede un cout, ni x=print //x=print(a,3) //no se puede poner un cout, ni un x=print ,debido a

//que el print no puede ir acompaado con variables //debido a que pertenece al valor point 2) Repitiendo el problema 1, pero se debe de obtener el promedio de a y b ms baja y ordenar los datos mediante el uso del comando void ordena: //ordenar los datos de los vectores a y b //mediante el comando ordena #include<iostream.h> #include<conio.h> int suma(int vec[],int nd){ //se indica la suma del vector //vec->vector y nd->cantidad de elementos int sm=0;//sm es la suma del vector for(int f=0;f<nd;f++){ sm=sm+vec[f]; } return sm; } void print(int vec[], int nd){ cout<<"\n los datos del vector :\n"; for(int f=0;f<nd;f++) cout<<"indice="<<f<<"\t valor="<<vec[f]<<endl;//el vec[f] se inserta //cuando se usa la variable void } // se devuelve el mayor valor int mayor(int x[],int n){ int max=x[0]; for(int f=0;f<n;f++){ if(x[f]>max) max=x[f]; } return max; } // se devuelve el menor valor int menor(int x[],int n){ int min=x[0]; for(int f=0;f<n;f++){ if(x[f]<min) min=x[f]; } return min; } int promp(int x[],int n){ return(suma(x,n)-menor(x,n))/(n-1);

} void ordena(int x[], int nd){ int pos,cp,aux; for(pos=0;pos<nd-1;pos++) for(cp=pos+1;cp<nd;cp++) if(x[pos]>x[pos]){ aux=x[pos]; x[pos]=x[cp]; x[cp]=aux; } }// fin del comando ordena

main(){ int a[]={1,0,2,8};// se coloca dos valores a y b //para realizar la suma del vector //para que se imprima en int suma int b[]={4,16,1,10,3}; cout<<"\n mayor a="<<mayor(a,3); cout<<"\n menor b="<<menor(b,5); cout<<"\n el promedio de a="<<promp(a,3); cout<<"\n el promedio de b="<<promp(b,5); print(a,3);ordena(a,3); print(a,3); print(b,5);ordena(b,5); print(b,5);//esta variable de los vectores a y b //permiten buscar la funcin de la //variable void //Nota: cada funcion es independiente del otro //el tipo dato (como max y min) es aquel que retorna valor //el tipo void no retorna valor int y=suma(a,3)+suma(b,5); cout<<"\n suma de A y B="<<y<<endl; getch(); } //datos: //error //cout<<print(a,3)->no se puede un cout, ni x=print //x=print(a,3) //no se puede poner un cout, ni un x=print ,debido a //que el print no puede ir acompaado con variables //debido a que pertenece al valor point 3)//Programa para el calculo del area de un circulo y el volumen de una esfera

//usando dos funciones. Se usa el mismo valor de radio para los dos calculos. #include <iostream.h> #include <math.h> constdoublePI = 3.14159; /* Tiene alcance global. Se coloca por debajo de los include y antes de los prototipos */ /* Prototipos */ doublearea_circulo(double radio); double volumen_esfera(double radio); int main( ) { doubleradio_de_ambos, area, volumen; /*Alcance local*/ cout<<Dame el radio del circulo y de la esfera \n; cin>>radio_de_ambos; area = area_circulo(radio_de_ambos); volumen = volumen_esfera(radio_de_ambos); cout<<El area del circulo es <<area<<\n; cout<<El volumen de la esfera es <<volumen<<\n; cout<<\n; system(PAUSE); return 0; } 4) Funciones pasando cadenas: La clase string permite manejar funciones de cadena siendo las mas importantes: cad.substr(pos,ncar).- extrae caracteres a partir de una cierta posicin cad.size() .- devuelve la longitud de la cadena cad.at(pos).- devuelve el carcter en la posicin definida ejemplo: // string::substr #include <iostream> #include <conio.h> ALGORITMO II #include <string> using namespace std; main () { string str="Curso de Algoritmos"; string str2, str3; size_t pos;

str2 = str.substr (1,4); // "urso" pos = str.find("de"); // position 7 donde lo ubico

cout << str2 << ' ' << str3 << endl; getch(): }
Ejercicios Propuestos

1)Funciones de cadena: a) Pasando una cadena de dgitos que muestre la suma de los dgitos b) Pasando un numero que lo devuelva en nmeros romanos c) Pasando el dni como cadena y el tipo de persona 1=Natural o 2=Juridica que devuelva el Ruc ejemplo Ruc(25638231,1)=> 10256382315 si es 1 los dos primeros dgitos es 10 , si es 2 es 12 el ultimo dgitos se genera con la siguiente expresin respecto al dni sm= d1*8+ d2*7 ++d8*1 ultimo =sm% 9 2)Llenar un vector de 30 elementos de con valores de aleatorios de 1-9 , luego muestre la cantidad de veces que se repite cada elemento 3)Realizar La conversin de Nmeros a letras de 0 999999 , Utilizar cuatro vectores bsicos para llenar los datos como cadena: Vec1 Vec2 Vec3 Vec4 Uno Once Diez Ciento Dos Doce Veinte Doscientos .. ... .. ... Nueve Diecinueve Noventa Novecientos Ejemplo:

Ejemplo:

4) Ingrese en una caja de texto los nombres separados por comas ( pueden ser muchos nombres ) , luego en una lista pasar ordenados los nombres de forma ascendente.

5) Escriba un programa completo que lea tres valores enteros para las variables a, b, c, que enseguida invoque a las funciones bisuma y media_de_3 de los ejercicios anteriores y que, por ltimo, despliegue el valor promedio de los tres datos con un mensaje apropiado. Qu cambios necesitara realizar a las funciones para obtener el promedio de ms de 3 datos?
6)Escribe una funcin que devuelva si su argumento n es o no es primo. NOTA: Tener en cuenta que basta con probar la divisibilidad por los nmeros desde el 2 hasta la n . Lo cual ahorra muchas operaciones. Si adems consideramos que basta con saber si es par o no al principio, podemos ahorrarnos la mitad de las pruebas de divisores, eliminando todos los pares. Por fin una ltima mejora, importante, es eliminar los mltiplos de tres.

También podría gustarte