Ir ao conteúdo
  • Cadastre-se
Martinho Sinatra

C Escrever um programa que imprime múltiplos de 12 em um vector até ser digitado 0

Posts recomendados

<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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que o professor quer que salve o resultado em um vetor e imprima o vetor depois.

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

@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

Compartilhar este post


Link para o post
Compartilhar em outros sites
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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: minicurso “Como ganhar dinheiro montando computadores”

Gabriel TorresGabriel Torres, fundador e editor executivo do Clube do Hardware, acaba de lançar um minicurso totalmente gratuito: "Como ganhar dinheiro montando computadores".

Você aprenderá sobre o quanto pode ganhar, como cobrar, como lidar com a concorrência, como se tornar um profissional altamente qualificado e muito mais!

Inscreva-se agora!