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

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
brun0tf

C Exercício de estruturas de repetição

Recommended Posts

Oi, estou aprendendo a programar e tenho uma dúvida referente ao exercicio em anexo, espero que possam me ajudar.

Consegui fazer o exercício 3, no entanto estou com dificuldades em aplicar código sem a biblioteca math.h

5b0e10f851443_Screenshotfrom2018-05-2923-47-48.png.eb0e10e318d7eabce179ec156c723883.png

 

 

meu código:

#include <stdio.h>
int main()
{
    int num, n, res, soma=0, y=1;
    printf ("diga o numero");
    scanf ("%d", &num);
     printf ("diga o numero de termos");
    scanf ("%d", &n);
    if (n%2==0){
        for (int cont=1; cont<=n; cont++){
  y = y*num;
}
        
    for (int i=0; i<=n; i=i+2){
      res=i*y;
      soma = soma + res;
    }
printf ("%d\n", soma);

    }
else {printf ("Numero de termos ímpar");}
    return 0;
}

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado (editado)

Passa isso de GO pra C ... Porque facilitar não é mesmo =D

package main

import "fmt"

func _pow(x int, n int) int  {
	var _sum int = x;
	for i := 1; i < n; i++ {
		_sum = x*_sum;
	}
	return _sum;
}

func main()  {
	var N int = 8;
	var n int = 2;
	var x int = 2;
	var terms []int;
	if((n % 2) == 0) {
		for i := 0; i < N; i++ {
			fmt.Print(n,"*(",x,"^",n,") + ");
			terms = append(terms,n*_pow(x, n));
			n += 2;
		}
		fmt.Println("... + nx^n\nSomatorio: ", terms);
	} else {
		fmt.Println("n deve ser par");
	}
}

https://play.golang.org/p/Hw3qWbUzHlI

Editado por Plástico Bolha
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Plástico Bolha  pelo que entendi você usou pow pra efetuar a potencia, mas meu problema é com o exercicio 4, q pede pra nao usar math.h (nunca nem tinha ouvido falar em go kkk)

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@brun0tf Não, ele criou uma função para calcular a potência, e usou essa função, ao invés de importá-la de uma biblioteca.

  • Curtir 1
  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
7 horas atrás, brun0tf disse:

@Plástico Bolha  pelo que entendi você usou pow pra efetuar a potencia, mas meu problema é com o exercicio 4, q pede pra nao usar math.h (nunca nem tinha ouvido falar em go kkk)

Criei essa função pra calcular o pow:

func _pow(x int, n int) int  {
	var _sum int = x;
	for i := 1; i < n; i++ {
		_sum = x*_sum;
	}
	return _sum;
}

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá.

 

1#

@brun0tf, aqui, usando o Dev-C++ v5.11 (4.92 x64) o seu código não compilou em C. Para funcionar, declarei as variáveis fora do for. Ficou algo assim:

#include <stdio.h>
int main() {
    int num, n, res, soma=0, y=1;
    printf("Diga o numero"); //que número? 
    scanf("%d", &num);
    printf ("Diga o numero de termos");
    scanf ("%d", &n);
    if (n%2==0) {
        int cont;
        for (cont=1; cont<=n; cont++){
            y = y*num;
    }    
    int i;
    for (i=0; i<=n; i=i+2){
        res=i*y;
        soma = soma + res;
    }
    printf ("%d\n", soma);
    }
    else {
        printf ("Numero de termos ímpar");
    }
    return 0;
}

 

Mas em fim, não sei se é limitação do meu compilador ou se em C de fato não aceita.

 

 

 

2#

Apenas para efeito comparativo...

 

Inserir 2 e 4. Pelas minhas contas seria:

x=2
n=4

y=2(2)^2 + 4(2)^4
y=2*4 + 4*16
y=8 + 64
y=72

Correto?

 

No programa deu 96...

 

Em fim... acho que de fato já é sabido que não está funcionando...

 

Minha sugestão é que antes poste o exercício 3... para ser revisado e ver se está no caminho, caso contrário, não vai adiantar fazer o 4.

 

 

 

3#

Sobre:

Em 29/05/2018 às 23:57, brun0tf disse:

Consegui fazer o exercício 3, no entanto estou com dificuldades em aplicar código sem a biblioteca math.h

 

