Ayuda para convertir código de lenguaje c a c++
Publicado por Neryza (3 intervenciones) el 06/03/2020 05:55:45
Rock-Paper-Scissors es un juego para dos jugadores, A y B, que cada uno elige,
independientemente del otro, uno de piedra, papel o tijera. Un jugador eligiendo
el papel gana a un jugador que elige roca; un jugador que elige las tijeras gana a un
papel de elección del jugador; un jugador que elige roca gana sobre un jugador que elige
tijeras. Un jugador que elige lo mismo que el otro jugador no gana ni
pierde Se ha organizado un torneo en el que cada uno de los n jugadores juega k
juegos de piedra-tijera-papel con cada uno de los otros jugadores - k * n * (n-1) / 2 juegos
en total. Su trabajo es calcular el promedio de ganancias para cada jugador, definido como
w / (w + l) donde w es la cantidad de juegos ganados y l es la cantidad de juegos
perdido, por el jugador.
Especificación de entrada
La entrada consta de varios casos de prueba. La primera línea de entrada para cada caso.
contiene 1 <= n <= 100 y 1 <= k <= 100 como se definió anteriormente. Para cada juego, un
sigue la línea que contiene p1, m1, p2, m2. 1 <= p1 <= n y 1 <= p2 <= n son
enteros distintos que identifican a dos jugadores; m1 y m2 son sus respectivos movimientos
("piedra", "tijera" o "papel"). Una línea que contiene 0 sigue al último caso de prueba.
Especificación de salida
Juez en línea del Caribe
-1-
Salida de una línea cada uno para el jugador 1, jugador 2, y así sucesivamente, a través del jugador n, dando
El promedio de ganancias del jugador se redondea a tres decimales. Si el promedio de victorias es
indefinido, salida "-". Salida de una línea vacía entre casos.
independientemente del otro, uno de piedra, papel o tijera. Un jugador eligiendo
el papel gana a un jugador que elige roca; un jugador que elige las tijeras gana a un
papel de elección del jugador; un jugador que elige roca gana sobre un jugador que elige
tijeras. Un jugador que elige lo mismo que el otro jugador no gana ni
pierde Se ha organizado un torneo en el que cada uno de los n jugadores juega k
juegos de piedra-tijera-papel con cada uno de los otros jugadores - k * n * (n-1) / 2 juegos
en total. Su trabajo es calcular el promedio de ganancias para cada jugador, definido como
w / (w + l) donde w es la cantidad de juegos ganados y l es la cantidad de juegos
perdido, por el jugador.
Especificación de entrada
La entrada consta de varios casos de prueba. La primera línea de entrada para cada caso.
contiene 1 <= n <= 100 y 1 <= k <= 100 como se definió anteriormente. Para cada juego, un
sigue la línea que contiene p1, m1, p2, m2. 1 <= p1 <= n y 1 <= p2 <= n son
enteros distintos que identifican a dos jugadores; m1 y m2 son sus respectivos movimientos
("piedra", "tijera" o "papel"). Una línea que contiene 0 sigue al último caso de prueba.
Especificación de salida
Juez en línea del Caribe
-1-
Salida de una línea cada uno para el jugador 1, jugador 2, y así sucesivamente, a través del jugador n, dando
El promedio de ganancias del jugador se redondea a tres decimales. Si el promedio de victorias es
indefinido, salida "-". Salida de una línea vacía entre casos.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <stdio.h>
#include <string.h>
int w[200], l[200];
int p1,p2,i,j,k,m,n;
char m1[10], m2[10];
main(){
printf("Rock-Paper-Scissors Tournament");
printf("\n");
for(m=0; 1<=scanf("%d%d",&n,&k)&& n; m++){
if(m){
printf("\n");
memset(w,0,sizeof(w));
memset(l,0,sizeof(l));
}
for(i=0; i<k*n*(n-1)/2;i++){
scanf("%d%s%d%s",&p1,m1,&p2,m2);
if(!strcmp(m1,"rock") && !strcmp(m2,"scissors") || !strcmp(m1,"scissors") && !strcmp(m2,"paper") ||
!strcmp(m1,"paper") && !strcmp(m2,"rock")){
w[p1]++;
l[p2]++;
}
if(!strcmp(m2,"rock") && !strcmp(m1,"scissors") || !strcmp(m2,"scissors") && !strcmp(m1,"paper") ||
!strcmp(m2,"paper") && !strcmp(m1,"rock")){
w[p2]++;
l[p1]++;
}
}
for(i=1;i<=n;i++){
if(w[i]+l[i]) printf("%0.3lf\n",(double)w[i]/(w[i]+l[i]));
else printf("-\n");
}
}
if(n) printf("error! %d\n",n);
}
Valora esta pregunta


0