Ir ao conteúdo
  • Cadastre-se

Problema. mdc de dois ou mais números


fernandel9

Posts recomendados

Olá pessoal do fórum. Estou com dificuldades com uma atividade prática da minha faculdade. O professor quer um programa que calcule o mdc de dois ou mais números, e também liste todos os divisores comuns entre esses números. Já consegui fazer um algoritmo que calcule de dois numeros apenas. Mas com mais de dois numeros está difícil. 

 

Segue a proposta: 
 

Em qualquer linguagem de programação, implementar um algoritmo que, dadas duas ou mais entradas pelo usuário, apresente o MDC entre estes valores e o conjunto de todos os divisores dos valores inseridos como entrada, e salve esse resultado em arquivo .txt (o MDC em uma linha e o conjunto de divisores na linha seguinte). 

Uma vez criado, o arquivo de saída sempre deverá ser incrementado, nunca substituído. 

Segue o meu código que até o momento só salva os números do usuário em um vetor:
 

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

int main()
{
    printf("\t\t\tMDC de dois ou mais numeros\n\n"); /*Titulo */

    int y = 0, resto, divisor, dividendo, x; /*Inicializacao de var's*/

    printf("Com quantos numeros deseja trabalhar?  ");
    scanf("%d", &x); /*Guardando quantidade de numeros que o usuario deseja*/
    int numeros[x+1];
    if(x < 2) /*Um if para verificar erro se for menos que dois numeros*/
    {
        printf("\né dois ou mais numero filhao. Tente novamente!\n");
    }else
    {
        /*A seguir um for para perguntar ao usuario os numeros e salvar no vetor*/
        for(int z = 0, cont = 1, y = x; cont!=y+1 ;cont++, z++)
        {
            printf("\nDigite o n%d: ", cont);
            scanf("%d", &numeros[z]);
        }
    }
    return 0;
}

Qualquer ajuda é bem-vinda. Grato.

Link para o comentário
Compartilhar em outros sites

Para salvar em um arquivo, utilize a seguinte logica:

1-você precisa saber se o arquivo existe ou não, senão criar ele.

2-Apos criar ele para salvar os dados, você vai ter que fecha-lo e abri-lo no modo "a" que vai dar a possibilidade de sempre 'incrementar' um arquivo, sem apagar os dados anteriores.

 

Exemplo de criação e salvamento de arquivo, lembrando que se você fechar o programa enquanto o arquivo não for fechado, os dados são perdidos:

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


bool criar_arquivo(const char *);
bool incrementar_arquivo(FILE *,const char *);

///@brief Funcao principal
int main(void)
{
    FILE *fp = NULL;
    char tmp[128];
    tmp[0]='\0';

    //criar arquivo
    while(1){
        system("cls");
        printf("\nDigite o nome do arquivo:");
        gets(tmp);
        if(!criar_arquivo(tmp)){
            printf("Digite um nome de arquivo inexistente!\n");
            getchar();
        }else break;
    }

    //implementar arquivo
    fp = fopen(tmp,"a");
    while(1){
        system("cls");
        printf("\nDigite um texto ou SALVAR p/ salvar o arquivo:");
        gets(tmp);

        if(strcmp(tmp,"SALVAR") == 0)break;
        if(!incrementar_arquivo(fp,tmp)){
            printf("Falha ao adicionar texto ao arquivo: %s!\n",fp->_tmpfname);
            getchar();
            break;
        }
    }
    fclose(fp);
    return 0;
}

///@brief Funcao para incrementar uma linha a um arquivo aberto
bool incrementar_arquivo(FILE *file,const char *text){
    if(file == NULL){
        return false;
    }
    fprintf(file,"%s\n",text);
    return true;
}

///@brief Funcao para criar arquivo se nao existir
bool criar_arquivo(const char *arquivo){
    FILE *fp = NULL;
    fp = fopen(arquivo,"w");
    if(!fp){
        return false;
    }
    fclose(fp);
    return true;
}

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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