You are on page 1of 9

Fundamentos de Programacin

Ing. M.Sc. Edelfr Flores Velsquez

GUIA DE PRCTICAS FUNCIONES


Objetivos:
Aplicar las funciones en la solucin de problemas prcticos.

Procedimientos:
I. Verificar errores de sintaxis y semntica
1) Escribir una funcin que tenga un argumento de tipo entero y que devuelva la letra P si el
nmero es positivo, y la letra N si el nmero es cero o negativo.
#include <cstdlib>
#include <iostream>
char numero(int n);
using namespace std;
int main(int argc, char *argv[])
{
int num;
cout<<"Ingrese un numero" ;
cin>>num;
cout<<"Numero es "<<numero();
system("PAUSE");
return EXIT_SUCCESS;
}
int numero(char n) {
if (n>0)
return('P');
else
return('N');
}
2)

Escribir una funcin lgica vocal, que determine si un carcter es una vocal.
#include <cstdlib>
#include <iostream>
int vocal(char c);
using namespace std;
int main(int argc, char *argv[])
{

Fundamentos de Programacin

Ing. M.Sc. Edelfr Flores Velsquez

char c;
cout<<"Ingrese un caracter" ;
cin>>c;
if (vocal(c))
cout<<"SI es una vocal "<<c;
else
cout<<"No Es una vocal "<<c;
system("PAUSE");
return EXIT_SUCCESS;
}
char vocal(int c) {
if (c=='a' || c=='e' || c=='i'|| c=='o'|| c=='u')
return(1);
else
return(0);
}
3) Programa que cuenta el nmero de dgitos que tiene un nmero ingresado por teclado, utiliza
funciones.

#include <cstdlib>
#include <iostream>
int numdigitos(int N)
using namespace std;
int main(int argc, char *argv[])
{
int n;
cout<<"Ingrese numero: ";
cin>>n;
cout<<"Tiene "<<numdigito(N)<<" digitos"<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}

Fundamentos de Programacin

Ing. M.Sc. Edelfr Flores Velsquez

int numdigitos(int N){


float cont=0;
while(N>0){
N=N/10;
cont++;
}
return(cont);
}

II. Completa el cdigo para resolver el problema


4) Programa que muestra la suma de los dgitos de un nmero ingresado por teclado

#include <cstdlib>
#include <iostream>
int sumadigitos(int N);
using namespace std;
int main(int argc, char *argv[])
{
int n;
cout<<"Ingrese numero: ";
cin>>n;
//muestra los resultados
//completa el cdigo
system("PAUSE");
return EXIT_SUCCESS;
}
int sumadigitos(int N){
int sum=0, C;
while(N>0){
//completa el cdigo
sum=sum+C;
}
return(sum);
}

Fundamentos de Programacin

Ing. M.Sc. Edelfr Flores Velsquez

5) Programa que Generar la siguiente matriz, utilizando funciones :


[01][02][03][04]
[05][06][07][00]
[08][09][00][00]
[10][00][00][00]
Se ingresa la dimensin de la matriz cuadrada.

