Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.

Jessé P. de Melo

Membros Plenos
  • Total de itens

    78
  • Registro em

  • Última visita

  • Qualificações

    N/D

Reputação

24

Informações gerais

  • Cidade e Estado
    Sã Paulo
  • Sexo
    Masculino
  1. @bngomes Erro da minha parte então, tirei essa conclusão por dedução já char tem tamanho 1 e as vezes ao criar uma string uso: char c ="exemplo"; Esse código funciona recebe maior quantidade do que a prevista, e o que termina a string é um '\0'. Mais enfim sabe consertar o primeiro script com uso da biblioteca string?
  2. Bom dia. Estou resolvendo o seguinte exercício: Escreva uma função que receba um numero inteiro maior do que zero e retorne a soma de todos os seus algarismos. Por exemplo, ao numero 251 corresponder a o valor 8 (2 + 5 + 1). Se o numero lido não for maior do que zero, o programa terminar a com a mensagem “Numero invalido”. Desenvolvi a solução que segue, porém esta dando erro com funções da biblioteca string. #include<stdio.h> #include<stdlib.h> #include<string.h> int main (void){ int converte (char a); int tam; char texto; printf("Digite um numero: "); scanf("%s",&texto); printf("Soma: %i", converte(texto)); } int converte (char a){ int tam; int num; int num_intermediario; char intermediario[2]; tam=strlen(a); char texto1[tam]; strcpy(texto1,a); intermediario[1]='\0'; for (int x=0;x<tam;x++){ intermediario[0]=texto1[x]; num_intermediario=atoi(intermediario); num=num+num_intermediario; } return(num); } Pois bem! Pensei comigo mesmo é só não usar essas funções, ai modifiquei o a função, e ficou assim: int converte (char a){ int num; int num_intermediario; char intermediario[2]; intermediario[1]='\0'; for (int x=0;a[x]!='\0';x++){ intermediario[0]=a[x]; num_intermediario=atoi(intermediario); num=num+num_intermediario; } return(num); } E agora está me dando um erro falando que "a" não é array, toda char não é um array ate encontrar o limitador de quantidade ou um '\0' ? E como conserto a função com as bibliotecas strings para funcionar sem usar ponteiros essa é a lista de exercícios 7 - funções ponteiros é a lista 9.
  3. Existe algum lugar onde encontro a padronização do sistema? Sei que se da zero é porque funcionou corretamente, se retorna negativo e porque deu erro, se retorna positivo e porque concluiu com adversidades, onde encontro as referencias para saber qual foi a adversidade exemplo 21(0x15). Mas eu nem sabia que a main e necessariamente int.
  4. Porque o código abaixo da process returned 21(0x15) se a função main é void?? Pelo o que eu aprendi estudando por conta a main nem deveria retorna nada e muito menos o valor 21; #include<stdio.h> #include<stdlib.h> #include<math.h> void main(void){ float cateto_a=0; float cateto_b=0; float hipotenusa(float a, float b); printf("Digite o cateto A:"); scanf("%f",&cateto_a); printf("Digite o cateto B:"); scanf("%f",&cateto_b); printf("A hipotenusa e' %.2f",hipotenusa(cateto_a,cateto_b)); } float hipotenusa(float a, float b){ float hip=0; a=a*a; b=b*b; hip=sqrt(a+b); return(hip); }
  5. Fiz o exercício: Faça uma função que receba 3 números inteiros como paramentos, representando horas, minutos e segundos, e os converta em segundos. Código: #include<stdio.h> #include<stdlib.h> void main(void){ unsigned h,m,s; int conversor_hrs(int hrs, int minutos, int segundos); printf("Digite as horas: (HH-MM-SS) "); scanf("%u-%u-%u",&h,&m,&s); printf("O valor em segundos %i: ",conversor_hrs(h,m,s)); } int conversor_hrs(int hrs, int minutos, int segundos){ int total_segundos=0; total_segundos=(hrs*60*60)+(minutos*60)+segundos; return(total_segundos); } Minha duvida é tem como passar os parâmetros da função direto na chamada sem popular variáveis intermediarias? exemplo: conversor_hrs(scanf("%i"),scanf("%i"),scanf("%i"));
  6. Depois de muita luta terminei. Estava quase desistindo do exercício, fiquei gastando tempo e paciência tentando readequar meu código a solução proposta. Sendo que era muito mais simples começar a função do zero. Aparentemente esta funcionando e ficou assim: #include<stdio.h> #include<stdlib.h> int main(void){//2,3,5,7 int num; void quadrado_perfeito(int x); printf("Digite um numero para saber se e um quadrado perfeito: "); scanf("%i",&num); quadrado_perfeito(num); } void quadrado_perfeito(int x){ int n1=1; int n_total=1; int valida=0; while(n1<x){ n1+=2; n_total=n_total+n1; if (n_total==x){ valida=1; } } if (valida==1){ printf("E' quadrado perfeito"); } else{ printf("Nao e' quadrado perfeito"); } }
  7. Desculpe a demora. Disse que começaria estudar as 12:00 mas comecei depois da 13:00, alem do mais por algum motivo que eu não lembro qual eu queria desenvolver um bloco só para números compostos e números primos. Enfim só aumentei isso na função para realizar cálculos para números primos: int quadrado_perfeito(int x){ int soma_impares=1; while(soma_impares<x){ soma_impares+=2; } if(soma_impares==x){ printf("E' quadrado perfeito"); } } O código completo ficou: #include<stdio.h> #include<stdlib.h> int main(void){//2,3,5,7 int num; int quadrado_perfeito(int x); printf("Digite um numero para saber se e um quadrado perfeito: "); scanf("%i",&num); quadrado_perfeito(num); } int quadrado_perfeito(int x){ int soma_impares=1; int exp_n2=0; int exp_n3=0; int exp_n5=0; int exp_n7=0; int teste1=0; int teste2=0; int teste3=0; int teste4=0; while(soma_impares<x){ soma_impares+=2; } if(soma_impares==x){ printf("E' quadrado perfeito"); exit(0); } while(x>1){ while (x%2==0){ x=x/2; exp_n2++; } while (x%3==0){ x=x/3; exp_n3++; } while (x%5==0){ x=x/5; exp_n2++; } while (x%7==0){ x=x/7; exp_n7++; } } if(exp_n2==0||exp_n2%2==0){ teste1=1; } if(exp_n3==0||exp_n3%2==0){ teste2=1; } if(exp_n5==0||exp_n5%2==0){ teste3=1; } if(exp_n7==0||exp_n7%2==0){ teste4=1; } if(teste1&&teste2&teste3&&teste4==1){ printf("E' um quadrado perfeito"); } else{ printf("Nao e' um quadrado perfeito"); } }
  8. @isrnick Esse método parece bom. Eu pensei que ao fazer a verificação com números 2,3,5,7 seria o suficiente por que todos os que vem apos desses na fatoração poderiam ser divididos entre esses principais, se der você poderia ser mais claro ? porque fiz testes com o numero 81, depois (81*81)=6561 e depois com (6561*6561)=43046721 deram certo, no entanto o 43046720 ficou travado consumindo processador. Mas vejo isso só amanha, estou desde as 12:00 estudando.
  9. Eu não sabia, que dava criar um ponteiro e inserir dados ao mesmo tempo. No final virou um vetor normal só que sendo um ponteiro
  10. Da string eu sabia agora stdlib não, sempre uso stdio e stdlib juntas nem sei mais diferenciar as duas, só sei que são bibliotecas para facilitar entrada e saída de dados e realizar algumas operações simples. Só tenho conhecimentos teóricos sobre ponteiros, eles estão no plano de estudo só que mais para frente. Eu tinha a intenção de trabalhar com strings, e depois converter com atoi esse pedaço ficou do código antigo. Coloco por redundância mesmo, se não me engano a linguagem trabalha de acordo com o sistema.
  11. Boa noite. Estou estudando para programar em microcontroladores, esses aparelhos tem recursos bem limitados, ou seja quanto mais otimizado melhor. Fiz o exercício: Faça uma função para verificar se um numero é um quadrado perfeito. Um quadrado perfeito e um numero inteiro não negativo que pode ser expresso como o quadrado de outro numero inteiro. Ex: 1, 4, 9... (Definição mais completa). Quero otimizar esse código. #include<stdio.h> #include<stdlib.h> int main(void){//2,3,5,7 int num; int quadrado_perfeito(int x); printf("Digite um numero para saber se e um quadrado perfeito: "); scanf("%i",&num); quadrado_perfeito(num); } int quadrado_perfeito(int x){ int exp_n2=0; int exp_n3=0; int exp_n5=0; int exp_n7=0; int teste1=0; int teste2=0; int teste3=0; int teste4=0; while(x>1){ while (x%2==0){ x=x/2; exp_n2++; } while (x%3==0){ x=x/3; exp_n3++; } while (x%5==0){ x=x/5; exp_n2++; } while (x%7==0){ x=x/7; exp_n7++; } } if(exp_n2==0||exp_n2%2==0){ teste1=1; } if(exp_n3==0||exp_n3%2==0){ teste2=1; } if(exp_n5==0||exp_n5%2==0){ teste3=1; } if(exp_n7==0||exp_n7%2==0){ teste4=1; } if(teste1&&teste2&teste3&&teste4==1){ printf("E' um quadrado perfeito"); } else{ printf("Nao e' um quadrado perfeito"); } } .
  12. Esquece parei para reparar aqui. o Mes começa em 1 enquanto o vetor começa em 0. Por isso estava dando erro.
  13. @Fernando Mercês Já terminei, estou corrigindo o que você sugeriu. adicionado 11 minutos depois Ficou assim. #include<stdio.h> #include<stdlib.h> #include<string.h> void main (void){ char data [11]; char converte_data(char data[11]); converte_data(data); } char converte_data(char data[11]){ unsigned int dia; unsigned int mes; unsigned int ano; char mes_por_extenso[12][10]={"Janeiro","Fevereiro","marco","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"}; printf("Digite a data(DD-MM-AAAA): "); scanf("%d-%d-%d",&dia,&mes,&ano); fflush(stdin); for(int x=0;x<12;++x){ if(mes-1==x){ printf("%u de %s de %u",dia,mes_por_extenso[x],ano); } } } Eu que fiz mais estou em duvida o motivo de "if(mes-1==x)"? Na minha concepção deveria funcionar sem o -1.
  14. @Fernando Mercês Porque eu não aprendi isso antes? Fiz vários exercícios no mesmo esquema.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×