Alocação dinamica..

1. Alocação dinamica..

Jedson Yuri Campos Melo
jedmelo

(usa Outra)

Enviado em 12/12/2014 - 00:33h

Estou tentando resolver uma questão. é a sequinte:

Implemente um programa em C que simule o sorteio de um Bingo. Primero ler
10 cartelas de 20 números. O programa deve gerar, sucessivamente, números
aleatórios compreendidos entre 1 e 90, pausadamente. A cada sorteio o
programa deve verificar se alguma cartela foi vencedora. Quando isso acontecer,
mostrar todos os números sorteados ordenados e as cartelas sorteadas com seus
respectivos números, também ordenados.

eu criei esse codigo só que está com um problema, eu acho que é o seguinte, quando eu vou sortear ele passa de noventa sorteios [claro], quando isso acontece o programa da um erro, o problema é que eu ainda n sei como mexer com alocação dinamica.. se alguem puder me ajudar.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>


struct cartela{
int num[5];
int acerto=0;
};

void ordenarCartela(cartela *item,int numCar, int qtdeNum);
void ordenarSorteio(int *item, int count);

int main(){
int x=0, sorteio[90], cart;
struct cartela car[2];
bool continuar=true;

for (int i=0;i<2;i++){
for (int j=0;j<5;j++){
printf("%da cartela, %do numero: ", i+1, j+1);
//lendo um vetor de struct
scanf("%d", &car[i].num[j]);
}
printf("\n");
}

srand(time(NULL));

do{
sorteio[x] = rand() % 90;
Sleep(130);
printf ("%d\n", sorteio[x]);

//testando se alguma cartela tem o numero sorteado
for(int i=0;i<2;i++){
for(int j=0;j<5;j++){
if(sorteio[x]==car[i].num[j]){

car[i].acerto++;
printf("cartela %d: %d acertos\n",i+1,car[i].acerto);

if(car[i].acerto==20){
continuar=false;
cart=i;
}

}
}
}

x++;
}while(continuar);

ordenarCartela(car, cart, 20);
ordenarSorteio(sorteio, x);

for(int i=0;i<20;i++){
printf("%d ", car[cart].num[i]);
}
for(int i=0;i<x;i++){
printf("%d ", sorteio[i]);
}

system("pause");
}

void ordenarCartela(cartela *item,int numCar, int qtdeNum){
int aux;
bool trocou = true;
do {
trocou = false;
for (int i = 0; i < qtdeNum-1; ++i) {
if (item[numCar].num[i] > item[numCar].num[i+1]) {
aux = item[numCar].num[i];
item[numCar].num[i] = item[numCar].num[i+1];
item[numCar].num[i+1] = aux;
trocou = true;
}
}
} while (trocou);
}

void ordenarSorteio(int *item, int count) {
int t;
bool trocou = true;
do {
trocou = false;
for (int i = 0; i < count-1; ++i) {
if (item[i] > item[i+1]) {
t = item[i];
item[i] = item[i+1];
item[i+1] = t;
trocou = true;
}
}
}while (trocou);
}


  


2. Re: Alocação dinamica..

Ton Melo
IZhaq_melo

(usa FreeBSD)

Enviado em 12/12/2014 - 08:33h

ola,

veja esse artigo talvez lhe ajude:

http://www.ime.usp.br/~pf/algoritmos/aulas/aloca.html


3. Re: Alocação dinamica..

Jedson Yuri Campos Melo
jedmelo

(usa Outra)

Enviado em 12/12/2014 - 14:02h

vlw, eu resolvi meu problema, li denovo a questão e percebi q n precisava de alocação dinamica, claro q se eu quiser melhor desenvolvimento de memoria, eu posso usar, mas não preciso. mas vlw pela ajuda mesmo assim. E vou ler este artigo sim pra entender melhor.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts