Sunteți pe pagina 1din 42

Ejerciciosdesobre

vectores,hilerasymatrices!
Prof.EnriqueVlchezQuesada

Ejercicio#1
Dadounvector,implementeun
mtodoqueinserteunelementoen
unaposicindadadelvector.Nota:
insertarunelementoenelvector
desplazaunaposicinhaciala
derechaaloselementosdelvector
quehandequedardetrsdel
elementoinsertado.Adems,la
insercinocasionaladesaparicin
delltimoelementodelvector

Solucin
float[]InsertarElem(floatv[],intnintm)
{floatelement
floatve[n]
inti,j=0
print(Digiteelelementoainsertarenelvector)
read(element)
if(m<=n)
{for(i=0i<ni++)
{if(i==m)
ve[i]=element
else
{ve[i]=v[j]
j++}
return(ve)}
else
return(v)}

Ejercicio#2
UnacadenadeADNserepresenta
comounasecuenciacircularde
bases(adenina,timina,citosinay
guanina)queesnicaparacadaser
vivo,porejemplo:

Ejercicio#2
Dichacadenasepuederepresentarcomo
unvectordecaracteresrecorrindolaen
sentidohorariodesdelapartesuperior
izquierda:
Sepidedisearunmtodoquerepresente
unasecuenciadeADNeincluyaun
mtodobooleanoquenosdevuelvatruesi
lasdoscadenasdeADNcoinciden

Solucin
char[]ADN(charA[],intn)
{charVADN[8]
inti,j,h=0
for(i=0i<ni++)
Recibelacadena
for(j=0j<nj++)
ylaconvier tea
{if(i==0)
vector,seasume
{VADN[h]=A[i,j]
quen=3!
quen=3!
h++}
if(i==1)
if(A[i,j]!=)
{VADN[h+5]=A[i,j]
h=h4}
if(i==2)
{VADN[h+12]=A[i,j]
h}}
return(VADN)}

Solucin
int[]Cuenta(charv[],intn)
{inti,ctA=0,ctT=0,ctG=0,ctC=0
intvc[4]
for(i=0i<ni++)
if(v[i]==A)
ctA=ctA+1
if(v[i]==T)
ctT=ctT+1
vc[0]=ctA
vc[1]=ctT
Seasumequen=8!
Seasumequen=8!
vc[2]=ctG
vc[3]=ctC
return(vc)}

Solucin
boolComparaADN(charA[],B[],intn)
{charvA[8],vB[8]
n=3
intvcA[4],vcB[4]
n=3
Seinvocaal
mtodobooleano
vA=ADN(A,n)
SonIguales quese
SonIguales
vB=ADN(B,n)
encuentr aenla
diapositiva32!
vcA=Cuenta(vA,8)
vcB=Cuenta(vB,8)
return(SonIguales(VcA,VcB,4,4))}

Ejercicio#3
Dadounvectordenmerosreales,
escribaunmtodoqueordenelos
elementosdelvectordetalformaquelos
nmerosparesaparezcanantesquelos
nmerosimpares.Adems,losnmeros
paresdebernestarordenadosdeforma
ascendente,mientrasquelosnmeros
imparesdebernestarordenadosde
formadescendente.Estoes,elvector
{1,2,3,4,5,6}quedarcomo{2,4,6,5,3,1}

Solucin
float[]OrdeneVectorPI(floatv[],intn)
{inti,np=0,nimp=0,m=0,h=0
for(i=0i<ni++)
if(v[i]%2==0)
np++
else
nimp++
floatvp[np],vimp[nimp]
for(i=0i<ni++)
if(v[i]%2==0)
{vp[m]=v[i]
m++}
else
{vimp[h]=v[i]
h++}
vp=OrdeneVectorA(vp,np)
vimp=OrdeneVectorD(vimp,nimp)
return(ConcatenacionV(vp,np,vimp,nimp))}

Solucin
Float[]OrdeneVectorA(floatv[],intTam)
{inti,j
Estemtodose
floataux
puedemodificar
for(i=Tam1i>0i)
par agener ar
unor denamiento
for(j=0j<ij++)
descendente.
if(v[j]>v[j+1])
Simplemente
{aux=v[j]
cambie>por<,
v[j]=v[j+1]
llamamosaeste
v[j+1]=aux}
nuevomtodo
Or deneVector D!
D!
return(v)}

Solucin
float[]ConcatenacionV(floatv[],intnfloat
w[],intm)
{floatvw[n+m]
inti,j=0
for(i=0i<n+mi++)
if(i<n)
vw[i]=v[i]
else
{vw[i]=w[j]
j++}
return(vw)}

Ejercicio#4
http://www.consultacartas.com/baraja_espanola.html!
http://www.consultacartas.com/baraja_espanola.html!

Crearunprogramaparajugaralas7y
media.Setratadeunjuegodecartas
(conbarajaespaola)enelqueel
objetivoesalcanzarunapuntuacinde
7.5.Cadacartadel1al7tienesuvalor
nominalycadafigura(sota,caballoyrey)
vale0.5puntos.Nota:parabarajar,
mezcleloselementosdeunvectorde
cartasintercambiandoenrepetidas
ocasionescartaselegidasalazarconla
ayudadelafuncinrandom()

Solucin
LosNaipesdelaBarajaespaola
proporcionanunmtododeadivinacin
delfuturo

Estnformadasporbastos(1),copas
(2),espadas(3)yoros(4),condoce
cartasporpalo

Solucin
voidSieteyMedia()
{intjugada[2]
floatpuntaje=0,
intp=1
while(p!=0)
{print(Deseaunacarta:1(Si),0(No))
read(p)
if(p!=0)
jugada[0]=random(1,4)
jugada[1]=random(1,12)
if(jugada[1]>=10)
puntaje=puntaje+0,5
else
puntaje=puntaje+jugada[1]
if(puntaje>7,5)
{print(Perdi)
p=0}
else
print(Supuntajeesde:,puntaje)}}

Ejercicio#5
Escribirunmtodoquelea
unamatrizdeenterosde4
filasy4columnasya
continuacinintercambiela
filaiconlafilaj,siendoiyj
dosvaloresintroducidospor
teclado

Solucin
float[,]Intercambiar()
{inti,j,h,w
floatA[4,4],B[4,4]
for(h=0h<4h++)
for(w=0w<4w++)
read(A[h,w])
print(Digitelasfilasquedeseaintercambiar)
read(i,j)
for(h=0h<4h++)
for(w=0w<4w++)
if(h==i)
B[h,w]=A[j,w]
if(h==j)
B[h,w]=A[i,w]
if((h!=i)and(h!=j))
B[h.w]=A[h,w]
return(B)}

Ejercicio#6

Escribirunmtodo
quecalculeel
productoescalarde
dosvectores

Solucin
floatProdEscalar(floatv[],w[],int
n)
{inti
floatpesvw=0
for(i=0i<ni++)
pesvw=pesvw+v[i]*w[i]
return(pesvw)}

Ejercicio#7
Escribirunmtodoparaleer
dosnmerosXyKyun
vectorAdedimensinn.
Ordenarelvectoreinsertar
elnmeroXenlaposicinK
demaneraquesiempre
quedeordenado

Solucin
float[]OrdenInsert()
{inti,K
floatA[n],C[n],B[n+1]
print(Digitelaposicin)
read(K)
for(i=0i<ni++)
read(A[i])
C=InsertarElem[A,n,K]
for(i=0i<n+1i++)
if(i==n)
B[i]=A[i]
else
B[i]=C[i]
B=OrdeneVectorA(B,n+1)
return(B)}

Ejercicio#8
LeerunamatrizA
cuadradadetamaon.
Escribirloselementosde
ladiagonalprincipal,
secundaria,delamatriz
triangularsuperiorydela
matriztriangularinferior

Solucin
float[,]Leer()
{inti,j
floatA[n,n]
for(i=0i<ni++)
read(A[i,i])
for(i=0i<ni++)
if(i!=n1i)
read(A[i,n1i])
for(i=0i<ni++)
for(j=0j<nj++)
if((i<j)&&(j=!n1i))
read(A[i,j])
for(i=0i<ni++)
for(j=0j<nj++)
if((i>j)&&(j=!n1i))
read(A[i,j])
return(A)}

Ejercicio#9

Escribirunmtodoque
leadeltecladouna
cadenaymuestreenla
pantallalacantidadde
consonantesyde
vocalesquecontiene

Solucin
Seasumequela
cadenanotiene
car acteres
alfanumr icos,en
casocontr ar iose
debeaadirun if
debeaadirun
contodaslas
consonantesy
contar !!

intnConVoc()
{stringn
inti,cont=0
print(Digitelacadena)
read(n)
for(i=0i<length(n)i++)
if((n[i]==a)or(n[i]==e)or)
cont++
return(cont,length(n)cont)}

Ejercicio#10
Elsistemasiguienteseusaparacifrarydescifrar
mensajes.Cadaletradelalfabetosesustituye
porlaqueesttresposicionesadelante.As,Ase
reemplazaporD,BporE,yassucesivamente,
siendoXsustituidaporA,YporByZporC.
Escribaunprogramaparacodificarunmensaje
detipostring.Sugerencia:construyaunacadena
quecontengaelalfabeto.Paracadaletradel
mensajeoriginal,encuentresuposicinenel
alfabetoysmele3sielresultadoesmayorque
26,sedebevolveraempezarconeliniciodel
alfabeto

Solucin
stringCodificacion1(strings)
{inti,j
stringalfabeto,codigo=
alfabeto=abcdefghi
for(i=0i<length(s)i++)
for(j=0j<26j++)
if(s[i]==alfabeto[j])
if(j+3<26)
codigo=codigo+alfabeto[j+3]
else
codigo=codigo+alfabeto[j+326]
return(codigo)}

Ejercicio#11

Escribaunalgoritmo
queinsertelos
caracteres******
exactamenteenla
mitaddeunstring

Solucin
stringInsertaAster(strings)
{stringaster=******
intn
if(length(s)%2==0)
insert(aster,s,length(s)/2)
else
insert(aster,s,(length(s)1)/2)
return(s)}

Ejercicio#12
Escribaunprogramaque
recibacomoentradauna
lneadetexto,quesustituya
todoslossignosde
puntuacinconespaciosy
segmenteelstringen
palabrasindividuales

Solucin
voidSegmentacion(strings)
{inti
string
Recuer deel
queelmtodoER
s=ER(.,,s)
deladiapositiva
s=ER(,),,s)
75,sustituyeun
s=ER(),,s)
car cterporotro
s=ER(,,s)
enunahiler a!
a!
for(i=0i<length(s)i++)
if(i<n1)
if((s[i]==)&&(s[i+1]==))
delete(s,i+1,1)
return(s)}

