seteBR 1 Denunciar post Postado Janeiro 17, 2011 Boa noite, possuo uma tabela no MYSQL com 6 colunas e todas essas preenchidas com valores aleatórios, o que estou tentando fazer é contar os valores iguais (semelhante ao CONT.SE no excel) presentes nas 6 colunas, dividir o resultado pela quantidade de linhas da tabela e gravar o maior valor obtido em uma outra tabela no mesmo DB. Consegui conectar e listar os dados presentes na tabela, mas não consegui contar os valores iguais. Lembrando que estou trabalhando com C e MYSQL, segue abaixo o código que estou utilizando para conectar e listar o conteudo da tabela: #include <stdio.h> #include <mysql/mysql.h> #define HOST "localhost" #define USER "root" #define PASS "*****" #define DB "trabalho" int main(void) { MYSQL conexao; MYSQL_RES *resp; MYSQL_ROW linhas; MYSQL_FIELD *campos; char query[]="SELECT * FROM colunas;"; int conta; //Contador comum mysql_init(&conexao); if (mysql_real_connect(&conexao,HOST,USER,PASS,DB,0,NULL,0)) { printf("Conectado com Sucesso!\n"); if (mysql_query(&conexao,query)) printf("Erro: %s\n",mysql_error(&conexao)); else { resp = mysql_store_result(&conexao);//recebe a consulta if (resp) //se houver consulta { //passa os dados dos campos para a variável campos //escreve na tela os nomes dos campos dando //um tab somente campos = mysql_fetch_fields(resp); for (conta=0;conta<mysql_num_fields(resp);conta++) { printf("%s",(campos[conta]).name); if (mysql_num_fields(resp)>1) printf("\t"); } printf("\n"); //enquanto retonrnar registros, conta até o //número de colunas que a tabela tem e escreve na //tela com um tab, depois pula a linha e tenta //pegar outro registro while ((linhas=mysql_fetch_row(resp)) != NULL) { for (conta=0;conta<mysql_num_fields(resp);conta++) printf("%s\t",linhas[conta]); printf("\n"); } } mysql_free_result(resp);//limpa a variável do resultado: resp } mysql_close(&conexao); } else { printf("Conexao Falhou\n"); if (mysql_errno(&conexao)) printf("Erro %d : %s\n", mysql_errno(&conexao), mysql_error(&conexao)); } return 0; } Alguem sabe como fazer... se possivel poderia colocar explicações no código.. Grato. Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Janeiro 18, 2011 Olha não cheguei rodar o código nem nada, mais o que veio na minha cabeça é usar um simples vetor para isso. Se pular para o C++, temos o container Map. []s Compartilhar este post Link para o post Compartilhar em outros sites
seteBR 1 Denunciar post Postado Janeiro 19, 2011 Olha não cheguei rodar o código nem nada, mais o que veio na minha cabeça é usar um simples vetor para isso. Se pular para o C++, temos o container Map. []s Voce teria um exemplo de como ficaria o código? Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Janeiro 19, 2011 Para ficar mais simples, pode ser em C++, ou você precisa que seja em C msm? []s Compartilhar este post Link para o post Compartilhar em outros sites
seteBR 1 Denunciar post Postado Janeiro 21, 2011 Para ficar mais simples, pode ser em C++, ou você precisa que seja em C msm? []s Pode ser em C++ sim, mas se você tiver um código em C... Mas de qualquer forma fico agradecido. Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Janeiro 21, 2011 Olha tinha um código mais ou menos oq você qria e adaptei, por isso não compilei nem nada é só para você ter uma idéia de como q é. Feito em C++: #include <algorithm> #include <iostream> #include <map> using namespace std; int main(){ int votos, i; map<int, int> mapa; map<int,int>::iterator it; mapa.erase (mapa.begin(), mapa.end()); //para garantir vamos zerar o mapa for (i = 0; i < TOTAL_REGISTROS; i++){ scanf("%d", &numero); //procura alguma ocorrencia do numero, se não tiver indica que só tem um dele, se tiver acrescenta 1 no valor que já estiver if (mapa.find(numero) == mapa.end()) mapa[numero] = 1; else mapa[numero]++; } return 0; } []s Compartilhar este post Link para o post Compartilhar em outros sites
seteBR 1 Denunciar post Postado Janeiro 25, 2011 Obrigado quitZAUMMM, vou testar aqui e tentar entender como funciona. Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Janeiro 26, 2011 Opa ;D []s Compartilhar este post Link para o post Compartilhar em outros sites