void cartelas(int num[LI][COLU], int copia[LI][COLU]) {
// Preencher cartelas e fazer cópia
for (int i = 0; i < LI; i++) {
for (int j = 0; j < COLU; j++) {
num[i][j] = 1 + ( rand() % 6 );
}
}
for(int i = 0; i< LI; i++){
printf("\n");
for(int j = 0; j< COLU; j++){
printf("|%d| ", num[i][j]);
}
}
for (int i = 0; i < LI; i++) {
for (int j = 0; j < COLU; j++) {
copia[i][j] = num[i][j];
}
}
}
void verificar(int vetor[LI]) {
int c = 0;
for (int i = 0; i < LI; i++) {
if (vetor[i] == -1) {
c++;
}
}
if (c == COLU) {
printf("A cartela venceu!\n");
}
}
int comparar(int num[LI][COLU], int copia[LI][COLU], int sort) {
int c = 0; // Variável para contar as marcações
// Comparar com o número sorteado
for (int i = 0; i < LI; i++) {
for (int j = 0; j < COLU; j++) {
if (copia[i][j] == sort) {
copia[i][j] = -1;
c++; // Incrementar a contagem
verificar(copia[i]);
}
}
}
return c; // Retornar a contagem
}
void sortear(int num[LI][COLU], int copia[LI][COLU]) {
int c = 0; // Inicializar a contagem
while (c < COLU) {
// Sortear o número
int sort = 1 + ( rand() % 6 );
printf("\nNúmero sorteado: %d\n", sort);
Sleep(1000); // Aguardar 1 segundo
c = comparar(num, copia, sort);
}
}
int menu() {
// Menu
int opcao;
printf("\n 1 - Jogar\n 2 - Sortear\n 3 - Sair\n");
scanf(" %d", &opcao);
return opcao;
}
void instrucoes() {
int escolha;
int num[LI][COLU], linha, cartela[LI][COLU];
printf("\nINSTRUÇÕES\n");
printf("\nSerão geradas aleatoriamente 10 cartelas com 15 números e uma sequência de números de 15 caracteres correspondente à cartela vencedora.");
printf("\nCaso nenhuma das 10 cartelas seja sorteada, será efetuado um novo sorteio até que haja uma vencedora.\n");
system("pause");
system("cls");
}
int main() {
setlocale(LC_ALL, "PORTUGUESE");
int sort, num[LI][COLU], copia[LI][COLU], opcao, cartela[LI][COLU];
srand(time(NULL));
printf("\nSeja muito bem-vindo(a) ao nosso bingo!");
do {
opcao = menu();
printf("%d", opcao);
switch (opcao) {
case 1:
instrucoes();
cartelas(num, copia);
break;
case 2:
sortear(num, copia);
break;
case 3:
printf("Muito obrigado por jogar!\n");
break;
default:
printf("Opção inválida\n");
}
} while (opcao != 3);
Pergunta
llmls__
Preciso criar uma função para verificar se há números iguais numa mesma cartela(ou seja, cada linha), se houver, deve ser sorteada uma nova matriz.
E preciso que a função verificar mostre a cartela vencedora (ou toda a linha, ou só a posição da cartela)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <locale.h>
#include <windows.h>
#define LI 3
#define COLU 3
void cartelas(int num[LI][COLU], int copia[LI][COLU]) {
// Preencher cartelas e fazer cópia
for (int i = 0; i < LI; i++) {
for (int j = 0; j < COLU; j++) {
num[i][j] = 1 + ( rand() % 6 );
}
}
for(int i = 0; i< LI; i++){
printf("\n");
for(int j = 0; j< COLU; j++){
printf("|%d| ", num[i][j]);
}
}
for (int i = 0; i < LI; i++) {
for (int j = 0; j < COLU; j++) {
copia[i][j] = num[i][j];
}
}
}
void verificar(int vetor[LI]) {
int c = 0;
for (int i = 0; i < LI; i++) {
if (vetor[i] == -1) {
c++;
}
}
if (c == COLU) {
printf("A cartela venceu!\n");
}
}
int comparar(int num[LI][COLU], int copia[LI][COLU], int sort) {
int c = 0; // Variável para contar as marcações
// Comparar com o número sorteado
for (int i = 0; i < LI; i++) {
for (int j = 0; j < COLU; j++) {
if (copia[i][j] == sort) {
copia[i][j] = -1;
c++; // Incrementar a contagem
verificar(copia[i]);
}
}
}
return c; // Retornar a contagem
}
void sortear(int num[LI][COLU], int copia[LI][COLU]) {
int c = 0; // Inicializar a contagem
while (c < COLU) {
// Sortear o número
int sort = 1 + ( rand() % 6 );
printf("\nNúmero sorteado: %d\n", sort);
Sleep(1000); // Aguardar 1 segundo
c = comparar(num, copia, sort);
}
}
int menu() {
// Menu
int opcao;
printf("\n 1 - Jogar\n 2 - Sortear\n 3 - Sair\n");
scanf(" %d", &opcao);
return opcao;
}
void instrucoes() {
int escolha;
int num[LI][COLU], linha, cartela[LI][COLU];
printf("\nINSTRUÇÕES\n");
printf("\nSerão geradas aleatoriamente 10 cartelas com 15 números e uma sequência de números de 15 caracteres correspondente à cartela vencedora.");
printf("\nCaso nenhuma das 10 cartelas seja sorteada, será efetuado um novo sorteio até que haja uma vencedora.\n");
system("pause");
system("cls");
}
int main() {
setlocale(LC_ALL, "PORTUGUESE");
int sort, num[LI][COLU], copia[LI][COLU], opcao, cartela[LI][COLU];
srand(time(NULL));
printf("\nSeja muito bem-vindo(a) ao nosso bingo!");
do {
opcao = menu();
printf("%d", opcao);
switch (opcao) {
case 1:
instrucoes();
cartelas(num, copia);
break;
case 2:
sortear(num, copia);
break;
case 3:
printf("Muito obrigado por jogar!\n");
break;
default:
printf("Opção inválida\n");
}
} while (opcao != 3);
return 0;
}
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.