Então... perceba que o 4 é exatamente o mesmo algoritmo do 3... só muda que não vai usar o método pow(). Então, para que serve o método Pow()? ou seja, apenas implemente o que o método pow() faz e pronto.

 

A maneira mais prática é criar um método próprio como no exempo _pow(), que fará o que o pow() do math.h faz, daí invoca o seu método onde seria invocado o pow()...  ou pode também fazer a conta no próprio corpo.. não tem problema algum...

 

 

***

 

No aguardo.

 

 

adicionado 6 minutos depois

PS: se usar o nome pow(), não precisará mudar nada!!!    Veja, seria mais ou menos assim... o pow() é como se não "existisse" no C... ai alguém fez e deixou dentro de uma "biblioteca" a parte (que chamou de math)... ai, ao dar um include dessa biblioteca, tudo que tem no math será incorporado ao "compilador", logo, o comando passou a ser reconhecível.

 

RESUMINDO:

Em vez de dar um include para disponibilizar o pow(), você simplesmente irá implementar o método.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado (editado)

@Simon Viegas

oi, obrigado pela atenção. Então, primeiro quero esclarecer que ainda não aprendi nada sobre funções, vetores e strings ainda.

 

Esse exercicio foi dado pelo professor do meu curso, e ele quer que usemos a potenciação como multiplicaçoes sucessivas de uma variável, como nesse código:

#include <stdio.h>
int main()
{
   int base, exp, x=1;
   printf ("diga a base: ");
   scanf ("%d", &base);
   printf ("diga o expoente: ");
   scanf ("%d", &exp);
   
   for (int i=1; i<=exp; i++){
	   x=x*2;}
	   printf ("%d", x);}
	   
   
   
   
2 horas atrás, Simon Viegas disse:

Correto?

 

No programa deu 96...

Sim, deu 96 por que o programa fez y=2*16 + y = 4*16.

O certo seria y=2*4 + y=4*16. (para x=2 e n=4), resultado q nao consigo chegar sem usar pow....

 

 

Aqui está meu programa do terceiro exercicio, q a principio esta certo(esqueci de por a condicinal que daria aviso de n=ímpar no programa)

#include <stdio.h>
#include <math.h>
int main()
{
   int n,x,j=1,i;
int  y, soma=0;
   printf ("diga x: ");
   scanf ("%d", &x);
   printf ("diga n: ");
   scanf ("%d", &n);
   
   
   for (i=2; i<=n; i=i+2){
       j = pow(x,i);
        y = i*j;
       printf ("%d*%d = %d\n", i,j,y);
       soma = soma + y;}
   
       printf ("\n\nSomatorio: %d", soma);

    return 0;}

 

Editado por brun0tf
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá.

 

 

1#
Sempre, veja, SEMPRE mantenha o seu código indentado!!! É fundamental! Ex.:
 

#include <stdio.h>
#include <math.h>
int main() {
    int n,x,j=1,i;
    int  y, soma=0;
    
    printf ("diga x: ");
    scanf ("%d", &x);
    printf ("diga n: ");
    scanf ("%d", &n);
    for (i=2; i<=n; i=i+2) {
        j = pow(x,i);
        y = i*j;
        printf ("%d*%d = %d\n", i,j,y);
        soma = soma + y;
    }
    printf ("\n\nSomatorio: %d", soma);
    return 0;
}

Veja a diferença... Então, deixe o código perfeitamente organizado.. verás como faz diferença.

 

obs.: não existe um padrão único de indentação. Inclusive é possível ter suas próprias características... mas deve ter sempre coerência.

 

 

 

2#

Sobre:

4 minutos atrás, brun0tf disse:

oi, obrigado pela atenção. Então, primeiro quero esclarecer que ainda não aprendi nada sobre funções, vetores e strings ainda.

 

Simples: não use-as. Se ainda não aprendeu, não tem porque implementar... ou seja, o exercício é (ou deveria ser) sempre voltado para o que já aprendeu... não tente sair do fluxo de aprendizagem.

 

