Ir para conteúdo
Fórum Script Brasil
  • 0

Vetores Dinamicos


Leandro_n

Pergunta

5 respostass a esta questão

Posts Recomendados

  • 0

usa ponteiros com alocação dinamica!!!!

exemplo:

char *vetor;

int tam = 15;

vetor = (char*) malloc (tam*sizeof ( char ) );

para usar isso basta manipular como vetor mesmo:

for ( i = 0; i<tam;i++ )

printf ( " o elemento do vetor: %c ", vetor );

ou ainda,para este exemplo:

printf ("o vetor é : %s ", vetor);

espero ter ajudado.

Link para o comentário
Compartilhar em outros sites

  • 0

No caso da realocação dinâmica (alocar memória para cada vez que o vetor mudar de tamanho):

char *vetor;

int tam = 15;

vetor = (char*) malloc (vetor,tam*sizeof (char));

Para outros tipos de variáveis é só substituir o char pelo o que você quiser.

Editado por Felipe Pedroso
Link para o comentário
Compartilhar em outros sites

  • 0
No caso da realocação dinâmica (alocar memória para cada vez que o vetor mudar de tamanho):

char *vetor;

int tam = 15;

vetor = (char*) malloc (vetor,tam*sizeof (char));

Para outros tipos de variáveis é só substituir o char pelo o que você quiser.

valeu acho que isso me ajuda sim...

vlw.

Link para o comentário
Compartilhar em outros sites

  • 0

Felipe, a funcao que voce usou no post 3 não deveria ser a realloc (acho que voce digitou errado, pois colocou o prototipo certo...)

Link para o comentário
Compartilhar em outros sites

  • 0

não deu certo...

quando eu pego ele da um numero aleatorio

#include<stdio.h>

#include<stdlib.h>

#include <string.h>

#include <time.h>

//funcões

int nale();

void princ();

void analise();

void receba();

void placar();

void apagar();

//variaveis

int f,n,h,k,g,nesc,v,*pontos,aux1,aux2,tempo[50];

char nome[50][50];

//variaveis de tempo

clock_t t0[50], tf[50];

//---legenda----

//f--numero de pessoas

//n--opção do menu

//h--auxiliar

//k--auxiliar

//aux1--auxiliar

//aux2--auxiliar

//g--numero digitado

//nesc--numero escolhido aleatoriamente

//v--numero de tentativas

//vetor pontos--ospontos da pessoa

//vetor nome--nome da pessoa

//vetor t0--tempo inicial da pessoa

//vetor tf--tempo final da pessoa

//vetor tempo--tempo da pessoa (tf-t0)

int nale(){//escolhe aleatoriamente um numero de 1 a 100.

srand(time(NULL));

n = (rand() % 99)+1;

return (n);

}

void princ(){

printf("***************************************\n");

printf("* digite 1 para tentar um numero *\n");

printf("* digite 2 para ver o placar *\n");

printf("* digite 3 para apagar o historico *\n");

printf("* digite 4 para sair do programa *\n");

printf("***************************************\n");

scanf("%d",&n);

if(n==1){

//grava em nesc o numero escolhido(aleatoriamente)

nesc=10;

receba();

}

else{

if(n==2){

placar();

}

else{

if(n==3){

apagar();

}

else{

if(n==4){

}

else{

system("cls");

printf("digite um numero valido (1,2,3,4)\n\n\n");

princ();

}

}

}

}

}

void apagar(){

if(f==0){

printf("não tem o que apagar...\n\n");

system("pause");

system("cls");

princ();

}

else{

//infeite...

int i,x,w,t,v,aux;//auxiliares para a porcentagem.

i=0;

x=0;

w=0;

t=5000000;

v=20;

aux=v-1;

char g[100]="";

for(i=0;i<=aux;i++){

w=w+5;

strcat(g,".");

printf("Apagando %d%% %s",w,g);

for(x=0;x<=t;x++);

if(i<aux) system("cls");

}

int j;

//apaga os pontos, tempos, nomes e o numero de pessoas.

for(j=0;j<=f;j++){

pontos[j]=0;

tempo[j]=0;

strcpy(nome[j],"");

}

f=0;

printf("\n\n");

printf("Historico apagado com sucesso.\n\n");

system("pause");

system("cls");

princ();

}

}