Ejercicio#13
Escribaunmtodoparaimplementarel
siguienteesquemadecodificacin:la
primeraletradelmensajesesustituyepor
elresultadodeldesplazamientoenuna
posicin,lasegundaletradelmensajese
desplazadosposiciones,laterceraletrase
desplaza3posiciones,etc.Loscaracteres
quenosonletrassereproducensin
modificacin.As,ENELCIRCOse
transformaraenFPHPHOYKX

Solucin
stringCodificacion2(strings)
{inti,j,t=1
stringalfabeto,codigo=
alfabeto=abcdefghi
for(i=0i<length(s)i++)
for(j=0j<26j++)
{if(s[i]==alfabeto[j])
if(j+t<26)
{codigo=codigo+alfabeto[j+t]
t++}
else
{codigo=codigo+alfabeto[j+t26]
t++}
else
codigo=codigo+s[i]}
return(codigo)}

Ejercicio#14
Enciertoteclado,latecladela
letrattienelatendenciaa
pegarse.Escribaunmtodoque
recibaunmensajedecadenay
reimprimaelmensajedemanera
quelaletratnuncaocurrams
dedosvecesconsecutivasenel
mensaje

Solucin
voidLetrat(strings)
{inti
for(i=0i<length(s)i++)
if(i<length(s)2)
if((s[i]==t)&&(s[i+1]==t)&&(s[i+2]==t))
{delete(s,i,1)
i=0}
for(i=0i<length(s)i++)
print(s[i])}

