Ir para conteúdo
Fórum Script Brasil

Mnemonic

Membros
  • Total de itens

    170
  • Registro em

  • Última visita

Tudo que Mnemonic postou

  1. Esse tópico ensina como usar a tag code (é só selecionar o codigo e clicar no ultimo ícone que aparece no lugar de escrever a mensagem, parecido com um pergaminho): http://scriptbrasil.com.br/forum/index.php?showtopic=88873 A lógica do teu codigo ta correta... só precisar ver os casos especiais, como onze, doze, etc. Da vez que eu fiz, eu primeiro tentei pegar os numeros equivalentes a casa das unidades, dezenas e centenas, depois eu fiz os cases. Ex: int x, un, cn, dz, ml; //unidade, centena, dezena, milhar x = 4321; ml = x / 1000; //4321/1000 = 4 cn = (x / 100) % 10; //4321/100 = 43 ... 43 % 10 = 3 dz = (x / 10) % 10; //4321/10 = 432 .. 432 % 10 = 2 un = x % 10; //4321 % 10 = 1 Desse jeito você coloca cada casa decimal em uma variável do tipo int e fica mais fácil pra jogar elas nos switches. Por exemplo... se ml == 0, cn == 1, dz e un == 0, então você usa "cem" em vez de "cento e..."
  2. Tem que ter um limite... é impossível escrever um código que pegue qualquer número e converta. Se ele não deu limite nenhum entào o mais provavel é que ele queira os números apenas de 0 a 9 Ex: 12345 = um, dois, três, quatro, cinco
  3. Opa, só uma correção... Onde eu escrevi isso: for(m=0; m<9; m++) for(n=0; n<9; n++) if(y[m] == y[n]) repete = 1; Você troca por isso:for(m=0; m<9; m++) for(n=0; n<9; n++) if(y[m] == y[n] && m != n) repete = 1; Senão ia ficar preso no while pra sempre.
  4. O erro tá acontecendo por esse motivo: em C e C++, quando você declara um vetor você coloca o número de elementos que ele vai ter, mas na hora de acessar esses elementos, comece contando do 0. Ex: mat[2]; //dois elementos: mat[0] e mat[1] ... mat[2] é inválido, e se usar ele vai dar erro. Então no seu código, o mat precisa ser declarado como mat[3][3]. Além disso, faça o seu codigo trabalhar por você. Isso: y[0]=10; y[1]=11; y[2]=12; y[3]=13; y[4]=14; y[5]=15; y[6]=16; y[7]=17; y[8]=18; é igual a isso: for(n=0; n<9; n++) y[n] = n + 10; E isso: y[0]=rand()%10; y[1]=rand()%10; y[2]=rand()%10; y[3]=rand()%10; y[4]=rand()%10; y[5]=rand()%10; y[6]=rand()%10; y[7]=rand()%10; y[8]=rand()%10; é igual a isso: for(n=0; n<9; n++) y[n] = rand()%10 + 1; //+1 pra não ser 0 nunca Esse while while( ( (y[1]==y[2]) || (y[1]==y[3]) || (y[1]==y[4]) || (y[1]==y[5]) || (y[1]==y[6]) || (y[1]==y[7]) || (y[1]==y[8]) || (y[1]==y[0]) || (y[2]==y[3]) || (y[2]==y[4]) || (y[2]==y[5]) || (y[2]==y[6]) || (y[2]==y[7]) || (y[2]==y[8]) || (y[2]==y[0]) || (y[3]==y[4]) || (y[3]==y[5]) || (y[3]==y[6]) || (y[3]==y[7]) || (y[3]==y[8]) || (y[3]==y[0]) || (y[4]==y[5]) || (y[4]==y[6]) || (y[4]==y[7]) || (y[4]==y[8]) || (y[4]==y[0]) || (y[5]==y[6]) || (y[5]==y[7]) || (y[5]==y[8]) || (y[5]==y[0]) || (y[6]==y[7]) || (y[6]==y[8]) || (y[6]==y[0]) || (y[7]==y[8]) || (y[7]==y[0]) || (y[8]==y[0]) ) || ( (y[1]==0) || (y[2]==0) || (y[3]==0) || (y[4]==0) || (y[5]==0) || (y[6]==0) || (y[7]==0) || (y[8]==0) || (y[0]==0) ) ); Pode ser substituído com dois laços for: int repete; //declara antes essa variavel de controle ... { ... repete = 0; for(m=0; m<9; m++) for(n=0; n<9; n++) if(y[m] == y[n]) repete = 1; }while( repete ); mat[0][0]=y[0]; mat[0][1]=y[1]; mat[0][2]=y[2]; mat[1][0]=y[3]; mat[1][1]=y[4]; mat[1][2]=y[5]; mat[2][0]=y[6]; mat[2][1]=y[7]; mat[2][2]=y[8]; igual a isso: x = 0; for (m=0; m<3; m++) for (n=0; n<3; n++) mat[m][n] = x++; É isso, espero que tenha ajudado. []s
  5. Eu faria o seguinte: Criaria um único array, e jogaria nesse array os resultados da pesquisa, 1, 2 ou 3. No final você percorre o array, conta quantos 1's, 2's e 3's existem e divide pelo total, pra pegar a porcentagem. int indice = 0; do { scanf("%d", &continuar); v[indice] = continuar; indice++; } while (continuar < 4 && continuar > 0); //... for (x=0; x < indice; x++) if (v[x] == 1) qtdWindows++; else if (v[x] == 2) qtdLinux++; else if (v[x] == 3) qtdOutros++; Depois é só calcular por exemplo (qtdWindows / indice) pra pegar os percentuais
  6. Mnemonic

    Visula Basic 6.0

    C... Visual Basic? Tem algo errado nisso. Ou eu estou meio por fora dos produtos da microsoft.
  7. Mesma coisa de uma árvore binária qualquer. A diferença é que o nó dela vai ser do tipo da sua estrutura. typedef struct tPessoa { int codigo; float peso; int idade; } Pessoa; typedef struct tTree { Pessoa node; Tree *esq; Tree *dir; } Tree; Depois na hora de incluir o cadastro das pessoas, é só usar algum método de inserção em árvore que você deve ter aprendido já.
  8. Ah, esqueci de dizer que fazendo o que eu disse, na função select você vai usar: *testeFinalList em vez de testeFinalList Porque testeFinalList vai receber o endereço do ponteiro. E *testeFinalList vai acessar esse ponteiro. Resumindo: o *testeFinalList da função select vai equivaler ao testeFinalList do main. Se no main você faria: testeFinalList = malloc ... No select você faz: *testeFinalList = malloc... E o resultado é o mesmo. Como se a variavel estivesse espelhada. Só tenha cuidado pra não perder a referencia da variável.
  9. Você tá passando apenas o valor da variavel ponteiro como parametro (que nesse caso, é nulo, ou nada, sei lá), mas a função select faz uma copia dela, então você perde a referencia. Pra isso que você quer fazer, vai precisar passar o endereço da variavel. //main select(idconn, &teste, &testeFinalList); //select select(U16 id, teste_t *teste, teste_t **testeFinalList)
  10. Você pode escrever o switch assim pra ficar mais fácil: switch (idade) { case 0: case 1: case 2: case 3: case 4: printf("Sem Categoria"); break; case 5: case 6: case 7: printf("Infantil A"); break; case 8: case 9: case 10: printf("Infantil B"); break; case 11: case 12: case 13: printf("Juvenil A"); break; case 14: case 15: case 16: case 17: printf("Juvenil B"); break; default: printf("Adulto"); }
  11. Eu sempre tive esse problema também. Existem algumas soluções usando cast, ou declarando a matriz como um array de ponteiros. Aqui eu contornei o problema usando uma struct: #include <stdio.h> #include <stdlib.h> #include <time.h> #define COL 10 #define LIN 6 typedef struct sMatriz { int m[COL][LIN]; } Matriz; void gerar_bolao(Matriz *a, int tamx, int tamy) { int i, j; srand(time(NULL)); for (i = 0; i < tamx; i++) for (j = 0; j < tamy; j++) a->m[i][j] = rand() % 60 + 1; //pra acessar os elementos do ponteiro, usa-se o "->" } int main() { int i, j; Matriz b; gerar_bolao(&b, COL, LIN); //como a função recebe um pointer, //precisa passar o endereço de b (&) for (i = 0; i < COL; i++) for (j = 0; j < LIN; j++) printf("%d ",b.m[i][j]); return 0; }
  12. Acho que esses valores não podem ser integer. Troca pra real. No else tá faltando um begin..end.
  13. Não entendi. Do modo como eu pensei aqui, a questão é bem simples. A única parte que poderia complicar, é a parte de passar a expressão do segundo grau pro algoritmo... mas foi a parte que eu dei a dica lá em cima. O resto do programa é bem direto. - Pegar os 3 valores. - Calcular o delta: delta = (b*b ) - (4*a*c) - Se delta for menor que 0, não existem raizes reais - Caso contrário, é só calcular o(s) valore(s) de x. x1 = (-b + sqrt(delta)) / 2*a x2 = (-b - sqrt(delta)) / 2*a http://www.cplusplus.com/reference/clibrary/cmath/sqrt/ http://pt.wikipedia.org/wiki/Equa%C3%A7%C3...quadr%C3%A1tica
  14. Ax² + Bx + C = 0 A*(x*x) + B*(x) + C = 0 Você pede pro usuário digitar o valor de A, B e C, depois calcula as raizes usando aquelas formulas que aprendeu no segundo grau. b² - 4ac... Pra colocar um número ao quadrado, pode usar a função pow(), mas acho mais simples multiplicar o número por ele mesmo.
  15. #include <stdio.h> #include <conio.h> int idade, feminino, masculino; float media; Por que não declarou essas variáveis dentro do main? main() { feminino=0; masculino=0; A variável media não tá sendo usada nesse código. do { printf("informe idade e sexo [1-feminino//2-masculino]"); scanf("%d", &idade); switch (idade) { case 1: feminino*idade; break; case 2: masculino*idade; break; } } while Aqui tem dois problemas. Um deles é que você tá usando a variavel idade dentro do switch. O switch funciona assim: nesse teu codigo, se idade fosse igual a 1, o programa executa tudo que vem depois de "case 1". Se idade for igual a 2, o programa executa tudo que vem depois de case 2. Mas nesse exemplo, você pede pra digitar idade e sexo, e o scanf pega a idade apenas. Se a idade da pessoa for 25, o switch vai usar o 25 mas não existe nenhum "case 25". Além disso, "feminino * idade" não faz sentido nenhum. Pra onde tá indo esse valor? O outro problema é no while. Você precisaria de alguma expressão lógica alí no final pro while. Por exemplo: ...while (idade > 0); printf("\n media feminino: %f", feminino); printf("\n media masculino: %f", masculino); getch(); } Aquele %f alí significa que aquele local vai ser substituído por uma variavel do tipo float. Tanto feminino quando masculino são do tipo int. Então você precisaria usar %d. A impressão que dá é que você tá atirando no escuro até alguma coisa funcionar. O melhor é você procurar algum livro sobre C, ou alguma apostila na internet, e aprender a linguagem aos poucos. No começo parece difícil, mas em uma semana dá pra entender o básico da linguagem.
  16. Eu não entendi a pergunta... No teu codigo o usuario tá sempre preenchendo todos os registros (MAX). Caso você preenchesse apenas um por vez, você poderia criar uma variável global pra manter a contadem dos registros que fossem cadastrados com sucesso. Ex: //... struct registro tabela[MAX]; int regCont = 0; //... void preenche_registro() { //... regCont++; } Não é muito elegante, mas funciona. A segunda pergunta, pra conferir se o usuário cadastrou tudo certo, o jeito é criar um monte de if, ou do..while até o safado digitar tudo certo. Você pode por exemplo usar variaveis temporárias pra pegar os valores do registro, daí no final confere tudo e aí manda pra variável real. Pra não ficar repetindo isso várias vezes, melhor criar uma função que faz isso e retorna 0 tá tudo certo ou 1 se deu problema.
  17. Mnemonic

    (Resolvido) Struct

    Opa, legal eu ter ajudado. :) Essa de pesquisar a placa do carro eu não entendi direito o que é pra fazer. (é o case 4 daquele switch?) Melhor você criar outro tópico especificando isso, e colocando o código identado lá, que fica mais fácil pra outras pessoas ajudarem também.
  18. Mnemonic

    (Resolvido) Struct

    Mas é um programa só. Quando compilar, isso tudo se transforma num único .exe.
  19. Mnemonic

    (Resolvido) Struct

    http://scriptbrasil.com.br/forum/index.php?showtopic=88873 Normalmente você cria um arquivo header (.h) com os protótipos das funções e um arquivo com o corpo das funções, e quando você quiser usar aquelas funções no seu código, você faz um #include "seuHeader.h" Exemplo: carro.h #ifndef _CARRO_H_ #define _CARRO_H_ #define tamanho 5 struct carro{ int placa; char nome[15]; }; struct carro incluir(); void imprimir(struct carro temporaria[]); #endif carro.c #include <stdio.h> #include <stdlib.h> #include <string.h> #include "carro.h" struct carro incluir() { //corpo da função aqui... } void imprimir(struct carro temporaria[]) { //corpo da função aqui... } Então qualquer outro código onde você precise usar essas funções, basta usar: #include "carro.h" Todos os arquivos precisam estar na mesma pasta. E dependendo do compilador ou IDE que você esteja usando, é preciso incluir o carro.c ao seu projeto (ou compilar ele junto com o programa principal).
  20. O primeiro obstaculo que eu superei foi perceber que "Matrix" e "Hackers" são apenas filmes, e que um computador é só uma ferramenta. Assim como o Linux é apenas um sistema operacional. Infelizmente nem sempre é uma questão de tempo pra perceber isso.
  21. Ah, no final você pode testar se 'maria' é maior que 'joao', daí diz quem foi o vencedor. if (maria > joao) printf("A vencedora foi Maria"); else printf("O vendedor foi Joao");
  22. Você não pode atribuir valores pras variáveis daquele jeito: maria=0, joao=0, branco=0 (e mesmo que pudesse, faltou um ponto e virgula no final). No for você precisa usar ponto e virgula em vez de virgula apenas. No switch, você tava usando 'voto' em vez de 'votos'. Corrigindo isso, fica assm: #include <stdio.h> int main() { int votos, maria = 0, joao = 0, branco = 0, i; for(i=0; i<30; i++) { printf("informe o voto [1-maria, 2-joao, 3-branco}"); scanf("%d", &votos); switch(votos) { case 1: maria++; break; case 2: joao++; break; case 3: branco++; break; } } printf("maria: %d ", maria); printf("joao: %d ", joao); printf("branco: %d ", branco); return 0; }
  23. #include <stdio.h> int main() { int i; int j; int cont; int v[9]; printf("digite 9 valores:"); for (i=0;i<9;i++) { scanf("%d", &v[i]); for (i=0;i<9;i++) { cont=0; for (j=0;j=v[i];j++) { //aqui j=v[i] tá atribuindo o valor de v[i] pra j, e não comparando if(v[i]%j==0) cont = cont+1; } if (cont<=2) { printf("%d", v[i]); printf("%d", i); } } return 0; //return tava sendo executado dentro do for anterior, daí o programa sempre fechava antes do fim }
  24. Mnemonic

    convertendo

    #include <stdio.h> #include <stdlib.h> int main() { int x = 33; char c[5]; sprintf (c, "%d ", x); printf("%s ", c); return 0; } A função sprintf é como a printf, mas em vez de mandar o resultado pra tela, ela guarda o resultado numa string (nesse exemplo que eu dei, a string "c" .
  25. codlivro_aux, tabela.codlivro; preco_aux, tabela.preço; quant_aux, tabela.quant; Talvez seja culpa dessas vírgulas aí.
×
×
  • Criar Novo...