#include <cstdlib>
#include <iostream>
using namespace std;
void llenar (//complete .)
{
int cont=1;
for (int i=1;i<=d;i++)
{
for (int j=1;j<=d;j++)
{
if ((i+j)<=(d+1))
{M[i][j]=cont; cont++;}
else
M[i][j]=0;
}
}
}
void mostrar (int M[20][20], int d)
{
for (int i=1;i<=d;i++)
{
printf("\n");
for (int j=1;j<=d;j++)
{
printf (//complete.);

Ing. M.Sc. Edelfr Flores Velsquez

Fundamentos de Programacin

}
}
}
int main(int argc, char *argv[])
{
int d;
int M[20][20];
printf("Ingresa dimension: ");
scanf("%d",&d);
llenar(//complete);
mostrar(//complete);
system("PAUSE");
return EXIT_SUCCESS;
}

III. Convierta los siguientes programas en uno que utilice funciones


6) Escribir un programa, haciendo uso de funciones, que visualice un calendario de la forma:
L

6
13
20
27

7
14
21
28

M
1
8
15
22
29

J
2
9
16
23
30

V
3
10
17
24

S
4
11
18
25

D
5
12
19
26

El usuario indica nicamente el mes y el ao. La frmula que permite conocer el da de la semana
correspondiente a una fecha es:
Mese de enero o febrero:
n= a + 31 *(m-1) + d (a-1) div 4 3 * ((a+99) div 100) div 4;
Restantes meses:
n= a + 31 * (m-1) + d - (4*m + 23) div 10 + a div 4 - (3*(a div 100 + 1)) div 4;
Donde a=ao; m=mes; d=da;
Nota: n mod 7 indica el da de la semana (1=lunes, 2= martes, etc.)
Implementa el siguiente programa con funciones.
CDIGO
#include <cstdlib>
#include <iostream>

Fundamentos de Programacin

Ing. M.Sc. Edelfr Flores Velsquez

using namespace std;


int main(int argc, char *argv[])
{
int a,m,d,i,n,aux,z;
printf("\n
PROGRAMA QUE LEE UNA FECHA Y MUESTRA EL MES DEL ANO INTRODUCIDO\n");
printf("________________________________________________________________________________\n");
//ao
printf("\nIntroducir ao: ");
scanf("%d",&a);
//mes
do{
fflush(stdin);
printf("\nIntroducir mes (1-12): ");
scanf("%d",&m);
}while (m<1 && m>12);
printf("\n\n\t\tEL MES %d DEL %d",m,a);
//Imprimir nombre dias
printf("\n\n");
printf("L\tM\tX\tJ\tV\tS\tD\n");
printf("--------------------------------------------------\n");
//meses de 31 dias
if(m==1 || m==3 || m==5 || m==7 || m==8 || m==10 || m==12)
{
d=31;
}
//febrero
else if (m==2)
{
if (a%4==0)
{
if (a%100==0 && a%400!=0)
{
d=28;
}
else
{
d=29;
}
}
else
{
d=28;
}
}

Fundamentos de Programacin

Ing. M.Sc. Edelfr Flores Velsquez

//mese de 30 dias
else
{
d=30;
}
//calcular el dia de la semana
if(m==1 || m==2)
{
n=a+31*(m-1)+d*(a-1)/4-3*((a+99)/100)/4;
}
else
{
n=a+31*(m-1)+d-(4*m+23)/10+a/4-(3*(a/100+1))/4;
}
//imprimir numeros dias
aux=0;
for(i=0;i<n;i++)
{
aux++;
}
for(i=1;i<=d;i++)
{
aux++;
if(aux%7==0)
{
printf("%d\n",i);
}
else
{
printf("%d\t",i);
}
}
printf("\n\n");
system("PAUSE");
return EXIT_SUCCESS;
}

7) Programa que halla el promedio de notas de alumnos, adems lee y escribe el nombre de los
estudiantes:
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int notas[2];
char nombre[2][30];
int i,suma=0; float promedio;
//lectura de datos
for (i=0; i<2; i++) {
cout<<ingrese el nombre <<i+1<<: ;
cin>>nombre[i];

Fundamentos de Programacin

Ing. M.Sc. Edelfr Flores Velsquez

cout<<ingrese la nota <<i+1<<: ;


cin>>notas[i];
}
//procesamiento
for (i=0; i<2; i++) {
suma+=notas[i];
}
promedio=(float)suma/2;
//escritura de datos
cout<<\n==========================<<endl;
for (i=0; i<2; i++) {
cout<<Nombre <<i+1<<: <<nombre[i];
cout<< nota <<i+1<<: <<notas[i]<<endl;
}
cout<<endl<<El promedio es: <<promedio<<endl;
system(PAUSE);
return EXIT_SUCCESS;
}

IV. Resuelva los siguientes ejercicios


1) Se desea realizar un programa para el clculo de operaciones con nmeros racionales. El
programa deber presentar un men con las siguientes operaciones:
MENU
=============================
A. Sumar 2 Fracciones.
B. Restar 2 Fracciones.
C. Multiplicar 2 Fracciones.
D. Dividir 2 Fracciones.
E. Simplificar 1 Fraccin.
X. Salir del Programa
Descripcin de Opciones:
A. Sumar 2 Fracciones. Se solicita al usuario que introduzca el numerador y el denominador de
cada
fraccin y se muestra por pantalla el resultado simplificado.
Ejemplo:
Fraccin 1
Numerador: 1
Denominador: 3
Fraccin 2
Numerador: 1
Denominador: 2

Fundamentos de Programacin

Ing. M.Sc. Edelfr Flores Velsquez

(2/3) + (1/2) = (7/6)


Presione una tecla para continuar . . .
B. Restar 2 Fracciones. Se solicita al usuario que introduzca el numerador y el denominador de
cada
fraccin y se muestra por pantalla el resultado simplificado.
Ejemplo:
Fraccin 1
Numerador: 1
Denominador: 3
Fraccin 2
Numerador: 1
Denominador: 2
(2/3) - (1/2) = (1/6)
Presione una tecla para continuar . . .
C. Multiplicar 2 Fracciones. Se solicita al usuario que introduzca el numerador y el denominador
de cada fraccin y se muestra por pantalla el resultado simplificado.
Ejemplo:
Fraccin 1
Numerador: 1
Denominador: 3
Fraccin 2
Numerador: 1
Denominador: 2
(2/3) * (1/2) = (1/3)

2) Disear un algoritmo que dado una matriz de enteros de 3 x 4


a. Calcule el elemento mximo y mnimo de la matriz, informando de la
b. posicin (fila, columna) en la que se encuentra.
c. Calcule la media aritmtica de todos los elementos pares.
d. Calcule el mximo elemento de cada fila y el mnimo de cada columna.

Utilice funciones para resolver el problema


3) Escribir una funcin a la que se le pase una cantidad N de nmeros a leer y devuelva
cuntos son positivos, y cuntos son negativos?
4) Para cada uno de los puntos siguientes escribir un funcin a la que se le pasen los
parmetros necesarios y devuelva el rea y el permetro de la figura indicada:
a. Un cuadrado
b. Un rectngulo
c. Un crculo