void placar(){

int aux,k,i,j,aux1;

char aux3[50][30];

//para achar os tempos.

for(k=0;k<=f;k++){

tempo[k] = ( (double) (tf[k] - t0[k]) ) / CLOCKS_PER_SEC;

}

//para colocar em ordem(pontos,nomes e tempo) de acordo com os pontos.

for (i=0; i < f; i++ ){

for (j=0; j< f-i; j++ ){

if ( pontos[j-1] > pontos[j] ){

aux=pontos[j-1];

aux1=tempo[j-1];

strcpy(aux3[3],nome[j-1]);

pontos[j-1] = pontos[j];

tempo[j-1] = tempo[j];

strcpy(nome[j-1],nome[j]);

pontos[j] = aux;

tempo[j] = aux1;

strcpy(nome[j],aux3[3]);

}

}

}

i=0;

j=0;

aux=0;

int nl[100];

//para achar o numero de letras do maior nome para poder alinhar o menu de acordo

//com o numero de letras de cada nome.

for(k=0;k<=100;k++){

nl[k]=0;

}

k=0;

if(f>5){

for(k=0;k<=5;k++){

nl[k]=strlen(nome[k]);

}

k=0;

for (i=0; i < 5; i++ ){

for (j=0; j< 5-i; j++ ){

if ( nl[j] > nl[j+1] ){

aux=nl[j];

nl[j] = nl[j+1];

nl[j+1] = aux;

}

}

}

}

else{

if(f<=5){

for(k=0;k<=f;k++){

nl[k]=strlen(nome[k]);

}

k=0;

for (i=0; i < f; i++ ){

for (j=0; j< f-i; j++ ){

if ( nl[j] > nl[j+1] ){

aux=nl[j];

nl[j] = nl[j+1];

nl[j+1] = aux;

}

}

}

}

}

k=0;

if(f>5){

char nl1[100]="";

char aste[100]="";

//para os espaços entre nomes e pontos.

for(k=0;k<=nl[5]-6;k++){

strcat(nl1," ");

}

//para os asteriscos de cima e em baixo.

strcat(aste,"********************");

for(k=0;k<=nl[5];k++){

strcat(aste,"*");

}

printf("%s\n",aste);

printf("*Nomes:%s* Pontos:* Tempos:*\n",nl1);

int nl2,t;

strcpy(nl1," ");

nl2=0;

//é 4 pois os vetores começam do 0;

for(k=0;k<=4;k++){

//pega o numero de letras do nome da vez.

nl2=strlen(nome[k]);

//para os espaços entre o nome e os pontos.(para ficar alinhado).

for(t=0;t<nl[5]-nl2;t++){

strcat(nl1," ");

}

//placar

if(pontos[k]>9){

if(tempo[k]>9){

printf("*%s%s* %d * %ds *\n",nome[k],nl1,pontos[k],tempo[k]);

}

else{

printf("*%s%s* %d * %ds *\n",nome[k],nl1,pontos[k],tempo[k]);

}

}

else{

if(tempo[k]>9){

printf("*%s%s* %d * %ds *\n",nome[k],nl1,pontos[k],tempo[k]);

}

else{

printf("*%s%s* %d * %ds *\n",nome[k],nl1,pontos[k],tempo[k]);

}

}

nl2=0;

strcpy(nl1," ");

}

//asterisco de baixo.

printf("%s\n\n",aste);

}

else{

//se tiverem ocorridos 0 rodadas.

if(f==0){

printf("não contem nenhum jogo gravado.\n");

}

else{

//placar caso tenha menos de 5 pessoas.

char nl1[100]="";

char aste[100]="";

for(k=0;k<=nl[f]-6;k++){

strcat(nl1," ");

}

strcat(aste,"******************");

for(k=0;k<=nl[f];k++){

strcat(aste,"*");

}

printf("%s\n",aste);

printf("*Nomes:%s*Pontos:* Tempo:*\n",nl1);

int nl2,t;

strcpy(nl1," ");

nl2=0;

for(k=0;k<=f-1;k++){

nl2=strlen(nome[k]);

for(t=0;t<nl[f-1]-nl2;t++){

strcat(nl1," ");

}

if(pontos[k]>9){

if(tempo[k]>9){

printf("*%s%s* %d * %ds *\n",nome[k],nl1,pontos[k],tempo[k]);

}

else{

printf("*%s%s* %d * %ds *\n",nome[k],nl1,pontos[k],tempo[k]);

}

}

else{

if(tempo[k]>9){

printf("*%s%s* %d * %ds *\n",nome[k],nl1,pontos[k],tempo[k]);

}

else{

printf("*%s%s* %d * %ds *\n",nome[k],nl1,pontos[k],tempo[k]);

}

}

nl2=0;

strcpy(nl1," ");

}

printf("%s\n\n",aste);

}

}

system("pause");

system("cls");

princ();

}

void receba(){

system("cls");

aux1=0;

aux2=0;

h=0;

v=0;

//pega o tempo inicial

t0[f]=clock();

//pega a primeira tentativa.

printf("Tenta rapido pois o tempo passa.\n\n");

printf("digite um numero:\n");

scanf("%d",&g);

v++;

analise();

}

void analise(){

if(g==nesc){

//caso acerte...

//pega tempo final

tf[f]=clock();

system("cls");

//caso tenha feito so uma tentativa(v)...

if(v==1){

printf("\n\n");

printf("*************************************\n");

printf("**PARABENS VOCE ACERTOU DE PRIMEIRA**\n");

printf("*************************************\n\n");

}

else{

//se não...

printf("\n\n");

printf("*************************\n");

printf("**PARABENS VOCE ACERTOU**\n");

printf("*************************\n\n");

}

//pegaa o nome e as tentativas.

printf("digite seu nome:\n");

scanf("%s",&nome[f]);

pontos[f]=v;

//incrementa o numero de pessoas

f++;

pontos = (int*) malloc ((5)*sizeof ( int ) );

system("cls");

princ();

}

else{

if(g>nesc){

aux1=g;

printf("digite um numero menor\n");

printf("entre %d e %d\n",aux1,aux2);

scanf("%d",&g);

v++;

h++;

analise();

}

else{

if(g<nesc){

aux2=g;

printf("digite um numero maior\n");

if(!h){

printf("entre %d e 100\n",aux2);

}

else{

printf("entre %d e %d\n",aux2,aux1);

}

scanf("%d",&g);

v++;

analise();

}

}

}

}

main(){

pontos = (int*) malloc (5*sizeof ( int ) );

//zera variaveis.

f=0;

v=0;

//vai para a função principal.

princ();

}

da uma olhada ai são os vetores pontos, nome, tempo, t0,tf isto pois o programa está acabando com a memoria...

vlw

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...