Ir ao conteúdo
  • Cadastre-se

diogo moura

Membro Pleno
  • Posts

    45
  • Cadastrado em

  • Última visita

Reputação

37
  1. #include <stdio.h> int div(int numero); int main(int argc, char** argv) { int teste, n, divisores, i; scanf("%d", &teste); while(teste--) { scanf("%d", &n); for(i = 1; i <= 1000000; i++) { divisores = div(i); if(divisores == n) { printf("%d\n", i); break; } } } return 0; } int div(int numero) { int i, c = 0; for (i = 1; i * i <= numero; ++i) { if (numero % i) continue; c++; if ((numero / i) == i) continue; c++; } return c; } Bom a questão dá o número de divisores e quer o menor número que tem esses divisores por exemplo 4 divisores o número é 6, só o que meu algoritmo é muito lento, como otimizar ?
  2. @giu_d nossa muito obrigado mesmo, já faz um bom tempo que procuro material, muito obrigado mesmo
  3. @giu_d Boa tarde, esse material é muito bom, poderia me passar o link do site onde você baixou
  4. Bom estou começando meus estudos em estrutura de dados, e está um pouco complicado achar material em ordem, alguém poderia me indicar um livro (PDF), ou um site que siga uma ordem lógica dos assuntos, obrigado desde já
  5. A maneira que eu pensei foi se achar o número ele substituído por um número negativo, mas queria remover o elemento totalmente do vetor #include <stdio.h> #include <stdlib.h> int main(int argc, char** argv) { int vetor[] = {1, 2, 3, 4, 5}, i; int remove_num = 5; int tam = 5; for(i = 0; i < tam; i++) { if(vetor[i] == remove_num) { vetor[i] = -1; } } for(i = 0; i < tam; i++) { if(vetor[i] >= 0) { printf("%d\n", vetor[i]); } } return 0; }
  6. Fiz o que mandou só que não apareceu nenhum valor@isrnick, desculpe se estou sendo meio difícil de entender a sua solução
  7. @isrnick me perdoe se eu estiver falando bobagem, mas por exemplo o número 4 possui os divisores 1 2 4, o no seu código só aparece 2 2 2, você poderia me explicar melhor o código
  8. #include <stdio.h> int main() { int n=4, cont=0,i; for(i=1;i<=4;i++) { if(n%i==0) { cont++; } } printf("%d", cont); } Esse é a forma que eu conheço tem outra maneira mais eficiente que essa ?
  9. Muito obrigado agora minhas dúvidas foram esclarecidas
  10. Não sou muito bom com ponteiro, porém meu professor mostrou um código e até agora não entendi por que a função retornou um vetor com os valores alterados #include <stdio.h> #include <stdlib.h> int *funcao(int vetor[]); int main(int argc, char** argv) { int vetor[10], *ptr; for(int i = 0; i < 10; i++) { scanf("%d", &vetor[i]); } ptr = funcao(vetor); for(int i = 0; i < 10; i++) { printf("%3d",ptr[i]); } printf("\n"); return 0; } int *funcao(int vetor[]) { int *n; n = (int*)malloc(sizeof(int) * 10); for(int i = 0; i < 10; i++) { n[i] = vetor[i] * 2; } return n; }
  11. Seria assim ? @Boko Moko #include <stdio.h> #include <string.h> struct pessoas { char nome[100]; int nota; }; int main(int argc, char** argv) { struct pessoas pessoa[100]; int teste, aux; char a[100]; scanf("%d", &teste); for(int i = 0; i < teste; i++) { scanf("%s %d", pessoa[i].nome, &pessoa[i].nota); } for(int i = 0; i < teste; i++) { for(int j = i + 1; j < teste; j++) { if(pessoa[i].nota == pessoa[j].nota) { if(strcmp(pessoa[i].nome, pessoa[j].nome) == 1) { strcpy(a, pessoa[i].nome); strcpy(pessoa[i].nome, pessoa[j].nome); strcpy(pessoa[i].nome, a); } } else if(pessoa[i].nota > pessoa[j].nota) { aux = pessoa[i].nota; pessoa[i].nota = pessoa[j].nota; pessoa[j].nota = aux; } } } for(int i = 0; i < teste; i++) { printf("%s %d\n", pessoa[i].nome, pessoa[i].nota); } return 0; } , acho que não deu certo
  12. A questão pede que leia nome(sem espaço) e numero(inteiro) e se ordenado pelo numero e caso o número fosse igual seria ordenado por ordem alfabética, tentei fazer mas não consegui O meu código #include <stdio.h> #include <string.h> struct pessoas { char nome[100]; int nota; }; int main(int argc, char** argv) { struct pessoas pessoa[100]; int teste, aux; char a[100]; scanf("%d", &teste); for(int i = 0; i < teste; i++) { scanf("%s %d", pessoa[i].nome, &pessoa[i].nota); } for(int i = 0; i < teste; i++) { for(int j = i + 1; j < teste; j++) { if(pessoa[i].nota == pessoa[j].nota) { strcpy(a, pessoa[i].nome); strcpy(pessoa[i].nome, pessoa[j].nome); strcpy(pessoa[i].nome, a); } else if(pessoa[i].nota > pessoa[i].nota) { aux = pessoa[i].nota; pessoa[i].nota = pessoa[j].nota; pessoa[j].nota = aux; } } } for(int i = 0; i < teste; i++) { printf("%s %d\n",pessoa[i].nome,pessoa[i].nota); } return 0; }
  13. Estou fazendo uma questão que pede para eu retirar apenas os números da frase, o meu código só consegue pegar os números com frases pequenas, Exemplo de frase que o meu código falha, esse caso de teste por ser muito grande o código não vai conseguir retirar o número 100, teria uma função para isso ? #include <stdio.h> #include <string.h> #include <ctype.h> int main(int argc, char** argv) { char nome[] = {"esse vai passar 900"}, aux[101]; int cont = 0, tam = strlen(nome); int indice = 0; for(int i = 0; i < tam; i++) { if(isdigit(nome[i])) { indice = i; break; } } for(int i = indice; i < tam; i++) { aux[cont] = nome[i]; cont++; } aux[cont] = '\0'; puts(aux); return 0; }
  14. Bom estou fazendo a Questão 2729 do uri, que pede para ordenar em ordem alfabética e eliminar os nomes repetidos , já tentei varias entradas e o resultado sai o resultado certo que a questão pede, alguém poderia colocar algum caso que meu código não passe #include <stdio.h> #include <string.h> #include <stdlib.h> int ordena(const void *a, const void *b); int main(int argc, char** argv) { char vetor_nomes[1700][100], nome[1000000], *ponteiro, auxiliar[1700][100]; int teste, cont1, cont2; scanf("%d", &teste); while(teste--) { getchar(); scanf("%[^\n]", nome); cont1 = 0, cont2 = 0; ponteiro = strtok(nome, " "); while(ponteiro != NULL) { strcpy(vetor_nomes[cont1], ponteiro); cont1++; ponteiro = strtok(NULL, " "); } qsort((void*)vetor_nomes, cont1, sizeof(vetor_nomes[0]), ordena); for(int i = 0; i < cont1; i++) { if(!strcmp(vetor_nomes[i], vetor_nomes[i + 1]) == 0) { strcpy(auxiliar[cont2], vetor_nomes[i]); cont2++; } } printf("%s", auxiliar[0]); for(int i = 1; i < cont2; i++) { printf(" %s", auxiliar[i]); } printf("\n"); } return 0; } int ordena(const void *a, const void *b) { return (strcmp((char *)a, (char *)b)); }

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...