• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Dar3_D3vil

Help is needed

9 mensagens neste tópico

Um ângulo é medido em termos de graus (º) minutos(´) e de segundos(“). Desenvolva um programa que efectue a leitura de dois ângulos positivos e calcule a respectiva soma. Descreva o algoritmo que vai utilizar na soma dos ângulos.

Exemplo: 5º 54’ 10” + 6º 2’ 51” = 11º 57’ 1”

N sei pk mas n sai do ciclo :S Se virem o erro agradecia k me explicaxem.

Obrigadao e desculpem.

Ja é o segundo hj.

Este é o codigo:

/* somador de graus */

#include <stdio.h>

int main (void) {

int g1;
int g2;
int m1;
int m2;
float s1;
float s2;
int g;
int m;
float s;
int i;
int j;


printf("Introduza o valor dos graus do primeiro angulo\n");
scanf("%d",&g1);
printf("Introduza o valor dos graus do segundo angulo\n");
scanf("%d",&g2);

printf("Introduza o valor dos minutos do primeiro angulo\n");
scanf("%d",&m1);
printf("Introduza o valor dos minutos do segundo angulo\n");
scanf("%d",&m2);

printf("Introduza o valor dos segundos do primeiro angulo\n");
scanf("%f",&s1);
printf("Introduza o valor dos segundos do segundo angulo\n");
scanf("%f",&s2);

s = s1 +s2;
while (s >= 60) {
	s - 60;
	i++;
}
m = m1 + m2 + i;
while (m >= 60) {
	m - 60;
	j++;
}
g = g1 + g2 + j;

printf(" A soma dos ângulos é %dº %d' %f''\n", g, m, s);
return 0;
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

s = s1 +s2; 
  while (s >= 60) { 
     s - 60; 
     i++; 
  } 

Nao esta a fazer atribuicao da variavel....

nao é:

s - 60;

quando fazes isto nao esta a fazer uma atribuição

é:

s= s- 60;

porranto o ciclo fica:

s = s1 +s2; 
  while (s >= 60) { 
     s = s - 60; 
     i++; 
  } 

e repetes o mesmo para o ciclo seguinte

nao testei o resto do algoritmo mas o problema da condicao do while e este

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

desculpem a ignorancia mas como é que Exemplo: 5º 54’ 10” + 6º 2’ 51” = 11º 57’ 1”

dá esse valor?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

gurzi somas da esquerda para a direita tendo em atencao que o numero maximo e 59 (0-59 = 60 segundos).

assim 10 + 51 = 61 > 59 portanto = 01

passa uma unidade para os minutos que ficam

54 + 02 + 1 = 57

e finalmente os graus 6 + 5 = 11.

no final 11º 57' 1''

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

/* somador de graus */ 

#include <stdio.h> 

typedef struct
{
int graus;
int minutos;
int segundos;
} ANGULO;

int main (void) { 

  ANGULO a;
  ANGULO b;
  ANGULO c;

  printf("Introduza o valor dos graus do primeiro angulo\n"); 
  scanf(" %d",&a.graus); 
  printf("Introduza o valor dos graus do segundo angulo\n"); 
  scanf(" %d",&b.graus); 

  printf("Introduza o valor dos minutos do primeiro angulo\n"); 
  scanf(" %d",&a.minutos); 
  printf("Introduza o valor dos minutos do segundo angulo\n"); 
  scanf(" %d",&b.minutos); 

  printf("Introduza o valor dos segundos do primeiro angulo\n"); 
  scanf(" %d",&a.segundos); 
  printf("Introduza o valor dos segundos do segundo angulo\n"); 
  scanf(" %d",&b.segundos); 


  if((a.segundos + b.segundos) >= 60)
  {
c.segundos = (a.segundos+b.segundos) - 60;
c.minutos = 1;
  }

else

   c.segundos = a.segundos + b.segundos;

  if((a.minutos+b.minutos+c.minutos) >= 60)
  {
c.minutos = (a.minutos + b.minutos + c.minutos) - 60;
c.graus = 1;
  }
else

   c.minutos = a.minutos + b.minutos + c.minutos;

  c.graus = c.graus + b.graus + a.graus;

  printf(" A soma dos angulos e' %do %dm %ds \n", c.graus, c.minutos, c.segundos); 
  return 0; 
} 

e mais n digo... o redhat fala pouco mas qdo fala, fala a serio

testado com as flags -Wall ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

#include <stdio.h>

typedef struct
{
  int graus;
  int minutos;
  int segundos;
} ANGULO; 

int main(){

int i, seg_totais=0, min_totais=0, graus_totais=0;
ANGULO angulos[2];
ANGULO novo_angulo;

for(i=0;i<2;i++){
	printf("Introduza o valor em graus do %dº angulo\n",i+1);
	scanf("%d",&angulos[i].graus);
	printf("Introduza o valor em minutos do %dº angulo\n",i+1);
	scanf("%d",&angulos[i].minutos);
	printf("Introduza o valor em segundos do %dº angulo\n",i+1);
	scanf("%d",&angulos[i].segundos);
}

for(i=0;i<2;i++){
	seg_totais += angulos[i].segundos;
	min_totais += angulos[i].minutos;
	graus_totais += angulos[i].graus;
}

novo_angulo.segundos = seg_totais%60;
novo_angulo.minutos = (min_totais+seg_totais/60)%60;
novo_angulo.graus = (graus_totais+(min_totais+seg_totais/60)/60)%360;

printf("A soma dos ângulos é %dº %d' %d''\n", novo_angulo.graus, novo_angulo.minutos, novo_angulo.segundos); 
return 0;
}

acho que assim o código fica mais curto.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Só para relembrar o pessoal que quando querem ter uma especie de array em anel, isto é, recomeçar quando chega ao fim devem/podem utilizar o resto da divisão que faz a passagem automaticamente. Tem o exemplo de cima que foi testado e funciona.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

nunca me dei bem com esses %60 e %360 que puseste... =) mas sim, funciona =)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora