polska Posted July 29, 2012 at 10:40 PM Report Share #470890 Posted July 29, 2012 at 10:40 PM Boas pessoal, estava a tentar ordenar uma estrutura mediante o seu valor size, com o qsort, mas não sei como colocar na função compara... eu pensei nisto: struct ex{ int size, inicio, fim; }noCover[200]; int compara(const void *a, const void *b) { struct ex *c, *d; c = noCover[*a].size; d = noCover[*b].size; return(*(int*)c-*(int*)d); } Mas dá erro no [*a] e [*b], dizendo " expression must be a pointer to complete a object type ", secalhar estou a fazer uma grande trapalhada, xD, mas enfim.. Alguém me pode ajudar? Corrige um sábio e ele mais sábio ficará. Corrige um ignorante e um inimigo ganharás. Link to comment Share on other sites More sharing options...
pmg Posted July 29, 2012 at 10:59 PM Report Share #470891 Posted July 29, 2012 at 10:59 PM (edited) int compara(const void *a, const void *b) { const struct ex *c, *d; // temporary variable c = a; // convert and assign d = b; // convert and assign return c->size - d->size; // compare struct members } Edited July 29, 2012 at 10:59 PM by pmg What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código! Link to comment Share on other sites More sharing options...
polska Posted July 29, 2012 at 11:07 PM Author Report Share #470895 Posted July 29, 2012 at 11:07 PM int compara(const void *a, const void *b) { const struct ex *c, *d; // temporary variable c = a; // convert and assign d = b; // convert and assign return c->size - d->size; // compare struct members } c = a; // convert and assign d = b; // convert and assign error C2440: '=' : cannot convert from 'const void *' to 'const ex *' xD Corrige um sábio e ele mais sábio ficará. Corrige um ignorante e um inimigo ganharás. Link to comment Share on other sites More sharing options...
pikax Posted July 29, 2012 at 11:13 PM Report Share #470896 Posted July 29, 2012 at 11:13 PM c = a; // convert and assign d = b; // convert and assign error C2440: '=' : cannot convert from 'const void *' to 'const ex *' xD compila com um compilador de C em vez de C++ 1 Report Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender. A beleza de um código está em decompor problemas complexos em pequenos blocos simples. "learn how to do it manually first, then use the wizzy tool to save time." "Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast." Link to comment Share on other sites More sharing options...
polska Posted July 29, 2012 at 11:16 PM Author Report Share #470898 Posted July 29, 2012 at 11:16 PM Não tenho :s , uso o ultimate da microsoft e só compila C++ . Posso é tentar no Mingw . Eu instalei o Eclipse mas não consegui criar um projecto direito, simplesmente aquilo se eu escolhesse por exemplo ambiente de trabalho, o projecto era criado lá, e tudo o que continha o projecto era o que eu tinha mesmo no ambiente, ou seja, eu apagava o projecto, apagava o ambiente de trabalho xD Corrige um sábio e ele mais sábio ficará. Corrige um ignorante e um inimigo ganharás. Link to comment Share on other sites More sharing options...
pikax Posted July 29, 2012 at 11:19 PM Report Share #470899 Posted July 29, 2012 at 11:19 PM (edited) para tirares o erro faz o seginte: int compara(const void *a, const void *b) { const struct ex *c, *d; // temporary variable c = (const struct ex*)a; // convert and assign d = (const struct ex*)b; // convert and assign return c->size - d->size; // compare struct members } Tens que ter atencao que estas a programar em C++ e nao em C, por isso tenta por na seccao correcta. EDIT: Em C++ nao e' necessario o struct no static cast Edited July 29, 2012 at 11:27 PM by pikax Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender. A beleza de um código está em decompor problemas complexos em pequenos blocos simples. "learn how to do it manually first, then use the wizzy tool to save time." "Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast." Link to comment Share on other sites More sharing options...
polska Posted July 29, 2012 at 11:30 PM Author Report Share #470901 Posted July 29, 2012 at 11:30 PM para tirares o erro faz o seginte: int compara(const void *a, const void *b) { const struct ex *c, *d; // temporary variable c = (const struct ex*)a; // convert and assign d = (const struct ex*)b; // convert and assign return c->size - d->size; // compare struct members } Tens que ter atencao que estas a programar em C++ e nao em C, por isso tenta por na seccao correcta. EDIT: Em C++ nao e' necessario o struct no static cast Estou mesmo a programar em C, o compilador compila, o problema são mesmo casos destes... Vou ter de arranjar um compilador para C, sugeres algum? Eu se calhar tentava o eclipse outra vez, mas sugeres algum? Retirou o erro e compilou, mas deu erro na função qsort, deu erro ao aceder a uma posição inválida ;/ . Corrige um sábio e ele mais sábio ficará. Corrige um ignorante e um inimigo ganharás. Link to comment Share on other sites More sharing options...
pikax Posted July 29, 2012 at 11:33 PM Report Share #470902 Posted July 29, 2012 at 11:33 PM (edited) Estou mesmo a programar em C, o compilador compila, o problema são mesmo casos destes... Vou ter de arranjar um compilador para C, sugeres algum? Eu se calhar tentava o eclipse outra vez, mas sugeres algum? O eclipse e' uma IDE e nao um compilador, para windows uso o MinGW e programo no CodeBlocks, mas isso e' a IDE que gostas mais. O eclipse nao uso, porque tenho que ver se arranjo algum curso para aprender a fazer alguma coisa com ele 😄 Ainda falam que o Visual Studio e' complicado 🙂 EDIT: Retirou o erro e compilou, mas deu erro na função qsort, deu erro ao aceder a uma posição inválida ;/ . E' o problema dos static_cast, escondem os erros, ja que estas a usar o VS, usa o debugger para descubrir o problema EDIT2: No meu corre direito :/ #include <vector> #include <stdio.h> //#include <algorithm> #include <map> #include <windows.h> #include <iostream> #include <stdlib.h> struct ex{ int size, inicio, fim; }noCover[200]; int compara(const void *a, const void *b) { const struct ex *c, *d; // temporary variable c = (const ex*)a; // convert and assign // printf("c = %d\n",c->size); d = (const ex*)b; // convert and assign //printf("d = %d\n",d->size); return c->size - d->size; // compare struct members } int main() { for(int i=199;i>=0;i--) { noCover[i].size=199-i; } qsort(noCover,200,sizeof(ex),compara); for(int i=0;i<200;i++) printf("%d\n",noCover[i].size); } Edited July 29, 2012 at 11:43 PM by pikax Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender. A beleza de um código está em decompor problemas complexos em pequenos blocos simples. "learn how to do it manually first, then use the wizzy tool to save time." "Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast." Link to comment Share on other sites More sharing options...
polska Posted July 30, 2012 at 03:52 AM Author Report Share #470909 Posted July 30, 2012 at 03:52 AM (edited) O eclipse e' uma IDE e nao um compilador, para windows uso o MinGW e programo no CodeBlocks, mas isso e' a IDE que gostas mais. O eclipse nao uso, porque tenho que ver se arranjo algum curso para aprender a fazer alguma coisa com ele 😄 Ainda falam que o Visual Studio e' complicado 🙂 EDIT: E' o problema dos static_cast, escondem os erros, ja que estas a usar o VS, usa o debugger para descubrir o problema EDIT2: No meu corre direito :/ #include <vector> #include <stdio.h> //#include <algorithm> #include <map> #include <windows.h> #include <iostream> #include <stdlib.h> struct ex{ int size, inicio, fim; }noCover[200]; int compara(const void *a, const void *b) { const struct ex *c, *d; // temporary variable c = (const ex*)a; // convert and assign // printf("c = %d\n",c->size); d = (const ex*)b; // convert and assign //printf("d = %d\n",d->size); return c->size - d->size; // compare struct members } int main() { for(int i=199;i>=0;i--) { noCover[i].size=199-i; } qsort(noCover,200,sizeof(ex),compara); for(int i=0;i<200;i++) printf("%d\n",noCover[i].size); } Tens sempre a edição da PROGRAMAR com um tutorial de programação android no eclipse xDD Fogo eu acho que vou começar a programar só em context ou notepad++ e executo em linha de comandos xD ! Qual a diferença exacta de IDE e compilador? O code blocks é um IDE e dá para compilar não é? xD (IDE's para C? tou lixado 😄 ) Eu vou ver se conssigo correr no mingw Edited July 30, 2012 at 03:58 AM by polska Corrige um sábio e ele mais sábio ficará. Corrige um ignorante e um inimigo ganharás. Link to comment Share on other sites More sharing options...
pikax Posted July 30, 2012 at 04:10 AM Report Share #470910 Posted July 30, 2012 at 04:10 AM Tens sempre a edição da PROGRAMAR com um tutorial de programação android no eclipse xDD Vou ter que ver isso 🙂 Fogo eu acho que vou começar a programar só em context ou notepad++ e executo em linha de comandos xD ! Qual a diferença exacta de IDE e compilador? O code blocks é um IDE e dá para compilar não é? xD (IDE's para C? tou lixado 😄 ) Eu vou ver se conssigo correr no mingw IDE= Integrated Development Enviroment Compilador = Traduz codigo escrito em byte code(e' o que o PC percebe), exemplos sao: GCC, MinGW, VC, etc. IDE e' programa que tu editas/ fazes os programas, por exemplo o VisualStudio, Eclipse, Notepad++ sao IDE, muitas das vezes a IDE vem com compiladores. Compilador e' o que faz o programa funcionar num OS. O notepad tambem seria uma IDE se colorisse o Codigo 😄 1 Report Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender. A beleza de um código está em decompor problemas complexos em pequenos blocos simples. "learn how to do it manually first, then use the wizzy tool to save time." "Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast." Link to comment Share on other sites More sharing options...
polska Posted July 30, 2012 at 04:17 AM Author Report Share #470911 Posted July 30, 2012 at 04:17 AM (edited) IDE= Integrated Development Enviroment Compilador = Traduz codigo escrito em byte code(e' o que o PC percebe), exemplos sao: GCC, MinGW, VC, etc. IDE e' programa que tu editas/ fazes os programas, por exemplo o VisualStudio, Eclipse, Notepad++ sao IDE, muitas das vezes a IDE vem com compiladores. Compilador e' o que faz o programa funcionar num OS. Percebido, thanks 😄 O notepad tambem seria uma IDE se colorisse o Codigo 😄 E colore xDD, no notepad++ tens um menu em cima que diz linguagem, é só escolher :b .... Eu tenho um fascinio pelos editores de texto normal, principalmente pello gdit do ubuntu, mas não sei porquê, mesmo 😄 Edited July 30, 2012 at 04:19 AM by polska Corrige um sábio e ele mais sábio ficará. Corrige um ignorante e um inimigo ganharás. Link to comment Share on other sites More sharing options...
pikax Posted July 30, 2012 at 04:33 AM Report Share #470912 Posted July 30, 2012 at 04:33 AM E colore xDD, no notepad++ tens um menu em cima que diz linguagem, é só escolher :b .... Eu tenho um fascinio pelos editores de texto normal, principalmente pello gdit do ubuntu, mas não sei porquê, mesmo 😄 Tava a falar do Notepad do windows 😄 O Notepad++ e' a IDE que gosto mais para programar em PHP, claro se nao tiver acesso ao DreamWeaver 😄 Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender. A beleza de um código está em decompor problemas complexos em pequenos blocos simples. "learn how to do it manually first, then use the wizzy tool to save time." "Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast." Link to comment Share on other sites More sharing options...
polska Posted July 30, 2012 at 04:44 AM Author Report Share #470913 Posted July 30, 2012 at 04:44 AM Tava a falar do Notepad do windows 😄 O Notepad++ e' a IDE que gosto mais para programar em PHP, claro se nao tiver acesso ao DreamWeaver 😄 ahahahah, certo xD Eu só não uso muito editores normais porque gosto mais dos breakpoints do que dos printf's, mas era bom começar a largar o vício 😄 Corrige um sábio e ele mais sábio ficará. Corrige um ignorante e um inimigo ganharás. Link to comment Share on other sites More sharing options...
pikax Posted July 30, 2012 at 04:47 AM Report Share #470914 Posted July 30, 2012 at 04:47 AM Eu só não uso muito editores normais porque gosto mais dos breakpoints do que dos printf's, mas era bom começar a largar o vício 😄 Os breakpoints sao muito mais praticos do que printf's, por isso nao e' um mau vicio, eu so' nao uso o VS para compilar os codigos que metem aqui no forum porque sou obrigado a criar um projecto no VS 😄 e no codeblocks ainda nao atinei com o Debugger 😄 Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender. A beleza de um código está em decompor problemas complexos em pequenos blocos simples. "learn how to do it manually first, then use the wizzy tool to save time." "Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast." Link to comment Share on other sites More sharing options...
polska Posted July 30, 2012 at 04:54 AM Author Report Share #470915 Posted July 30, 2012 at 04:54 AM Até tens razão, mas caso não atines com os breakpoints (eu não atinei no Code Blocks), tás lixado 😄 ! Isso é mesmo seca, é um projecto para tudo no VS xD Corrige um sábio e ele mais sábio ficará. Corrige um ignorante e um inimigo ganharás. Link to comment Share on other sites More sharing options...
pikax Posted July 30, 2012 at 04:59 AM Report Share #470916 Posted July 30, 2012 at 04:59 AM Até tens razão, mas caso não atines com os breakpoints (eu não atinei no Code Blocks), tás lixado 😄 ! Isso é mesmo seca, é um projecto para tudo no VS xD Nao e' assim um problema muito grande, ja' que so' uso o C::B para fazer projectos pequenos, gosto mais do VS 🙂 Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender. A beleza de um código está em decompor problemas complexos em pequenos blocos simples. "learn how to do it manually first, then use the wizzy tool to save time." "Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast." Link to comment Share on other sites More sharing options...
polska Posted July 30, 2012 at 11:59 AM Author Report Share #470949 Posted July 30, 2012 at 11:59 AM Eu também xD . Já agora em contexto do off-topic, no mingw, para projectos em C também se executa gcc exemplo.cpp -o -p ? Corrige um sábio e ele mais sábio ficará. Corrige um ignorante e um inimigo ganharás. Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted July 30, 2012 at 02:24 PM Report Share #470975 Posted July 30, 2012 at 02:24 PM Eu também xD . Já agora em contexto do off-topic, no mingw, para projectos em C também se executa gcc exemplo.cpp -o -p ? o argumento -o é para dares um nome ao ficheiro final, no entanto não tens nenhum, e o -p não é obrigatório só serve para criar código extra para analise do executável. conclusão, basta gcc -o exec.exe exemplo.c isto para c visto estas a criar ficheiros c++ (.cpp) deverás usar o compilar c++ : g++ g++ -o exec.exe exemplo.cpp 1 Report IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
polska Posted July 30, 2012 at 03:01 PM Author Report Share #470990 Posted July 30, 2012 at 03:01 PM o argumento -o é para dares um nome ao ficheiro final, no entanto não tens nenhum, e o -p não é obrigatório só serve para criar código extra para analise do executável. conclusão, basta gcc -o exec.exe exemplo.c isto para c visto estas a criar ficheiros c++ (.cpp) deverás usar o compilar c++ : g++ g++ -o exec.exe exemplo.cpp obrigado 😉 Corrige um sábio e ele mais sábio ficará. Corrige um ignorante e um inimigo ganharás. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now