Ir ao conteúdo

Posts recomendados

Postado

<Bom dia pessoal, o meu código ficou dessa forma, mas o professor pediu para pensar mais um pouco nos vectores o que não entendi propriamente, podem ajudar-me com ele?

#include <stdio.h>
#include <stdlib.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

	//Multiplo(int y,int cont,int soma,int contmult);

int main(int argc, char *argv[]) {
	int y;
	printf("\n\n");
	printf("\t\t\t---------------------------------------------------------\n");
	printf("\t\t\t PROGRAMA QUE IMPRIME MULTIPLOS DE 12 ATE SER DIGITADO 0\n");
	printf("\t\t\t---------------------------------------------------------\n\n");
	
	Multiplo(y);
	
	return 0;
}
	Multiplo(int y){
		int cont=0,soma=0,contmult=0,resp=0;
		
		do{
		y=1;
		cont=0;
		soma=0;
		resp=0;
		for(y;y!=0;y){
		if(y!=0){
			printf("\t\t\tPor favor insira um numero:");
			scanf("%d",&y);
			cont=cont+1;
			soma=soma+y;
			if(y%12==0)
			{
				printf("\t\t\tE multiplo de 12\n");
				contmult=contmult+1;
			}
			else if(y%12!=0)
			 {
			 	printf("\t\t\tNao e multiplo 12\n");
			 }
			else
			{
				printf("Numero invalido");
			} 
		}
	}
	printf("\n\t\t\t\t\t-----------\n");
	printf("\t\t\t\t\t MENSAGENS\n");
	printf("\t\t\t\t\t-----------\n");
	printf("\n\t\t\tForam digitados %d multiplos de 12\n",contmult);
	contmult=0;
	printf("\t\t\tTotal de numeros inseridos: %d\n",cont);
	cont=0;
	printf("\t\t\tSoma dos numeros inseridos: %d\n",soma);
	soma=0;
	printf("\n\n\t\t\tDeseja executar o programa novamente?");
	printf("\n\t\t\tPor favor digite:\n\t\t\t0 - NAO\n\t\t\t1 - SIM");
	printf("\n\t\t\tResposta:");
	scanf("%d",&resp);
	printf("\n");
	}while(resp==1);
	printf("\n");
	if(resp==0)
	{
		printf("\t\t\t\tPROGRAMA ENCERRADO");
		printf("\n\t\t\t\t------------------\n");
	}	
	else
	{
		printf("\t\t\tResposta invalida");
	}
}

 

  • Curtir 1
Postado

Coloque as funções secundparias antes da função main().

Escreva uma função para imprimir o cabeçalho.

Escreva uma função para fazer apenas o cálculo.

Escreve uma função que faça o laço do..while e exiba o resultado. Nessa função o programa deve pedir o número repetidamente para refazer o cálculo, mas quando digitar 0 ele se encerra.

E essa parte de baixo, depois da função Multiplo() está toda errada.

Cada passo do programa deve ter uma função diferente, assim ele fica organizado.

 

  • Curtir 2
Postado
5 horas atrás, Martinho Sinatra disse:

pensar mais um pouco nos vectores o que não entendi propriamente

De fato existem muitas situações aqui para usar vetores e quem sabe melhora a apresentação do código. Ainda é pedido os múltiplos de 12 em vetor.

  • Curtir 1
Postado

@Martinho Sinatra     seu código está bom , precisa colocar as funções no lugar certo ,  e se é com vetores então precisa usar um vetor , então seu código com algumas modificações poderia ser assim  :

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
/*             0     1    2     3   4      5      6      7         8  */
typedef enum{black,blue,green,cyan,red,magenta,brown,lightgray,darkgray,   /* nome das cores */
lightblue,lightgreen,lightcyan,lightred,lightmagenta,yellow,white} colors;
/*  9         10         11        12        13         14    15 */

static int __BACKGROUND = 1/*BLACK*/;/*pode ser o numero ou o nome da cor*/
static int __FOREGROUND = lightgray;

void textcolor_2 (int letras, int fundo){/*para mudar a cor de fundo mude o background*/
    __FOREGROUND = letras;
    __BACKGROUND = fundo;
    SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),
    letras + (__BACKGROUND << 4));
}
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

	//Multiplo(int y,int cont,int soma,int contmult);
