Ir ao conteúdo
  • Cadastre-se

diogo moura

Membro Pleno
  • Posts

    45
  • Cadastrado em

  • Última visita

Tudo que diogo moura postou

  1. De string para int, ultilizo a função atoi, não sei de int para string
  2. Nossa, já tinha desistido dessa questão, você falou que Caracteres em branco não contam, como eu faria isso, para ler uma string eu só conheço scanf("%s"), scanf("%[^\n]"), gets(), fgest(), qual você ultilizou@Mauro Britivaldo
  3. A questão pede que eu ordene por distância(da menor para a maior), pela região (em ordem alfabética) e por último pelo nome, tentei fazer sem sucesso O meu código #include <stdio.h> #include <stdlib.h> #include <string.h> struct p { char nome[100]; char rosa[100]; int distancia; }; int distancia(const void *a , const void *b); int rosa(const void *c , const void *d); int pornome(const void *e, const void *f); int main(int argc, char** argv) { int teste, i; while(scanf("%d", &teste) != EOF) { struct p pessoas[teste]; for(i = 0; i < teste; i++) { scanf("%s %s %d", pessoas[i].nome, pessoas[i].rosa, &pessoas[i].distancia); } qsort(pessoas, teste, sizeof(struct p), distancia); qsort(pessoas, teste, sizeof(struct p), rosa); qsort(pessoas, teste, sizeof(struct p), pornome); for(i = 0; i < teste; i++) { printf("%s\n", pessoas[i].nome); } } return 0; } int distancia(const void *a, const void *b) { if((*(struct p*)a).distancia == (*(struct p *)b).distancia) return 0; else if((*(struct p*)a).distancia < (*(struct p *)b).distancia) return -1; else return 1; } int rosa(const void *c, const void *d) { int r = strcmp((*(struct p*)c).rosa, (*(struct p *)d).rosa); if (r == 0) return 0; else if(r < 0) return -1; else return 1; } int pornome(const void *e, const void *f) { int c = strcmp((*(struct p*)e).nome, (*(struct p *)f).nome); if (c == 0) return 0; else if(c < 0) return -1; else return 1; }
  4. Bom estou fazendo um programa para ver se uma placa é valida ou não, só que ele tem que seguir esse modelo AAA-1234, só que no programa eu digito 12345, ainda considera certo, e e da o final da placa ele vai dizer o dia em questão, as letras só podem ser maiúsculo, e os números de 1 a 9 #include <stdio.h> #include <ctype.h> #include <stdlib.h> int main(int argc, char** argv) { char nome[100]; int teste, i; scanf("%d", &teste); for(i = 0; i < teste; i++) { setbuf(stdin, NULL); scanf("%s9", nome); // tentei limitar desse jeito porém não tive sucesso char l1, l2, l3; l1 = nome[0]; l2 = nome[1]; l3 = nome[2]; if((nome[3] == '-') && (isupper(l1)) && (isupper(l2)) && (isupper(l3))) { if(nome[7] == '1' || nome[7] == '2') { printf("MONDAY\n"); } else if(nome[7] == '3' || nome[7] == '4') { printf("TUESDAY\n"); } else if(nome[7] == '5' || nome[7] == '6') { printf("WEDNESDAY\n"); } else if(nome[7] == '7' || nome[7] == '8') { printf("THURSDAY\n"); } else if(nome[7] == '9' || nome[7] == '0') { printf("FRIDAY\n"); } } else { printf("FAILURE\n"); } } return 0; }
  5. Cara eu tõ começando a acreditar que essa questão é impossível do uri aceitar, por que todas as resposta estão certos.@devair1010 Eu utilizo o Falcon C++@devair1010
  6. Sim, depois reutilizar o vetor, o problema agora é que o resultados que a questão está fornecendo eu consigo encontrar, só que o juiz está acusando 10 % de erro, sendo que já testei todos os nomes possiveis, e deram certo@CiroboyBR
  7. Bom zerei o contador c, porém os resultados sairão iguais o da questão como a imagem mostra, porém quando fui enviar a questão deu 10 % de erro.@devair1010 @Derleyvolt
  8. Eu comentei o código, do que ele vai fazer. /*Bom o objetivo dessa questão e que cada letra tem um determinado numero*/ #include <stdio.h> #include <string.h> #include <stdlib.h> int main(void) { int i, j, vetor[100], c = 0, teste, k; /*vetor[100] dando do tamanho vetor, c, contador para incrementar o valor, quando encontar uma letra que tem na frase dado a letra ele vai atriburi o valor para o vetor*/ char nome[100]; char primeiro[7] = {'a', 'k', 'u', 'G', 'Q'}, segundo[7] = {'b', 'l', 'v', 'I', 'S'}; char terceiro[7] = {'E', 'O', 'Y', 'c', 'm', 'w'}, quarto[7] = {'F', 'P', 'Z', 'd', 'n', 'x'}; char quinto[6] = {'J', 'T', 'e', 'o', 'y'}, sexto[7] = {'D', 'N', 'X', 'f', 'p', 'z'}; char setimo[6] = {'A', 'K', 'U', 'g', 'q'}, oitavo[6] = {'C', 'M', 'W', 'h', 'r'}; char nono[6] = {'B', 'L', 'V', 'i', 's'}, deimo[5] = {'H', 'R', 'j', 't'}; //preenchendo o vetor com as letrar scanf("%d", &teste); for(k = 0; k < teste; k++) { setbuf(stdin, NULL); gets(nome); int tam = strlen(nome); for(i = 0; i < tam; i++) { for(j = 0; j < 7; j++) { if(nome[i] == primeiro[j]) /*aqui eu comparo se na frase tem determinada letra, se ela tiver vai ser atribuido um valor numerico para o vetor, c++, para incrementar*/ { vetor[c++] = 0; } } for(j = 0; j < 7; j++) { if(nome[i] == segundo[j]) { vetor[c++] = 1; } } for(j = 0; j < 7; j++) { if(nome[i] == terceiro[j]) { vetor[c++] = 2; } } for(j = 0; j < 7; j++) { if(nome[i] == quarto[j]) { vetor[c++] = 3; } } for(j = 0; j < 6; j++) { if(nome[i] == quinto[j]) { vetor[c++] = 4; } } for(j = 0; j < 7; j++) { if(nome[i] == sexto[j]) { vetor[c++] = 5; } } for(j = 0; j < 6; j++) { if(nome[i] == setimo[j]) { vetor[c++] = 6; } } for(j = 0; j < 6; j++) { if(nome[i] == oitavo[j]) { vetor[c++] = 7; } } for(j = 0; j < 6; j++) { if(nome[i] == nono[j]) { vetor[c++] = 8; } } for(j = 0; j < 5; j++) { if(nome[i] == deimo[j]) { vetor[c++] = 9; } } } for(i = 0; i < 12; i++) { printf("%d", vetor[i]); } printf("\n"); //mostro o vetor memset(vetor, 0, sizeof(vetor)); /*Queria limpar o vetor para que eu pudese realizar os proximos testes*/ /*Só que depois que o zero o valor do vetor ele não recebe mais nenhum valor*/ } return 0; } @Derleyvolt
  9. Bom eu consegui zerar o vetor. Olha ai imagem ai, só que o vetor não recebe mais valores, só fica mostrando zeros. adicionado 2 minutos depois Zerei o valor do vetor depois de mostrar na tela, vou colocar a parte do meu código que fiz a alteração for(i = 0; i < 12; i++) { printf("%d", vetor[i]); } printf("\n"); memset(vetor, 0, sizeof(vetor)); Será que utilizei memset(vetor, 0, sizeof(vetor)); no lugar errado? @Derleyvolt
  10. Continua o mesmo problema utilizei o que você falou, e continua dando o mesmo erro, o primeiro valor que mostra é o que sempre o que fica @Derleyvolt
  11. Bom dia, eu consegui desenvolver a logica da questão, o problema é que depois de mostrar os valores, eu tenho que apagar o que há no vetor, para não utilizar o resultado anterior no próximo caso de teste Link da questão #include <stdio.h> #include <string.h> #include <stdlib.h> int main(void) { int i, j, vetor[12], c = 0, teste, k; char nome[100]; char primeiro[7] = {'a', 'k', 'u', 'G', 'Q'}, segundo[7] = {'b', 'l', 'v', 'I', 'S'}; char terceiro[7] = {'E', 'O', 'Y', 'c', 'm', 'w'}, quarto[7] = {'F', 'P', 'Z', 'd', 'n', 'x'}; char quinto[6] = {'J', 'T', 'e', 'o', 'y'}, sexto[7] = {'D', 'N', 'X', 'f', 'p', 'z'}; char setimo[6] = {'A', 'K', 'U', 'g', 'q'}, oitavo[6] = {'C', 'M', 'W', 'h', 'r'}; char nono[6] = {'B', 'L', 'V', 'i', 's'}, deimo[5] = {'H', 'R', 'j', 't'}; scanf("%d", &teste); for(k = 0; k < teste; k++) { setbuf(stdin, NULL); gets(nome); int tam = strlen(nome); for(i = 0; i < tam; i++) { for(j = 0; j < 7; j++) { if(nome[i] == primeiro[j]) { vetor[c++] = 0; } } for(j = 0; j < 7; j++) { if(nome[i] == segundo[j]) { vetor[c++] = 1; } } for(j = 0; j < 7; j++) { if(nome[i] == terceiro[j]) { vetor[c++] = 2; } } for(j = 0; j < 7; j++) { if(nome[i] == quarto[j]) { vetor[c++] = 3; } } for(j = 0; j < 6; j++) { if(nome[i] == quinto[j]) { vetor[c++] = 4; } } for(j = 0; j < 7; j++) { if(nome[i] == sexto[j]) { vetor[c++] = 5; } } for(j = 0; j < 6; j++) { if(nome[i] == setimo[j]) { vetor[c++] = 6; } } for(j = 0; j < 6; j++) { if(nome[i] == oitavo[j]) { vetor[c++] = 7; } } for(j = 0; j < 6; j++) { if(nome[i] == nono[j]) { vetor[c++] = 8; } } for(j = 0; j < 5; j++) { if(nome[i] == deimo[j]) { vetor[c++] = 9; } } } for(i = 0; i < 12; i++) { printf("%d", vetor[i]); } printf("\n"); for(i = 0; i < 12; i++) { vetor[i] = 0; }/* quando eu faço isso só o primeiro resultado é o certo, os outros resultados são apenas zeros/* } return 0; }
  12. Não sei se é a resposta que você procura, a minha solução do problema foi essa #include <stdio.h> #include <stdlib.h> #include <string.h> #define TAMANHO 100 void duplica(char texto[], char duplo[]); int main() { char texto[TAMANHO], duplo[TAMANHO]; printf("\n Digite o texto: "); scanf("%[^\n]", texto); duplica(texto, duplo); return 0; } void duplica(char texto[], char duplo[]) { int i, tam, c = 0; tam = strlen(texto); for(i = 0; i < tam; i++) { duplo[c++] = texto[i]; } duplo[c] = '\0'; for(i = 0; i < c; i++) { printf("%c\n%c\n", duplo[i], duplo[i]); } printf("\nTexto apos ser duplicado:\n"); for(i = 0; i < c; i++) { printf("%c%c", duplo[i], duplo[i]); } printf("\n"); }
  13. Eu sei que isso não se pode fazer, mas como eu saberia o tamanho do vetor que o usuário digitou, scanf("%d",tamanho); int vetor[tamanho]; //o tamanho do vetor passaria a ser o numero que o usario digitou @Derleyvolt adicionado 5 minutos depois Como você está colocando valores no vetor? Poderia me explicar esse parte @devair1010 vet[t]++; if(vet[t] == 2) cont++;
  14. Cara eu tentei enviar a seu código só que recebi 100% de erro o que será que aconteceu?@devair1010
  15. Em alguns testes meu código consegue passar, porém ele está dando 60 % de erro, Link da questão. Alguns exemplos de entradas e saídas do udebug 30 10 12 18 5 11 30 5 19 19 23 15 Saída = 1 ------------------------ 20 10 6 6 2 8 2 12 16 3 8 17 Saída = 3 ----------------------- 10 10 2 5 3 4 3 3 2 7 9 6 Saída = 2 ---------------------- O meu código falha nesse teste, nos outros ele imprime o resultado esperado. 10 10 4 2 3 4 4 5 2 2 4 9 Saída = 2. ---------------------- Meu código. #include <stdio.h> int main(void) { int a, m, i, j, cont; while(1) { scanf("%d %d", &a, &m); if(a == 0 && m == 0) break; int vetor[m], verifica[m]; for(i = 0; i < m; i++) { verifica[i] = 0; } for(i = 0, cont = 0; i < m; i++) { scanf("%d", &vetor[i]); } for(i = 0; i < m - 1; i++) { for(j = i + 1; j < m; j++) { if(vetor[i] == vetor[j] && verifica[i] != 1 && verifica[j] != 1) { cont++; verifica[i] = 1; verifica[j] = 1; } } } printf("%d\n", cont); } return 0; }
  16. @Mauro Britivaldo Obrigado por me ajudar, analisei o seu código e consegui entender como você chegou o resultado, pensei que se transformasse tudo em segundos ficaria resolveria o problema.
  17. Estou tentando resolver uma questão na plataforma uri, porém não sei como faço para corrigir o meu código, o juiz está dando 40 % de erro.O link da questão #include <stdio.h> int main(int argc, char** argv) { int hora_1, minuto_1, hora_2, minuto_2, hora_final_1, hora_final_2, soma; scanf("%d %d %d %d", &hora_1, &minuto_1, &hora_2, &minuto_2); hora_final_1 = (hora_1 * 3600) + (minuto_1 * 60); hora_final_2 = (hora_2 * 3600) + (minuto_2 * 60); if(hora_final_2 > hora_final_1) { soma = hora_final_2 - hora_final_1; } else { soma = hora_final_1 - hora_final_2; } if(soma == 0) { printf("O JOGO DUROU 24 HORA(S) E 0 MINUTO(S)\n"); } else { printf("O JOGO DUROU %d HORA(S)", soma / 3600); soma %= 3600; printf("E %d MINUTO(S)\n", soma / 60); } return 0; }
  18. Estou iniciando meus estudos em java e não estou conseguindo ler os números com casa decimais e também não estou conseguindo formatar a saida, a questão que estou fazendo é da plataforma uri vou colocar o enunciado dela. Questão 1064. Leia 6 valores. Em seguida, mostre quantos destes valores digitados foram positivos. Na próxima linha, deve-se mostrar a média de todos os valores positivos digitados, com um dígito após o ponto decimal. package primeiroprograma; import java.util.Scanner; public class PrimeiroPrograma { public static void main(String[] args) { Scanner ent = new Scanner(System.in); double num,c=0; int i,contador=0; for(i=0;i<6;i++) { num = ent.nextDouble(); if(num>0) { contador++; c+=num; } } System.out.println(contador+" Valores postivos"); System.out.println(c/contador); } }
  19. Estou iniciando meus estudos na linguagem c,porém estou com dificuldades na parte de ponteiros,estou tentando fazer o cálculo de um fatorial, alguém poderia me ajudar com essa questão,,o abaixo o meu código #include<stdio.h> #include<stdlib.h> void calulcafatorial(int num,int *fatorial); int main(void) { int num,*fatorial; scanf("%d",&num); calulcafatorial(num,&fatorial); } void calulcafatorial(int num,int *fatorial) { int fat; for(fat=1;*fatorial>1;*fatorial--) { fat*=*fatorial; } printf("%d\n",fat); }a

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!