Binder Postado Novembro 16, 2011 Denunciar Share Postado Novembro 16, 2011 Olá pessoal, não estou conseguindo ordenar meu vetor de 42 posições com printf,conforme figura abaixo, alguém sabe como fazer?01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 LacosTTe Postado Novembro 16, 2011 Denunciar Share Postado Novembro 16, 2011 você precisa mostrar como esta declarando seu vetor (quantas posições, se é bidimensional), e também especificar melhor sua dúvida, porque ordenação de vetor, eu acho que não tem como fazer com o printf, que tem a função de "imprimir, mostrar" seu vetor. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Binder Postado Novembro 17, 2011 Autor Denunciar Share Postado Novembro 17, 2011 (editado) Olá LacosTTe, é bem simples, tenho um vetor de inteiro e ele está declarado dentro do main assim: v[42], de uma dimensão, apenas queria imprimir ele conforme menceonei anteriormente, pois se eu fizer um "for(i=0;i<42;i++)" ele iria imprimir um numero de baixo do outro conforme abaixo.1 2 3 4 5 ... Editado Novembro 17, 2011 por Prog_Junior Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mJi Postado Novembro 17, 2011 Denunciar Share Postado Novembro 17, 2011 Sua dúvida é sobre como ordenar, ou sobre como imprimir os números daquela maneira?Se é ordenar, há vários artigos na wikipedia sobre os diversos tipos de ordenação: Bubble Sort, Quick Sort, Comb Sort, Merge Sort, enfim.Já se é sobre como imprimir, saiba que você deve ir colocando os números da esquerda para a direita (á cada número impresso, dê uma tabulação ("\t"), e após imprimir quatro números, deve dar uma quebra de linha ("\n"). Bem simples. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Binder Postado Novembro 17, 2011 Autor Denunciar Share Postado Novembro 17, 2011 (editado) Olá mJi, minha dúvida era apenas de como imprimir meu vetor daquela forma. Eu tentei, mas não consegui...for (i=0;i<42;i++) { printf("\t"); printf("%4d",v[i]); printf("\n"); } Editado Novembro 17, 2011 por Prog_Junior Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mJi Postado Novembro 17, 2011 Denunciar Share Postado Novembro 17, 2011 Tente assim:cont=-1; for(i=0;i<42;i++){ cont++; if(cont==4){ printf("\n%d\t", x[i]); cont=0; } else { printf("%d\t", x[i]); } } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Binder Postado Novembro 17, 2011 Autor Denunciar Share Postado Novembro 17, 2011 (editado) Olá mJi, Funcionou perfeitamente, muito obrigado mesmo pela sua ajuda. Editado Novembro 21, 2011 por Prog_Junior Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mJi Postado Novembro 18, 2011 Denunciar Share Postado Novembro 18, 2011 Há uma coisa errada no código. Note que na structstruct rodoviaria{ int codigo,horapartida,poltrona[42]; char destinoviagem[100]; }; o elemento 'poltrona' é um vetor de 42 posições. Você inicializa ele dessa maneira: for (i=0;i<42;i++){ cont++; vet[i].poltrona[i]= cont; } O que significa que apenas um elemento 'poltrona' de cada estrutura do seu vetor 'vet' irá receber cont. O elemento vet[0].poltrona[0] irá receber 1; O elemento vet[1].poltrona[1] irá receber 2; O elemento vet[2].poltrona[2] irá receber 3; O elemento vet[3].poltrona[3] irá receber 4; O elemento vet[4].poltrona[4] irá receber 5; e assim em diante... Agora perceba a como você exibe no printf: cont=-1; for (i=0;i<42;i++){ cont++; if(cont == 4) { printf("\n%d\t",vet[i].poltrona); cont=0; } else { printf("%d\t",vet[i].poltrona); } }É inválido exibir vet.poltrona. Já se você exibir vet.poltrona, irá exibir todos os elementos que foram inicalizados com cont no 'for' anterior. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Binder Postado Novembro 18, 2011 Autor Denunciar Share Postado Novembro 18, 2011 (editado) Oi mJi, funcionou perfeitamente, muito obrigado pela ajuda! Te devo essa. Editado Novembro 18, 2011 por Prog_Junior Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Binder Postado Novembro 18, 2011 Autor Denunciar Share Postado Novembro 18, 2011 (editado) obrigado. Editado Novembro 21, 2011 por Prog_Junior Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mJi Postado Novembro 19, 2011 Denunciar Share Postado Novembro 19, 2011 Não ví nenhuma função de escrita em arquivos....Se é aquela 'grava()', o melhor é postar ela. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Binder Postado Novembro 19, 2011 Autor Denunciar Share Postado Novembro 19, 2011 (editado) Olá mJi, aqui está a minha função gravavoid grava(struct rodoviaria a[1000],int fim) { FILE *arq; int teste,i; arq = fopen("arquivo.txt","wb"); // w = cria arquivo, b = modo binario if(arq != NULL) { for(i=0;i<fim;i++) { teste = fwrite(&a[i],sizeof(struct rodoviaria),1,arq); if (teste !=1) // retorna 1 gravou e 0 senao gravou { printf("erro ao salvar"); getch(); } } fclose(arq); } else { printf("erro ao abrir arquivo"); } } Editado Novembro 21, 2011 por Prog_Junior Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mJi Postado Novembro 19, 2011 Denunciar Share Postado Novembro 19, 2011 Tente sem o '&'...teste = fwrite(a[i],sizeof(struct rodoviaria),1,arq);Embora a função precise receber o endereço da memória do elemento, pelo fato de ser um vetor, 'a' já manda para a função o endereço de memória.Mas não sei se é realmente isso. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Binder Postado Novembro 19, 2011 Autor Denunciar Share Postado Novembro 19, 2011 (editado) ok, obrigado. Editado Novembro 21, 2011 por Prog_Junior Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Binder Postado Novembro 19, 2011 Autor Denunciar Share Postado Novembro 19, 2011 Oi mJi, tens como me dar uma ajuda? não estou conseguindo resolver. Obrigado. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mJi Postado Novembro 19, 2011 Denunciar Share Postado Novembro 19, 2011 Ah, o problema ocorre só na gravação das structs?Posta o código completo ae pra facilitar. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Binder Postado Novembro 19, 2011 Autor Denunciar Share Postado Novembro 19, 2011 (editado) Tenho uma struct que grava em um arquivo txt.Gostaria de saber como faço o "for" para listar todos passageiros do meu onibus,sendo que meu onibus tem 42 lugares livres, e consequentemente poderá ter até 42 pessoas cadastradas para cada onibus. //struct é um vet[1000] posições struct rodoviaria { int codigo,horapartida,poltrona[42]; char destinoviagem[100],passageiro[42]; }; Main() int main() { struct rodoviaria vet[1000]; } Informa nome do passageiro: printf("Informe nome do passageiro:"); fflush(stdin); fgets (vet[i].passageiro,100,stdin); fflush(stdin); Imprime printf("Informe codigo do onibus:"); scanf("%d",&bus); printf("\n"); for(i=0;i<1000;i++) // laço no arquivo { if(vet[i].codigo == bus) // se codigo do onibus for igual ao que foi digitado... { printf("Passageiros desse onibus: \n"); / imprime lista. for(?) { printf(vet[i].passageiro); printf("\n"); } } } Editado Novembro 22, 2011 por Prog_Junior Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Binder Postado Novembro 22, 2011 Autor Denunciar Share Postado Novembro 22, 2011 mJi,tens como me explicar sobre esse ultimo post? Obrigado. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mJi Postado Novembro 22, 2011 Denunciar Share Postado Novembro 22, 2011 (editado) OpaPassageiro possui o nome do passageiro, correto?O que ocorre é que na sua struct, passageiro é uma string com espaço para 42 caracteres. Caso você queira armazenar os nomes de todos os passageiros, precisará de uma matriz de caracteres.Por exemplo:struct rodoviaria { int codigo,horapartida,poltrona[42]; char destinoviagem[100],passageiro[42][100]; }; Nessa estrutura, 'passageiro' é uma matriz de caracteres que suporta 42 nomes, com no máximo 99 caracteres. Para acessar um nome individualmente, basta acessar vet[numerodoonibus].passageiro[numerodopassageiro] Ou seja, caso faça dessa maneira, poderá exibir os nomes de todos os passageiros assim: printf("Informe codigo do onibus:"); scanf("%d",&bus); printf("\n"); for(i=0;i<1000;i++){ if(vet[i].codigo == bus){ printf("Passageiros desse onibus: \n"); for(j=0;j<42;j++){ printf(vet[i].passageiro[j]); } } } Editado Novembro 22, 2011 por mJi Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Binder Postado Novembro 22, 2011 Autor Denunciar Share Postado Novembro 22, 2011 (editado) Obrigado mJi, pela explicação. Editado Novembro 22, 2011 por Prog_Junior Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Binder
Olá pessoal, não estou conseguindo ordenar meu vetor de 42 posições com printf,conforme figura abaixo, alguém sabe como fazer?
Link para o comentário
Compartilhar em outros sites
19 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.