void Multiplo(int y,int vet[]){/* faltou o tipo da função pode ser void int char ect... */
    int cont,soma,contmult,resp=0,num,j;
    textcolor_2(14,0);
    do{
        cont=0;
        soma=0;
        contmult=0;
        do{
            printf("\t\t\tPor favor insira um numero:");
            scanf("%d",&num);
            soma=soma+num;
            if(num!= 0){
                if(num>=0)vet[cont]=num;/* se não pode números negativos */
                cont++;
			   if(num % 12 == 0 )
			    {
				    printf("\t\t\t%d Eh multiplo de 12\n",num);
				   contmult=contmult+1;
			    }
			    else{
                    if(y%12!=0)
			        {
                        printf("\t\t\t%d Nao eh multiplo 12\n",num);
			        }
			        else{
                        if(num<0)/* números negativos */
                        {
                            printf("Numero invalido");
                        }
			        }
			    }
		    }
        }while(num != 0);
        printf("\n");
        textcolor_2(10,0);
        printf("\n\t\t\t\t-----------\n");
        printf("\t\t\t\t MENSAGENS\n");
        printf("\t\t\t\t-----------\n");
        printf("\t\t\tAqui estão os numeros inseridos\n\t\t\t");
        for(j=0;j<cont;j++)printf("%d ",vet[j]);printf("\n");
        printf("\n\t\t\tForam digitados %d multiplos de 12\n",contmult);
        printf("\t\t\tTotal de numeros inseridos: %d\n",cont);
        printf("\t\t\tSoma dos numeros inseridos: %d\n",soma);
        printf("\t\t\t\tPROGRAMA ENCERRADO");
        printf("\n\t\t\t\t------------------\n");
        textcolor_2(11,0);
        printf("\n\n\t\t\tDeseja executar o programa novamente?");
        printf("\n\t\t\tPor favor digite:\n\t\t\t0 - NAO\n\t\t\t1 - SIM");
        printf("\n\t\t\tResposta : ");
        scanf("%d",&resp);
        printf("\n");
	}while(resp==1);
}
int main(){
    int y,meu_vetor[1000];
    printf("\n\n");
    printf("\t\t---------------------------------------------------------\n");
    printf("\t\t PROGRAMA QUE IMPRIME MULTIPLOS DE 12 ATE SER DIGITADO 0\n");
    printf("\t\t---------------------------------------------------------\n\n");

    Multiplo(y,meu_vetor);
    textcolor_2(15,12);
    return 0;
}

 

  • Curtir 2
Postado
20 horas atrás, Martinho Sinatra disse:

podes apresentar a tua solução em codigo por favor?

Vamos lá então, ele pede para imprimir num vector os múltiplos de 12 ate ser digitador 0. Logo o tamanho t do vetor é arbitrário, pois seus elementos dependem unicamente da vontade de digitar 0, se e quando digitar com seu limite igual à memória.

Code

/* Protótipos Externos */
#include <stdio.h>
#include <stdlib.h>

/* Meus protótipos locais de função */
int* vector_add(int*, int);
void vector_shw(int*);

/* Minha Função Princial */
int main(void)
{   int *v12= NULL;
    int input= 0;
    int mult12= 12;

    while(1)
    {   printf("Digite para finalizar [0 e ENTER]: ");
        scanf("%d", &input); setbuf(stdin, NULL);

        if (0 == input) break;

        v12= vector_add(v12, mult12);
        mult12 += 12;

        system("cls");
        vector_shw(v12);
    }
    puts("Fim.");
    return EXIT_SUCCESS;
}

/* Minhas funções locais definidas */
int* vector_add(int* vtor, int el)
{   int* mem= NULL;
    
    if (NULL == vtor)
    {   mem= calloc(2, sizeof (int));
        mem[0]= el;
        mem[1]= 0;
        return mem;
    }

    int* index= vtor;
    while(0 != index[1]) index= ((int *)index[1]);

    mem= calloc(2, sizeof (int));

    if (NULL == mem) return vtor;
    mem[0]= el;
    mem[1]= 0;
 
    index[1]= ((int)mem);
    return vtor;
}

void vector_shw(int* vtor)
{   if (NULL != vtor)
    {   int* index= vtor;
     
        while(0 != index[1])
        {   printf("%d; ", index[0]);
            index= ((int *)index[1]);
        }
     
        printf("%d; ", index[0]);
        printf("\b\b \n");
    }
}

 

  • Curtir 2

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

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!