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

St.NC

Dúvida Projecto Época Especial - Erro LCC

6 mensagens neste tópico

Tou com um pequeno problema (que provavelmente até é de fácil resolução) mas cá vai...

O LCC dá-me um erro quando corro este programa não sei muito bem porque.

Aqui fica o código.

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void apresentarMenuPrincipal(void);
void apresentarMenuOpera(void);
void apresentarMenuMat(void);
void apresentarMenuMatrizes(void);
float harmonicos(void);
int multquatro(void);
int somadivtres(void);


int main(void)
{
int opt=0;
int opti=0;

apresentarMenuPrincipal(void);
scanf("%d",opt);

if(opt==1)
	{
		apresentarMenuOpera();
			opti=getchar();

			if(opti=1)
				harmonicos();
			if(opti=2)
				multquatro();
			if(opti=3)
				somadivtres();
			if(opti=4)
				apresentarMenuPrincipal();
	}

if(opt==2)
	{apresentarMenuMat();}
if(opt==3)
	{apresentarMenuMatrizes();}



getchar();
return 0;
}

void apresentarMenuPrincipal(void)
{
system("cls");

printf("\n\nEscolha uma das seguintes opcoes\n\n\n");
printf("1 - Operacoes de impressao, contadores e acumuladores\n\n");
printf("2 - Algumas funcoes matematicas\n\n");
printf("3 - Vectores e Matrizes\n\n");
printf("4 - Terminar o programa\n\n");
printf("\t\t Opcao escolhida:   ");
}
void apresentarMenuOpera(void)
{
system("cls");
printf("\n\nBem-vindo ao menu de Operacoes de impressao, contadores e acumuladores\n\n");
printf("Escolha uma das seguintes opcoes\n\n");
printf("1 - Imprimir x valores harmonicos\n\n");
printf("2 - Contar todos os multiplos de 4 menores que um dado valor inteiro\n\n");
printf("3 - Fazer o somatorio de todos os numeros divisiveis por 3 menores que um dado valor\n\n");
printf("4 - Voltar ao menu anterior\n\n");
printf("\t\t Opcao escolhida:   ");
}
void apresentarMenuMat(void)
{
system("cls");
printf("\n\nBem-vindo ao menu de funcoes matematicas\n\n");
printf("1 - Determinar a funcao caracteristica do predicado P(n) = n e um quadrado perfeito\n\n");
printf("2 - Determinar o factorial de um numero, inteiro nao negativo inserido pelo utilizador\n\n");
printf("3 - Descobrir o maximo divisor comum de dois numeros inteiros positivos\n\n");
printf("4 - Voltar ao menu anterior\n\n");
printf("\t\t Opcao escolhida:   ");
}
void apresentarMenuMatrizes(void)
{
system("cls");
printf("\n\nBem-vindo ao menu de Vectores e Matrizes\n\n");
printf("1 - Inserir e/ou mostrar dados de um vector ou de uma matriz\n\n");
printf("2 - Determinar o vector diferenca para a media de um vector\n\n");
printf("3 - Determinar se uma matriz quadrada e simetrica\n\n");
printf("4 - Voltar ao menu anterior\n\n");
printf("\t\t Opcao escolhida:   ");
}
float harmonicos(void)
{
system("cls");
int num=0;
float temp=0.0;
printf("Introduza o limite(x) de valores harmonicos que pretende");
scanf("%d",num);
if(num<=0)
	printf("Introduziu um limite invalido");
else
	{
		for(int i=0; i<=num;i++)
			temp=temp+1/i;
			printf("%f", temp);

	}
return 0;
}

int multquatro(void)
{
system("cls");
int num=0;
int cont=0;
printf("Introduza o limite para a contagem dos multiplos de 4\n");
scanf("%d", num);
if (num<=0)
	printf("O numero que introduziu nao e um limite valido\n");
else
	{
		for(int i=0; i<=num; i++)
			{
				if(num%4)
					cont++;
			}
	}
	printf("O total de multiplos de quatro do numero que introduziu é %d",cont);
	return 0;
}

int somadivtres(void)
{
system("cls");
int num=0;
int acumula=0;

printf("Introduza o limite para a soma dos divisores de 3\n");
scanf("%d", num);
		if(num<=0)
			printf("O numero que introduziu nao e um limite valido\n");
		for(int i=0; i<=num; i++)
			{
				if(num%3)
					acumula+=i;
			}
			printf("A soma dos divisores de 3 e igual a %d", acumula);

			return 0;
}

errolcc.th.jpg

Agradecia resposta se souberem o porque deste erro.

Cumprimentos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Continuando a minha saga no projecto de programação, preciso de enteder o porque desta função fazer sair 13 quando eu introduzo 12, supostamente deveria de contar os múltiplos de 4, que assim sendo seriam 3.

void multquatro(void)
{
system("cls");
int num=0;
int cont=0;
int i=0;
printf("Introduza o limite para a contagem dos multiplos de 4\n");
scanf("%d",& num);
if (num<=0)
	printf("O numero que introduziu nao e um limite valido\n");
if(num==1)
	printf("O total de multiplos de quatro é 4");
if(num>=1)
	{
		for(i=0; i<=num; i++)
			{
				if(num%4==0)
					{
						cont=cont+1;
					}
			}
	}
	printf("O total de multiplos de quatro do numero que introduziu e %d", cont ,"\n");

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

é

if(i%4==0)

e não

if(num%4==0)

Mas os múltiplos de 4 de 0 a 12 são 4 (0,4,18,12) e não 3 (se calhar o for devia começar em 1 e não em 0, já que dizes que o 0 é inválido).

Não percebi como é que 1 é múltiplo de quatro 4 vezes mas isso é lá contigo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já tinha conseguido chegar a esse ponto, e agora já está a funcionar, tenho ideia que já tenho quase tudo resolvido.

Só me falta a parte das matrizes.

Podem fechar e obrigado a todos pela ajuda e desculpem ser tão nabo  :-[

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