Ir ao conteúdo
  • Cadastre-se

Karinac3

Membro Júnior
  • Posts

    5
  • Cadastrado em

  • Última visita

Reputação

2
  1. Boa noite pessoal, estou aprendendo alocação dinâmica e em um exercício recebido preciso pegar um número que é recebido em uma função como int e colocar cada dígito dentro de um vetor char separado por espaços. Depois tenho que retornar esse vetor para a função main. Por exemplo: Recebo = int 432 e devolvo char 4 3 2. A minha dificuldade está em colocar o número que eu recebo como inteiro dentro de um vetor do tipo char. A única função que eu conhecia que transforma int em char é a snprintf, porém não está funcionando neste caso. Existe outra função que eu possa usar? Segue o que eu tentei fazer: char* separa (int numero){ if (numero >=1 || numero<= 32767){ int c=0, b=10, i, recebe_numero[200]; char *ptr_separa = (char*) malloc(2*sizeof(numero)); if(ptr_separa==NULL)return NULL; while (numero !=0){ c = resto(numero, b); numero = quociente(numero, b); for (i=sizeof(numero); i<=0; i--){ recebe_numero[i] = c + 0x30; ptr_separa[i] = recebe_numero[i]; ptr_separa[i+1] = " "; } } } free(ptr_separa); return ptr_separa; }
  2. @AnsiC Obrigada pela ajuda! Com as suas sugestões o meu programa passou em 1 dos 3 testes propostos pelo professor. Os erros são: vírgula após o último número e dar como resposta 28, quando era esperado 28,486 Vou tentar conversar com ele amanhã e verificar como corrigir esses problemas.
  3. Mas como seria possível converter o inteiro para string e aloca-lo no vetor que tem que ser impresso se eu não possuir o tamanho do vetor que tem que ser impresso? Para o problema da vírgula pensei em usar um for para adicionar a pontuação apenas nas posições ímpares do vetor. Mas ainda estou pensando em com implementar isso.
  4. Olá pessoal, obrigada pela ajuda. Já arrumei o erro com os vetores e aprendi a usar a função snprintf, porém a minha segunda função continua a retornar um valor negativo mesmo com todas as atualizações: void encontra_perfeito (int max, int min, char vetp[]){ int cont=0, i, n=0; char perf [max]; for (i=0; i<max; i++){ vetp[i] = 0; } vetp[0] = min; for (i=1; i<max; i++){ vetp[n]= min+1; n = n+1; } for (i=0; i<max; i++){ if (numero_perfeito(vetp[i]) == 0){ perf[cont] = vetp[i]; cont = cont+1; } } for (i=0; i<cont; i++){ snprintf(vetp, sizeof(vetp), "Vetor: %s,", perf[i]); } } Alguém consegue achar algum erro na lógica que eu fiz e ainda não notei?
  5. Boa noite pessoal, estou aprendendo programação e preciso criar duas funções segundo este enunciado: Escreva uma função, chamada numero_perfeito, que receba um número inteiro positivo como parâmetro e retorne um inteiro 1 caso o número for perfeito ou 0 caso contrário. Após, escreva outra função, chamada de encontra_perfeito, que recebe dois inteiros positivos representando um intervalo fechado (min e max) e um vetor de caracteres. A função colocará dentro do vetor de caracteres todos os números inteiros perfeitos dentro do intervalo recebido, separados por vírgula e sem vírgula após o último número. A função não retorna nada (void). Por exemplo, se min for 1 e max for 100, o vetor deverá conter "6,28". Obs.: Diz-se que um número inteiro é um número perfeito se a soma de seus fatores, incluindo 1 (mas não o numero em si), resulta no próprio número. Por exemplo, 6 é um número perfeito porque 6 = 1+2 + 3. Este foi o meu desenvolvimento: #include <stdio.h> #include <stdlib.h> int numero_perfeito (int num){ int fat = 0, i; for (i=1; i<num; i++){ if ((num%i) == 0) fat = fat + i;} if (fat == num){ return 1;} else return 0;} void encontra_perfeito (int max, int min, char vetp[0]){ int cont=0, i, n=0; char perf[0]; for (i=0; i<max; i++){ vetp = 0; perf = 0; } for (i=1; i<max; i++){ vetp[n]= min+1; n = n+1; if (numero_perfeito(vetp) == 0){ perf[cont] = vetp; cont = cont+1; } } for (i=0; i<cont; i++){ printf("%c ,", perf); } } int main(){ int max, min; char vetp[0]; printf("Digite o intervalo: "); scanf ("%i %i", &min, &max); encontra_perfeito(max, min, vetp[0]); return(0); } Porém a função encontra_perfeito retorna apenas lixo da memória e eu não consigo achar meu erro. Alguém pode me ajudar?

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