Massacre7 0 Denunciar post Postado Novembro 28, 2009 Pessoal para um trabalho escolar tenho o seguinte código abaixo, porém quando o executo ele esta com alguns erro.... podem me ajudar a identificar os erros??? Segue o código..... #include <iostream.h> #include <stdlib.h> void troca (int*a,int*B) { int aux; aux=a; b=a; } int pivo(int vec[],int esq,int dir) { int i,j; i=esq; for(j=esq+1;j<=dir,j++) { if(vec[j]<vec[esq] { i++; troca(&vec[i],&vec[j]); } } troca(&vec[esq],&vec[i]); return i; } void quicksort(int vec[],int esq,int dir) { int r; if (dir>esq) { r=pivo(vec,esq,dir); quicksort(vec,esq,r-1); quicksort(vec,r+1,dir); } int main() { int vetor[1000]; int i, for(i=0,i<1000,i++) { vetor[i]=rand(); } for(i=0;i<1000;i++) { printf("%d",vetor[i]) } quicksort(vetor,0,999); for(i=0,i<1000,i++) { printf("%d",vetor[i]; } } } Aguardo ajuda...... Compartilhar este post Link para o post Compartilhar em outros sites
rafael.t.a 0 Denunciar post Postado Novembro 28, 2009 A função troca está errada... é assim: aux = *a; *a = *b; *b = aux; Compartilhar este post Link para o post Compartilhar em outros sites
Massacre7 0 Denunciar post Postado Novembro 28, 2009 rafael, muito obrigado pela dica.... porém memso alterando a função o Dev C mostra os seguintes erros..... In function `int pivo(int*, int, int)': linha 15 expected`;'before ')'token linha 18 expected`)'before '{'token linha 22 expected primary-expression before'}'token linha 22 expected`;'before '}'token In function `void quicksort(int*,int,int)': linha 35 expected primary-expression before ''int'' linha 35 expected `;'before''int'' Pode me ajudar??? Compartilhar este post Link para o post Compartilhar em outros sites
VictorCacciari 42 Denunciar post Postado Novembro 29, 2009 Massacre7 Eu tenho certeza que, se você ler as mensagens que você mesmo postou, conseguirá encontrar e resolver o(s) problema(s)! Você sabe alguma coisa de inglês?? Espero que sim, então vamos lá "decifrar" o que o compilador quer dizer... In function `int pivo(int*, int, int)': linha 15 expected`;'before ')'token No seu código há uma função chamada pivo, e o erro está lá dentro, mais precisamente na linha 15, e o erro é:o compilador encontrou um parentesis, mas ele precisa de um ponto-e-vírgula para continuar. =D Você faz as outras! Compartilhar este post Link para o post Compartilhar em outros sites
Massacre7 0 Denunciar post Postado Novembro 29, 2009 Victor, muito obrigado pelas dicas, espero sempre poder contar com vocês para aprender sempre mais. Realmente como você me mostrou existia alguns erros na função "pivo", corrigi os erros e agora existe um erro na `void quicksort(int*, int, int)': E alem disso o compilador mostra um Warning: warning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated. O Compilador agora mostra só estes erros: In function `void quicksort(int*, int, int)': 35: error: expected primary-expression before "int" 35: error: expected `;' before "int" Segue o novo código: #include <iostream.h> #include <stdlib.h> void troca (int*a,int*B) { int aux; aux=*a; *a=*b; *b=aux; } int pivo(int vec[],int esq,int dir) { int i,j; i=esq; for(j=esq+1;j<=dir;j++) { if(vec[j]<vec[esq]) { i++; troca(&vec[i],&vec[j]); } } troca(&vec[esq],&vec[i]); return i; } void quicksort(int vec[],int esq,int dir) { int r; if (dir>esq) { r=pivo(vec,esq,dir); quicksort(vec,esq,r-1); quicksort(vec,r+1,dir); } int main() { int vetor[1000]; int i, for(i=0,i<1000,i++) { vetor[i]=rand(); } for(i=0;i<1000;i++) { printf("%d",vetor[i]) } quicksort(vetor,0,999); for(i=0,i<1000,i++) { printf("%d",vetor[i]; } } } Se não for pedir muito pode me ajudar com mais algumas dicas? Compartilhar este post Link para o post Compartilhar em outros sites
José Enésio 4 Denunciar post Postado Novembro 29, 2009 Sobre o primeiro erro, tu deve incluir iostream e não iostream.h Sobre o segundo, se tu for olhar denovo tu não fechou a função quicksort; e o segundo int declarado em main tá com uma vírgula no final ao invés de ponto-e-vírgula. Compartilhar este post Link para o post Compartilhar em outros sites
Massacre7 0 Denunciar post Postado Novembro 29, 2009 José muito obrigado pela ajuda... realmente vcs são 10... Deve ter sido uma pegadinha do Professor por que ao executar o código ele mostra uma tela com varios numeros e depois se fecha sozinha, devia ter sido apenas para descobrir os erros mesmos..... Mas vcs contribuiram muito... Mais uma vez obrigado pela ajuda. Att Massacre7 Compartilhar este post Link para o post Compartilhar em outros sites
VictorCacciari 42 Denunciar post Postado Novembro 29, 2009 Não.... Se o professor escreveu esse código e mostrou para vocês, é bom você estudar o algoritmo que esta nele! E, mesmo depois de eu ter te ensinado a "ler" as mensagens do compilador, você não conseguiu encontrar os outros erros? Cara, esses são todos erros de sintaxe, isto é, erros com a escrita do código e não de lógica. O compilador nos mostra todos os erros sintáticos do código, e é bom você estudar e aprender a usar o compilador. Só um esclarecimento, o seu programa não mostra um monte de números e fecha, ele mostra um monte de números, ordena todos esses números, mostra de novo e então fecha. Abra-o diretamente pela linha de comandos para ver o resultado. Compartilhar este post Link para o post Compartilhar em outros sites
Massacre7 0 Denunciar post Postado Novembro 29, 2009 Pode cre Victor, conferi a logica do programa...... valeu pelas dicas Compartilhar este post Link para o post Compartilhar em outros sites