C++ repetição (laço)

273 views
Skip to first unread message

GamerX BR

unread,
May 22, 2013, 12:45:47 AM5/22/13
to DeAlunoP...@googlegroups.com
olá pessoal,estou resolvendo um problema em C++,estou utilizando repetição para a solução do mesmo,mais como ainda vou aprender repetição no meu curso,acho que estou fazendo algo errado,abaixo colocarei a questão e o meu codígo :
"criar um algoritmo que leia uma base e um expoente e apresente na tela o valor da potencia da base pelo expoente,considere apenas a entrada de valores inteiros e positivos e maiores que zero,não utilizar qualquer função para calcular a potência,use para a solução deste problema estrutura de repetição (laço)"

meu algoritmo esta assim até agora :
#include <stdio.h>
#include <stdlib.h>
int main () {

int base,expo, x, r,resultado;
x=0;
printf("digite a base:");
scanf("%d", &base);
printf("digite o expoente");
scanf("%d", &expo);
base = r;
for (x=1;x<=expo;x++);

{


r=(r*base);

printf("resultado: %d\n", &r);

}
printf("resultado : %d\n", &resultado);
system("pause");
}
lembrando que ainda não tive aulas de repetição,tentei fazer após ver alguns videos e não deu certo,nem sei sê nesse caso devo usar for como utilizei no algoritmo,ou é melhor usar while,ou DO WHILE,caso alguem tiver uma dica ou resolução desse problema,da um help ai..kkk
desde já,obrigado.

Ítalo Grossi

unread,
May 22, 2013, 5:23:21 PM5/22/13
to DeAlunoP...@googlegroups.com
opa.. falaí cara..

vou te dar alguns toques no código aí você veja se consegue alterar o código pra fazer funcionar.. se não der certo só postar aqui de novo.

o ciclo for está quase certo mas você não precisa colocar ponto e virgula depois do parênteses.
Então seria:

int i;
for(i = 0; i < 5; ++i){
   
//faca alguma coisa aqui
}

Perceba que em C você não pode definir uma variável X para ter o valor de uma outra variável Y sem que a variável X já tenha um valor.
No seu código você diz que:

base = r;


Mas "r" ainda não tem um valor especificado. Isso não é possível fazer.

A função printf também está quase certa mas tem um pequeno detalhe errado. Você não precisa colocar aquele "&" no printf ...

Então em vez de fazer:

printf("resultado : %d\n", &resultado);

Você faz apenas:
printf("resultado : %d\n", resultado);


Um outro problema é que resultado não tem um valor..
Então quando você chama a função printf pra imprimir a variavel resultado você irá receber um erro pois "resultado" não tem nenhum valor especificado.

Dê uma olhada nas primeiras 15 vídeo aulas no Youtube.. Deve ser o suficiente pra esclarecer esses pequenos detalhes.
LInk é esse aqui ->http://goo.gl/72Cu2

Flws!

GamerX BR

unread,
May 31, 2013, 6:13:07 PM5/31/13
to DeAlunoP...@googlegroups.com
então ítalo,ja tive duas aulas de repetição mais não aprendi o comando for por enquanto, e sim While, então meu codigo sobre potencia, atualizado ,usando while fico assim :
 
#include <stdio.h>
#include <stdlib.h>
 
main () {
   
 int potencia,numero,resultado;
 
 printf ("Numero a ser elevado: ");
 
scanf ("%d",&numero);
 
printf ("Potencia: ");
 
scanf("%d", &potencia);
 
resultado = numero;
 
while (potencia != 1) {
  
resultado = resultado*numero;
 
potencia--;
 }
 
printf   ("Resultado: %d\n",resultado);
 
system  ("pause");
}
 
 
ao menos o algoritmo esta executando da maneira desejada,agora só estava querendo dar uma incrementada nele,estava tentando colocar um IF para caso o usuario digitar um numero menor que zero,ou seja um numero negativo,apresentar na tela "entrada invalida" mais aparece isso na tela e o algoritmo continua correndo,queria que ele parace caso o usuario digitar um valor menor que zero,ou até mesmo digitar um valor real (float) mais não tenho muitas ideias de como isso iria ficar,ou sê mesmo é possivel fazer isso nesse algoritmo,caso você tiver alguma sugestão de como poderia ficar eu agradeço. Vlw
 

Ítalo Grossi

unread,
Jun 1, 2013, 11:55:09 AM6/1/13
to
Bacana.. vamos quebrar esse problema em partes..

1 - Para você implementar um código que verifique se o número digitado é positivo ou negativo é simples.
A lógica seria essa:

int i = 10;


if(i < 0){
    printf
("Vaor e negativa");
} else{
    printf
("Valor e negativo.");
}

Dê uma olhada nesse vídeo aqui também.

Já a parte de controlar se o valor é decimal não é tão simples mas a idéia é.

1- Ler os valor como uma String
2- Verificar se os caracteres da string são apenas números
3 - Caso sim fazer a conversão da string em número inteiro

char s[MAXIMO];

fgets
(s, sizeof(s), stdin);
valido
= TRUE;
for (i = 0; i < strlen(s); ++i)
{
   
if (!isdigit(s[i]))
   
{
        valido
= FALSE;
       
break;
   
}
}

No código acima se em algum momento o valor o caractere da sting não for um dígito a variável boolean valido é jogada como falsa e assim você sabe que o usuário digitou não foi apenas dígitos.. por exemplo uma vírgula.

Eu não sei o quanto você já viu da Linguagem mas se você começou agora esse código para verificar se os valores são apenas dígitos vai ser um pouco puxado e talvez seja melhor esperar um pouquinho pra coloca-lo no seu código.

Reply all
Reply to author
Forward
0 new messages