obs.: caso consiga fazer com o conteúdo já explicado, nada impede de você POSTERIORMENTE fazer com recursos extras, mas isso seria um "bônus", não o foco! Entenda que o uso de recursos mais avançados tende para servi para facilitar a implementação caso fosse feito com os mais básicos, ou seja, entender o simples antes ajuda a dominar melhor o avançado... ;)

 

Por exemplo, uma das utilidades do vetores é facilitar a implementação do uso de variáveis simples repetidas... é muito mais prático usar um vetor de nomes, do que criar um monte de variáveis simples, como nome1, nome2, nome3... com os vetores, usando um índice e um laço de repetição tudo fica bem simples, mas é interessante entende que "vetor veio para facilitar".

 

 

 

3#

Veja, a ÚNICA coisa que muda é que não vai usar o pow(), correto?

 

Vide:

7 minutos atrás, brun0tf disse:

j = pow(x,i);

 

Ou seja, nesse momento do código você precisa fazer que j seja igual ao que pow(x,i) resultaria!

 

Perceba que o código que o seu professor sugeriu a fazer faz o que o j precisa, ou seja, "tem um pow() implementado lá"... apenas use no seu código.

 

 

***

 

No aguardo.

 

 

 

 

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado (editado)

Faça uma função:

double potencia(double x, int exp) {

Que calcula a potência, e usa-a no mesmo lugar onde usa pow no primeiro programa.

 

 

adicionado 3 minutos depois

Sobre indentação, existe a opção de usar algo para indentar o código automaticamente, como esse site:

https://www.tutorialspoint.com/online_c_formatter.htm

(Cole o código no lado esquerdo, e depois clique em Beautify e o código será "embelezado" no lado direito. :lol:)

Editado por isrnick
  • Curtir 2
  • Haha 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado (editado)

@Simon Viegas  Minha dúvida desde o começo é como usar esse pow, to a um tempo tentando mas continuo perdido kkk

Entendo que tenho que por uma variavel que faça a função de pow, foi o que fiz no primeiro código do tópico, no entanto acredito que esse exercício seja mais complexo, porque o valor da potência muda de acordo com o valor do n.

#include <stdio.h>
int main()
{
 int x, n, res, soma=0, y=1;
     printf ("diga o x");
     scanf ("%d", &x);
     printf ("diga o numero de termos");
     scanf ("%d", &n);
    
    if (n%2==0){
        for (int cont=1; cont<=n; cont++){
           y = y*x;
           printf ("%d\n", y); //esse printf explicita o meu erro
                                         }
        
        for (int i=2; i<=n; i=i+2){
           res=i*y;
           soma = soma + res;
           printf ("%d*%d=%d\n", i,y,res);
                                  }
           printf ("\nSomatorio=%d\n", soma);

               }
    else {printf ("Numero de termos ímpar");}
    return 0;
}

 

adicionado 3 minutos depois

@isrnick Talvez seja mas fácil usar função mesmo, mas esse é um exercício do meu curso, onde ainda não vimos função, então meu professor nao autorizou o uso desse recurso

Editado por brun0tf

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado (editado)

Certo se eu entendo, parte do problema é o procedimento pow.

será que é isso que buscas.

Spoiler

#include <stdio.h>

int main(void) {
  float x; //base do potência
  float pote; //valor da potência
  int   n; //expoente positivo

    x = 2;
    n = 3;
    pote = 1;
    //de padrão sempre igual a 1
    int i = 0;
    while(i < n){
      pote = x * pote;
      ++i;
    }

    printf("%s%g\n", "Potencia: ", pote);
    //resposta igual: 2^3 = 8
    //tenta para mais valores base^expo
  return 0;
}

 

adicionado 4 minutos depois
11 horas atrás, brun0tf disse:

Minha dúvida desde o começo é como usar esse pow

Ah não! Agora entendo melhor, :lol:.

Fica pelo menos como outra forma de presentar o procedimento.

 

:thumbsup:

 

Editado por AnsiC
Correção

Compartilhar este post


Link para o post
Compartilhar em outros sites
11 horas atrás, brun0tf disse:

@isrnick Talvez seja mas fácil usar função mesmo, mas esse é um exercício do meu curso, onde ainda não vimos função, então meu professor nao autorizou o uso desse recurso

 

Por favor, leia o que eu disse no item 3# da minha postagem anterior.

 

 

 

 

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






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

×