Te pongo un ejemplo:
int main() {
char apuestas [15], resultados [15];
int i;
for (i=0; i < 15; i++){
cout << "\n Introduce 1 X 2 según la apuesta, "<< i+1 <<": ";
cin >> apuestas[i] ;
}
for (i = 0; i<15; i++){
cout << "\n Introduce ahora los resultados de la semana, partido " << i+1 << ": ";
cin >> resultados [i];
}
bool acierto=true;
bool complementario=true;
for (i=0; i<14; i++){
if (apuestas[i] != resultados[i]) acierto = false;
}
if (apuestas[14] != resultados[14]) complementario = false;
cout << acierto << ' ' << complementario;
}
Está incompleto al final, pero seguro que te las apañas.
Unas cosillas. Usar un "define" en la cabecera es matar moscas a cañonazos. Podemos hacerlo claro, pero es un poco... exagerado, aunque supongo que eso va por gustos.
Recuerda que ambos arreglos (o arrays, o como quieras llamarlos) deben de tener el mismo número de elementos. No tiene sentido que "apuestas" tenga 15 casillas, y resultados 16.
No necesitas diferentes variables para bucles, a menos que estén anidados. Puedes usar la misma variable de tipo entero "i" para todos, e incluso declararla en el mismo bucle
En plan:
Recuerda que las tablas empiezan en el 0, no en el 1. El ejemplo anterior te haría un bucle entre la casilla 0 y la 14, lo que nos da un total de 15 casillas, de las cuales las primeras 14 son para los resultados normales, y la 15 (que ojo, es la casilla 14) sería para el pleno al 15.
Esto al principio suele liar, es solo cuestión de acostumbrarse. Acuerdate
siempre de que todos los contenedores, ya sean arrays de enteros, caracteres o cualquier otra cosa (incluso strings, vectores, etc...) empiezan siempre en el '0'.
Es decir: (insisto), que un array "apuestas[15]" empieza en el 0 y llega al 14. Si intentas leer o escribir fuera de esos límites de arriesgas como poco a resultados imprevistos, o a que el programa explote.
Luego, la comparación la has hecho entre dos "indices", no entre los valores que contienen los arrays. Para eso verás que he definido dos variables de tipo bool, y hago un bucle de 0 a 13 (0<14) para comprobar cada uno, y si alguno es diferente cambio la condición a falso.
Y lo mismo hago, pero sin bucle con la última casilla de los dos arreglos, comparando así la casilla del "pleno al 15"
Esto:
Literalmente está comparando dos variables de tipo entero, que son las que has usado para los dos bucles, pero no el contenido de los arrays.
El resultado son dos "1", pero si la condición de cualquiera de los dos no se cumple, te saldría un "0"
Claro, hay otras maneras, pero esta es una sencilla, a partir de ahí puedes montar un "if" que saque un resultado u otro dependiendo de esta variable.
Mas refinamientos sería poner (por ejemplo) un contador de aciertos, o sacar por pantalla por un lado la apuesta y al lado el resultado y cosas así, pero eso ya te lo dejo para que practiques.
Esto debería de funcionarte, a menos que haya metido gloriosamente la pata de forma inadvertida por algún lado.
Muchas gracias Orubatosu, creo que he podido solucionar las coas y ya tengo algo mucho mejor que con lo que empecé esta mañana. En el siguiente post pongo lo que tengo así no resulta muy tedioso.
#include <iostream>
using namespace std;
int main() {
char apuestas [15], resultados [15];
int i;
for (i=0; i < 15; i++){
cout << "\n Introduce 1 X 2 según la apuesta, partido "<< i+1 <<": ";
cin >> apuestas[i] ;
}
for (i = 0; i<15; i++){
cout << "\n Introduce ahora los resultados de la semana, partido " << i+1 << ": ";
cin >> resultados [i];
}
for (i=0; i<14; i++){
if (apuestas[i] != resultados[i]){
cout << "Partido " << i+1 << ": " << apuestas [i] << " " <<resultados [i] <<" resultado incorrecto\n";
}
else {
cout << "Partido " << i+1 << ": " << apuestas [i] << " " <<resultados [i] <<" resultado correcto\n";
}
}
if (apuestas[14] != resultados[14]){
cout <<"Partido del pleno al 15: "<< apuestas [i] <<" " << resultados [i] << " resultado incorrecto\n";
}
else {
cout <<"Partido del pleno al 15: "<< apuestas [i] <<" " << resultados [i] << " resultado correcto\n";
}
}
El resultado final es este, pues bien al final quite los booleanos (ya que no se como manejarlos del todo) y preferí utilizar unas sentencias if quizás mas tediosas pero para mi es mas sencillo en este aspecto. En lo que es el resultado consigo destacar el pleno al 15 pero en la introducción de datos no consigo diferenciarlo.
Se asignar a un elemento del array un dato concreto, pero no se como ponerlo para que ese dato lo introduzca el usuario. Creo que seria bastante sencillo destacar el pleno al 15 de la siguiente manera
apuestas [15] = i;
cout << "Introduzca el plano al 15 ";
cin >> apuestas
;
Pero creo q no es la manera correcta ya que no me deja. Muchas gracias por vuestra ayuda y bueno sobre todo espero q el código que he puesto le sirva a alguien
EDITO: Pues muy bien ya lo conseguí con algo tan simple como una estructura, no se como funciona exactamente pero funcionó! Muchas gracias a todos y espero que el código le sirve a alguien en un futuro!.
#include <iostream>
using namespace std;
struct resultados{
char apuestas [14];
char resultados [14];
char i;
char pdato;
char presultado;
};
int main() {
char apuestas [14], resultados [14];
char i, pdato, presultado;
for (i=0; i < 14; i++){
cout << "\n Introduce 1 X 2 según la apuesta, partido "<< i+1 <<": ";
cin >> apuestas[i] ;
}
cout << "\n Introduce el pleno al 15: ";
cin >> pdato;
for (i = 0; i<14; i++){
cout << "\n Introduce ahora los resultados de la semana, partido " << i+1 << ": ";
cin >> resultados [i];
}
cout << "\n Introduce el resultado del pleno al 15: ";
cin >> presultado;
for (i=0; i<14; i++){
if (apuestas[i] != resultados[i]){
cout << "\n Partido " << i+1 << ": " << apuestas [i] << " " <<resultados [i] <<" resultado incorrecto\n";
}
else {
cout << "\n Partido " << i+1 << ": " << apuestas [i] << " " <<resultados [i] <<" resultado correcto\n";
}
}
if (pdato != presultado){
cout <<"\n Partido del pleno al 15: "<< pdato <<" " << presultado << " resultado incorrecto \n\n";
}
else {
cout <<"\n Partido del pleno al 15: "<< pdato <<" " << presultado << " resultado correcto \n\n";
}
}