Ir ao conteúdo

Posts recomendados

Postado

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
Postado

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

  • Curtir 1
Postado
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
  • Membro VIP
Postado

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
Postado

@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;}

 

  • Curtir 1
  • Membro VIP
Postado

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.

 

 

 

 

 

 

 

Postado

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:)

  • Curtir 2
  • Haha 1
Postado

@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

Postado

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:

 

  • Membro VIP
Postado
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.

 

 

 

 

 

 

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!