Ejercicio#15
Escribaunprogramaque
conviertanmerosromanos
ensusequivalentes
decimales.Supongaun
mximodediezdgitos
romanosescogidosdela
lista:M1000,D500,C100,
L50,X10,V5,I1

Reglas
l Sialaderechadeunacifraromana

deescribeotraigualomenor,el
valordestasesumaalaanterior
l Lacifra"I"colocadadelantedela
"V"ola"X",lesrestaunaunidadla
"X",precediendoala"L"oala"C",
lesrestadiezunidadesyla"C",
delantedela"D"ola"M",lesresta
cienunidades

Reglas
l Enningnnmerosepuedeponer

unamismaletramsdetresveces
seguidas.Enlaantigedadsevea
vecesla"I"ola"X"hastacuatro
vecesseguidas
l La"V",la"L"yla"D"nopueden
duplicarseporqueotrasletras("X",
"C","M")representansuvalor
duplicado

Reglas
l Sientredoscifrascualesquiera

existeotramenor,starestarsu
valoralasiguiente
l Elvalordelosnmerosromanos
quedamultiplicadopormiltantas
vecescomorayashorizontalesse
coloquenencimadelosmismos,as
condosrayassemultiplicaporun
milln

Solucin

Convertidor!

http://www.vivir.com/vivir/universidad/index.htm?http://www.vivir.com/vivir/universidad/convnumromanos.htm!

intRomanoDecimal(strings)
{inti,p,n=length(s),decimal=0
for(i=0i<length(s)i=i+2)
{n=length(s)i
p=1
if(n>=3)
if((R(s[i])>=R(s[i+1]))&&(R(s[i+2])>=R(s[i+1]))
{decimal=R(s[i+2])R(s[i+1])+R(s[i])
i++
p=0}

Solucin

Porejemplo:
XCLXIIV:155
XCIXXV:114
XCIXXV:114

if(p=1)
if(n>=2)
{swich(R(s[i])){
case1:{if((R(s[i+1])=5)||R(s[i+1])=10))
decimal=R(s[i+1])R(s[i])break
case10:{if((R(s[i+1])=50)||R(s[i+1])=100))
decimal=R(s[i+1])R(s[i])break
case50:{if((R(s[i+1])=500)||R(s[i+1])=1000))
decimal=R(s[i+1])R(s[i])break
default:decimal=R(s[i+1])+R(s[i])break}}
if(i==length(s)1)
{decimal=decimal+R(s[i])
i++}}
return(decimal)}

Solucin
intR(chars)
{intn
if(s==M)
n=1000
if(s==D)
n=500
if(s==C)
n=100
return(n)}