Leandro_n Postado Maio 29, 2007 Denunciar Share Postado Maio 29, 2007 tem alguém saiba mudar o tamanho de um vetor de acordo com uma variavel?por favor... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Rafael Barros Postado Maio 29, 2007 Denunciar Share Postado Maio 29, 2007 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Felipe Pedroso Postado Maio 29, 2007 Denunciar Share Postado Maio 29, 2007 (editado) 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 Maio 29, 2007 por Felipe Pedroso Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Leandro_n Postado Maio 29, 2007 Autor Denunciar Share Postado Maio 29, 2007 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jonas de Abreu Postado Maio 29, 2007 Denunciar Share Postado Maio 29, 2007 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...) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Leandro_n Postado Maio 29, 2007 Autor Denunciar Share Postado Maio 29, 2007 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õesint nale();void princ();void analise();void receba();void placar();void apagar();//variaveisint f,n,h,k,g,nesc,v,*pontos,aux1,aux2,tempo[50];char nome[50][50];//variaveis de tempoclock_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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Leandro_n
tem alguém saiba mudar o tamanho de um vetor de acordo com uma variavel?
por favor...
Link para o comentário
Compartilhar em outros sites
5 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.