Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Anónimo
Informática
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
No se pueden usar strings ni arrays. Se valorará la eficiencia de la solución y el uso de las estructuras de control más adecuadas.
PROBLEMA 1: Programa que, partiendo de un número entero positivo, encuentre y muestre en pantalla el menor número que
sea divisible por todos los números del 1 al 10 (es decir, que al ser dividido por todos los números del 1 al 10, en todos los casos
el resto sea 0).
PROBLEMA 2:
a. Defina un subprograma que recibiendo 2 números enteros positivos de 5 cifras, donde el primero se corresponde con
Sólo se considerarán aciertos a aquellas cifras del cupón que coincidan con las que se encuentran en su misma posición
en el número ganador, pero empezando a comparar por las unidades (por la derecha de ambos números) y hasta el
momento del primer fallo.
Por ejemplo, si el número ganador es el “45078” y el número del cupón es el “65178”, se considerarían como
coincidencias sólo las 2 últimas cifras (“78”).
b. Haga otro subprograma para calcular el premio conseguido, dado el nº de aciertos, sabiendo que:
• Si no coindice ninguna cifra (0 aciertos) => 0 euros
• Coincide la última cifra (1 acierto) => 1,5 euros
• Coinciden las 2 últimas cifras (2 aciertos) => 6 euros
• Coinciden las 3 últimas cifras (3 aciertos) => 20 euros
• Coinciden las 4 últimas cifras (4 aciertos) => 200 euros
• Coinciden las 5 cifras (5 aciertos) => 35000 euros
c. Escriba un programa que pida por teclado el número ganador del sorteo de la ONCE. Después deberá entrar en un
proceso repetitivo en el que se pida el número de un cupón, y se calcule y muestre en pantalla la cantidad de aciertos,
y el premio (en euros) que le ha correspondido, repitiendo el proceso siempre que el usuario responda con una ‘S’ o ‘s’
a la pregunta de si desea evaluar otro cupón (otro número). No hace falta que compruebe que los números introducidos
son correctos.
Ejemplo:
Numero ganador? 10345
Cupón? 10054
Coinciden 0, Premio de 0 euros
Evaluar otro cupón (S/s)? s
Cupón? 12005
Coinciden 1, Premio de 1.5 euros
Evaluar otro cupón (S/s)? s
Cupón? 10345
Coinciden 5, Premio de 35000 euros
Evaluar otro cupón (S/s)? s
Cupón? 10045
Coinciden 2, Premio de 6 euros
Evaluar otro cupón (S/s)? s
Cupón? 80345
Coinciden 4, Premio de 200 euros
Evaluar otro cupón (S/s)? n
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-6102708
#include <iostream>
#include <string>
#include <array>
#include <fstream>
using namespace std;
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
i++;
cupon = cupon / 10;
premiado = premiado / 10;
}
return i;
}
int main ()
{
int premiado, cupon, c;
char otro;
cout << "Numero ganador? ";
cin >> premiado;
do{
cout << "Cupón? ";
cin >> cupon;
c = coincidencias(premiado, cupon); // lo calculamos y
guardamos y usamos luego 2 veces
cout << " Coinciden " << c;
cout << ", Premio de " << premio(c) << endl;
cout << " Evaluar otro cupón (S/s)? ";
cin >> otro;
}while (otro=='S' or otro=='s');
return 0;
}
¿No te llega para pagar Wuolah Pro? ¿Un año sin anuncios gratis? ¡Clic aquí!
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-6102708
#include <iostream>
using namespace std;
int main()
{
int num; // para el nº 11, el buscado seria el 2520
cout << "INTRODUCE UN NUMERO ENTERO: ";
cin >> num;
int d = 2;
while( d<=10 )
{
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
if (num % d == 0){
d++;
}else{
// cout << num << " no divisible por el " << d << endl;
d = 2; // comenzamos con el 1º candidato a divisor
num++; // pasamos al siguiente numero
}
}
cout << "EL NUM BUSCADO ES EL: " << num << endl;
return 0;
}
¿No te llega para pagar Wuolah Pro? ¿Un año sin anuncios gratis? ¡Clic aquí!
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-6102708
Informática
GIERM
Recuperación 2º Parcial (22 de junio de 2022)
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
PROBLEMA (6p): Queremos hacer un programa para la gestión y obtención de cierta información relacionada con el proceso de
elección del presidente de una cofradía de Semana Santa, formada por un máximo de 50 cofrades.
Según la normativa de dicha cofradía, sólo podrán y deberán votar los cofrades que se presenten como candidatos a presidente,
dando su voto a un mínimo de 1 y un máximo de otros 5 candidatos.
Se decide disponer de una lista de candidatos, en la que para cada uno se registre su nombre, un número que indique la cantidad
de votos que él ha recibido de los demás candidatos, otro número que indique a cuántos candidatos ha votado él, y una lista
con los nombres de sus votados.
Se pide desarrollar los siguientes subprogramas (además de todos los que considere apropiados), e incluir en la función
main() las instrucciones necesarias para poder probarlos:
1. (3p) Se dispone de un fichero, “votos.txt” (puede descargarlo o copiarlo del campus virtual), en el que cada 2 líneas se
corresponden con un voto: la primera almacenará el nombre del candidato que ha emitido el voto (el votante), y la
siguiente, el nombre de uno de los candidatos a los que ha decidido votar (el votado). Puede suponer que todos los
votos del fichero cumplirán la normativa de la cofradía, sin necesidad de hacer comprobaciones al respecto.
Defina un subprograma (además de todos los que considere adecuados), crear_lista_de_candidatos(), que
a partir de los datos de dicho fichero, se encargue de crear y devolver la lista de candidatos en la que se refleje a qué
compañeros ha votado cada uno (sin calcular aún el número de votos que él ha recibido, que deberá aún estar a cero)
Ejemplo. Para los votos almacenados en el fichero dado, se debería generar la lista de candidatos siguiente:
2. (0.5p) Subprograma, mostrar_candidatos(), que muestre en pantalla la lista completa de candidatos, con un
aspecto similar al mostrado en el ejemplo anterior.
Ejemplo. Para los datos dados, los ganadores serían, con 4 votos cada uno: Pedro y Carlos.
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-6102708
#include <iostream>
#include <string>
#include <array>
#include <fstream>
using namespace std;
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
typedef struct{
string nombre;
int nvotos;
TAvotados votos;
int recibidos;
} TRcandidato;
typedef struct{
int tam;
TAcandidatos datos;
} TRlistaCandidatos;
//------------------------------------
//------------------------------------
//---1) ---------------------------------
typedef struct{
string votante;
string votado;
} TRvoto;
//------------------------------------
¿No te llega para pagar Wuolah Pro? ¿Un año sin anuncios gratis? ¡Clic aquí!
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-6102708
int buscar_votante(const string & buscado, const TRlistaCandidatos &
l)
{
int pos=-1, i = 0;
while (i < l.tam && l.datos[i].nombre != buscado){
i++;
}
if (i < l.tam){
pos = i;
}
return pos;
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
}
//------------------------------------
bool registrar_voto(TRlistaCandidatos & l, const TRvoto & voto)
{
bool insertado = false;
int pvotante = buscar_votante(voto.votante, l);
if (pvotante == -1 and l.tam < MAX_CANDIDATOS)
{
l.datos[l.tam].nombre = voto.votante;
l.datos[l.tam].nvotos = 1;
l.datos[l.tam].votos[0] = voto.votado;
l.datos[l.tam].recibidos = 0;
l.tam++;
insertado = true;
}
//------------------------------------
bool crear_lista_de_candidatos(TRlistaCandidatos & l)
{
bool abierto = false;
l.tam = 0;
ifstream f;
TRvoto voto;
f.open("/Users/alcl/Library/CloudStorage/OneDrive-
UniversidaddeMálaga/Curso2021-22/GIERM/examenes/jun GIERM/recup
parcial 2 (Cofradia)/votos.txt");
if ( f.is_open() )
{
abierto = true;
f >> voto.votante; // INTENTAR LEER 1º DATO 1º REGISTRO/VOTO
while ( !f.eof() )
{
// LEER RESTO DE DATOS DEL VOTO
f >> voto.votado;
¿No te llega para pagar Wuolah Pro? ¿Un año sin anuncios gratis? ¡Clic aquí!
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-6102708
f >> voto.votante;
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
}
f.close(); // SE CIERRA SOLO SI SE PUDO ABRIR
}
return abierto;
}
//---3) ---------------------------------
//------------------------------------
//------------------------------------
void calcular_votos_recibidos(TRlistaCandidatos & l)
{
// SE SUPONE QUE YA ESTÁ INICIALIZADO A CERO EL CAMPO recibidos DE
CADA CANDIDATO
for(int i = 0; i < l.tam; i++){
for(int j=0; j<l.datos[i].nvotos; j++){
int p = buscar_votante(l.datos[i].votos[j], l);
if ( p != -1 ){ // NO NECESARIO SEGÚN ENUNUCIADO
//---4) ---------------------------------
//------------------------------------
//------------------------------------
int maxima_puntuacion(const TRlistaCandidatos & l)
{
int mayor = l.datos[0].recibidos;
for(int i = 0; i < l.tam; i++){
if ( l.datos[i].recibidos > mayor ){
mayor = l.datos[i].recibidos;
}
}
return mayor;
}
//------------------------------------
void calcular_ganadores(const TRlistaCandidatos & l, TRlistaGanadores
& g)
{
int mayor = maxima_puntuacion(l);
g.tam = 0;
for(int i = 0; i < l.tam; i++){
if ( l.datos[i].recibidos == mayor ){
g.datos[g.tam] = l.datos[i].nombre;
g.tam++;
}
}
}
//------------------------------------
void mostrar_ganadores(const TRlistaGanadores & g)
{
for(int i = 0; i < g.tam; i++){
cout << g.datos[i] << " ";
}
}
//------------------------------------
//------------------------------------
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-6102708
//------------------------------------
int main ()
{
TRlistaCandidatos l;
l.tam = 0;
TRlistaGanadores g;
g.tam = 0;
bool ok = crear_lista_de_candidatos(l);
if (ok){
calcular_votos_recibidos(l);
No se permite la explotación económica ni la transformación de esta obra. Queda permitida la impresión en su totalidad.
cout << "GANADORES: ";
calcular_ganadores(l,g);
mostrar_ganadores(g);
}else{
cout << "FICH NO ABIERTO" << endl;;
}
return 0;
}
¿No te llega para pagar Wuolah Pro? ¿Un año sin anuncios gratis? ¡Clic aquí!
a64b0469ff35958ef4ab887a898bd50bdfbbe91a-6102708