5/17/2018 Ejercicios de La ACM (3) 1 - slidepdf.com
http://slidepdf.com/reader/full/ejercicios-de-la-acm-3-1 1/4
Ejercicios de la ACM
Linares Cervantes; Luis MiguelCiencias de la Computacion
Universidad Catolica San Pablo
April 24, 2012
1 Quicksum
Lo que se ve en este probleman es multiplicar la posicion de una letra en el alfabeto con un contador queva incrementando (el espacio vale 0), y sumar las multiplicaciones.
• Se usa una cadena de char en el que se guarda cada frase ingresada, tiene un limite de 255 caracteres(todos mayusculas).
• En el primer while se hace el procedimiento para ingresar todas las cadenas deseadas hasta que secumpla la condicion que es cuando termina el while ingresando ’#’.
• En el segundo while se realiza la operaci’on que conciste en una sumatoria total de la multiplicandode la posicion en el alfabeto de una letra con un contador que va incrementando y obteniendo eltotal de una suma de todas estas, este while finaliza en fin de cadena.
1.1 Codigo
1 # i n c l u d e < c s t d io >
2 # i n c l u d e < s t r i ng >
3
4 u s in g n a me s pa c e s t d ;
5
6 v o i d q u i c k S u m ( ) {
7 c h a r t e m p [ 2 5 5 ];
8 w h il e ( t e mp [ 0 ] ! = ’ # ’ ){
9 g e t s ( t e m p ) ;
10 i nt c on t = 0 ;
11 int sum = 0;
12 w h il e ( t em p [ c on t ] ! = ’ \ 0 ’) {
13 i f ( t e m p [ c o nt ] = = 3 2 ) { c o n t + + ; }14 else{
15 s um = s um + ( ( co nt + 1) * ( t em p[ c on t] - 6 4) ) ;
16 cont++;
17 }
18 }
19 i f ( te m p [ 0] ! = ’ # ’ ) p r in t f ( " %d \ n " , su m ) ;
20 }
21 }
22
23 i nt m a in ( ) {
24 q u i c k S u m ( ) ;
25 }
1
5/17/2018 Ejercicios de La ACM (3) 1 - slidepdf.com
http://slidepdf.com/reader/full/ejercicios-de-la-acm-3-1 2/4
2 Vowels Frequencies
En este problema se trata de buscar cuantas veces se repite las vocales en una frase, se muestra una listade las vocales y su cantidad de repeticiones, de forma ordenada de mayor a menor.
• En el primer bucle ’for’ se hace el procedimiento para ingresar todas las cadenas deseadas hasta
que se cumpla la condicion que es cuando termina el while ingresando ’#’.
• Se crea un vector de 5 posiciones donde contendra los contadores de cada vocal, la posici on en elvector depende a la posicion de la letra, ”0 = a ... 4 = u”, e incrementando en 1 cada posiciondependiendo de la letra para tener el total.
• En el siguiente bucle de ’fors’ es donde se realiza la operaci on de ordenamiento, donde se crea unvector de chars con las letras y se ordena el vector de los contadores de letras (de mayor a menor) junto con el vector de las letras para espcificar a quien pertenece cada contador.
• En el ultimo bucle se imprime los resultados.
2.1 Codigo
1 # i n c l u d e < i o s t re a m >
2 # i n c l u d e < c s t d io >
3
4 u s in g n a me s pa c e s t d ;
5
6 v o i d v o w e l s ( ) {
7 c h a r f r a s e [ 2 5 5 ];
8
9 f o r ( ; ; ) {
10 g e t s ( f r a s e ) ;
11 i n t i = 0 ;
12
13 i f ( f ra s e [ 0] = = ’ # ’ ) b r ea k ;14 i nt v oc al 1 [ 5] = { 0 ,0 , 0 ,0 , 0} ;
15 i nt v oc al 2 [ 5] ;
16
17 w h il e ( f r as e [ i ] ! = ’ \ 0 ’) {
18 s w i t ch ( f r a s e [ i ] ) {
19 c a se ’ a ’ : v o ca l 1 [ 0 ]+ + ; b r ea k ;
20 c a se ’ e ’ : v o ca l 1 [ 1 ]+ + ; b r ea k ;
21 c a se ’ i ’ : v o ca l 1 [ 2 ]+ + ; b r ea k ;
22 c a se ’ o ’ : v o ca l 1 [ 3 ]+ + ; b r ea k ;
23 c a se ’ u ’ : v o ca l 1 [ 4 ]+ + ; b r ea k ;
24 }
25 i++;
26 }
27
28 c h ar v o c1 [ 5 ] = { ’ a ’ , ’e ’ , ’ i ’, ’ o ’ ,’ u ’ };
29 c h a r v o c 2 [ 5 ] ;
30 for ( int i = 0; i < 5; i ++) {
31 i n t t = i ;
32 for ( int j = 0; j < 5; j ++) {
33 i f( v oc al 1 [ j] > v oc al 2 [ i] ) t = j ;
34 }
35 v o ca l 2 [ i ] = v o ca l 1 [ t ];
36 v oc al 1 [ t] = 0 ;
37 voc 2[ i] = v oc1 [t ];
38 }
39
40 for ( int k = 0; k < 4; k ++) {41 c o ut < < v o c 2 [ k ] < < " : " < < v o c al 2 [ k ] < < " " ;
42 } c o u t < < v o c 2 [ 4 ] < < " : " < < v o c a l 2 [ 4 ] < < " . \ n " ;
2
5/17/2018 Ejercicios de La ACM (3) 1 - slidepdf.com
http://slidepdf.com/reader/full/ejercicios-de-la-acm-3-1 3/4
43 }
44
45 }
46
47 i nt m a in ( )
48 {
49
v o w e l s ( ) ;50 r e tu r n 0 ;
51 }
3 House Numbering
En este problema se trata de transformar el numero de una casa a binario y cada binario obtenido tratarde sacar la suma total de este determinado por el costo de 1 y 0.
• En el primer bucle solo se realiza el ingreso de todos los datos en una lista, esta ya esta predefinidapor la STL, siendo una lista de string.
• En el segundo bucle se realiza la operacion, siendo las condicones ”COST” que son los que contieneel costo de los binarios ’1’ y ’0’ y el fin de la lista que es el signo’#’, los valores de la lista sontransformados a enteros para utilizarlos.
• Al tomar los datos se hace la respectiva operacion, que es la suma de las multiplicaciones de acuerdoal costo de los binarios ’1’ y ’0’, y asi se obtiene el resultado, (linea 43 y 44).
3.1 Codigo
1 # i n c l u d e < i o s t re a m >
2 # i n c l u d e < s t r i ng >
3 # i n c lu d e < l is t >
4 # i n c l u d e < i t e r at o r >5 # i n c l u d e < c s t dl i b >
6
7 u s in g n a me s pa c e s t d ;
8
9 v o id c o st ( ) {
10 l i st < s t ri n g > l i s ta ;
11
12 f o r ( ; ; ) {
13 s t r i ng d a t o ;
14 c i n > > d a t o ;
15 l i s t a . p u s h _ b a c k ( d a t o ) ;
16 i f ( da t o = = " # " ) b r e a k ;
17
}18
19 l i st < s t ri n g > : : i t e r a to r i t e = l i s ta . b e g i n ( ) ;
20
21 s t r i ng t e m p ;
22 int set = 1;
23
24 f o r ( ; ; ) {
25 t em p = ( * it e );
26 i f ( te m p = = " # " ) b r e a k ;
27 i n t a , b , t ;
28 i f ( te m p = = " C O ST " ) {
29 ite++;
30 a = a t oi ( ( * i te ) . c _ st r ( ) ) ;
31 ite++;32 b = a t oi ( ( * i te ) . c _ st r ( ) ) ;
33 ite++;
3
5/17/2018 Ejercicios de La ACM (3) 1 - slidepdf.com
http://slidepdf.com/reader/full/ejercicios-de-la-acm-3-1 4/4
34 t em p = ( * it e );
35 }
36 c ou t < < " S e t " < < s et < < e n d l ;
37 f o r ( ; ; ) {
38 i nt s um = 0;
39 i f ( te m p = = " C O ST " ) b r ea k ;
40
if (temp == " #" ) break ;41 t = a t oi ( ( t e mp . c _ s tr ( ) ) ) ;
42 w hi le ( t > 0 ){
43 if (( t % 2) == 0) sum = sum + a ;
44 if (( t % 2) == 1) sum = sum + b ;
45 t = t / 2 ;
46 }
47 c o u t < < s u m < < e n d l ;
48 ite++;
49 t em p = ( * it e );
50 }
51 set++;
52 }
53
54 }55
56 i nt m a in ( )
57 {
58 c o s t ( ) ;
59 r e tu r n 0 ;
60 }
4
Top Related