Está en la página 1de 4

PRACTICA # 1

(SIS 2210 B)
NOMBRE: Univ. Coro Gómez Oswaldo Valentín
FECHA: 22 DE SEPTIEMBRE DE 2017

1.-IMPLEMENTAR EN C/C++ LOS SIGUIENTES PROBLEMAS UTILIZANDO


FUNCIONES:
a) Escribir una función que reciba un vector V de N elementos y que cuente cuantos números
dentro del vector son números primos.

#include <iostream>
using namespace std;
void llenarVector(int vc[100], int dm){
for(int i=1;i<=dm;i++){
cin>>vc[i]; }
}
void mostrarVector(int vc[100], int dm){
for(int i=1;i<=dm;i++){
cout<<vc[i]<<" "; }
}
int primosVector(int vc[100],int dm){
int cant=0;
for(int i=1;i<=dm;i++){
int c=0;
for(int j=1;j<=vc[i];j++){
if(vc[i]%j==0)
c++; }
if(c==2)
cant++; }
return cant;
}
int main(){
int v[100], d;
cout<<"introduce la dimension del vector: "; cin>>d;
llenarVector(v,d);
cout<<"mostrar vector"<<endl;
mostrarVector(v,d);
cout<<endl;
cout<<primosVector(v,d);
}
b) Escriba una función que dados 4 números A, B, C y D muestre cuente cuantas veces se ha
utilizado cada digito.
#include<iostream>
using namespace std;
void contDigRep(int n, int v[]){
while(n>0){
int r=n%10;
v[r]=v[r]+1;
n=n/10; }
}
int main(){
int a,b,c,d,v[10];
for(int i=0;i<=9;i++){
v[i]=0; }
cin>>a>>b>>c>>d;
contDigRep(a,v);
contDigRep(b,v);
contDigRep(c,v);
contDigRep(d,v);
for(int i=0;i<=9;i++){
cout<<v[i]<<" "; }
cout<<endl;
return 0;
}
c) Los números capicúas son aquellos que pueden leerse igual de derecha a izquierda que de
izquierda a derecha.
Escribir una función que dados 5 números A, B, C, D y E cuente cuántos de ellos son
capicúas y cuantos no.
#include <iostream>
using namespace std;
void llenarVector(int vc[100], int dm){
for(int i=1;i<=dm;i++){
cin>>vc[i]; }
}
int capicuasVector(int vc[100],int dm){
int cantcap=0,cantnocap=0;
for(int i=1;i<=dm;i++){
int a,b,c;
for(int j=1;j<=vc[i];j++){
a=vc[i]; c=0; b=0;
while(a!=0){
b=a%10;
a=a/10;
c=c*10+b;}
}
if(c==vc[i]){
cantcap++;
}else{cantnocap++;}
}
cout<<"\nNUMEROS CAPICUAS: "<<cantcap;
cout<<"\nNUMEROS NO CAPICUAS: "<<cantnocap;
}
int main(){
int v[100],d;
cout<<"Cuantos Numeros: "; cin>>d;
llenarVector(v,d);
cout<<endl;
capicuasVector(v,d);
return 0;
}
d) Dados dos números A y B, crear una función que intercambie dichos valores.
#include<iostream>
using namespace std;
void intercambio(int c,int d){
int aux=0;
aux=c;
c=d;
d=aux;
cout<<c<<" - "<<d;
}
int main(){
int a,b;
cin>>a>>b;
cout<<a<<" - "<<b<<endl;
intercambio(a,b);
return 0;
}
e) Dados 3 números A, B y C que se encuentran en binario, mostrar la suma de
A+B+C en binario.
#include <iostream>
#include <cmath>
using namespace std;
int binDecim(int n){
int e=0,dec=0;
while(n>0){
dec=dec+(n%10)*pow(2,e);
e++;
n=n/10; }
return dec;
}
int decBin(int n){
int v[10],c=0,res=0;
while(n>0){
v[c]=n%2;
n=n/2;
c++; }
for(int i=c-1;i>=0;i--){
res=res*10+v[i]; }
return res;
}
int suma(int f,int g,int h){
int suma;
suma=binDecim(f)+binDecim(g)+binDecim(h);
return suma;
}
int main(){
int a,b,c;
cin>>a>>b>>c;
cout<<endl;
cout<<decBin(suma(a,b,c))<<endl;
return 0;
}
2.-IMPLEMENTAR EN C/C++ LOS SIGUIENTES PROBLEMAS UTILIZANDO
FUNCIONES RECURSIVAS:
a) Escribir una función recursiva que calcule la suma de los N primeros números pares.
#include <iostream>
using namespace std;
int sumaRecur(int n){
if(n==0) return 0;
else return n+sumaRecur(n-2);
}
int main(){
int num;
cin>>num;
cout<<"\nLa suma es "<<sumaRecur(num*2);
return 0;
}
b) Escribir una función recursiva para calcular la raíz digital de N. La Raíz Digital de un número N
se calcula como la suma de todos los dígitos de N, si la suma obtenida es mayor a 9 el proceso se
repite hasta que quede un número de un solo digito.
#include <iostream>
using namespace std;
int raizDigital(int m){
if(m<=9) return m;
else return raizDigital((m%10)+raizDigital(m/10));
}
int main(){
int n;
cin>>n;
cout<<raizDigital(n);
return 0;
}
c) Escriba una función recursiva para calcular el valor de A^B
#include <iostream>
using namespace std;
int potencia(int a,int b){
if(b==0) return 1;
else if(b==1) return a;
else return a*potencia(a,b-1);
}
int main(){
int n,m;
cin>>n>>m;
cout<<potencia(n,m);
return 0;
}
3.-REESTRUCTURAR LOS SIGUIENTES CODIGOS UTILIZANDO FUNCIONES, DE
MODO QUE LOS MISMOS SEAN MAS ENTENDIBLES, ORDENADOS Y NO EXISTA
CODIGO REPETIDO.
a) Se dice que un elemento en una matriz M de n filas y m columnas es un punto silla si el elemento
es el menor valor de su fila y a la vez el mayor de su columna. El programa recibe una matriz y
verifica cuantos puntos silla existen en la misma.

b) Se dice que los dígitos de la suerte son 4 y 7 y que aquellos números que solo están
conformados por dígitos de la suerte son números de la suerte. Dados 3 números A, B y C,
determinar cuántos de ellos son números de la suerte.