Ir ao conteúdo

Posts recomendados

Postado

Eu preciso de ajuda, alguém pode me dar ideias sobre como fazer este programa? por favor 

Um programa que leia os valores do teclado e os coloque em uma pilha ou fila de acordo com as seguintes condições: os números primos devem ser colocados na pilha, os outros vão para a fila. No final, você deve remover todos os elementos das duas estruturas e apresentar a soma de todos eles.

  • Amei 1
Postado
6 horas atrás, MimiYari disse:

Um programa que leia os valores do teclado e os coloque em uma pilha ou fila de acordo com as seguintes condições: os números primos devem ser colocados na pilha, os outros vão para a fila. No final, você deve remover todos os elementos das duas estruturas e apresentar a soma de todos eles

 

Você já descreveu seu programa.

 

A linguagem tem pilha e fila. Basta declarar. stack e quue e tem todos os métodos de que precisa. Se não pode usar as funções da linguagem apenas copie os métodos. Igualzinho. Documentados em aqui, por exemplo

 

Precisa de uma função para identificar um número primo.

 

Um iterador na entrada padrão pode ler os números do teclado.

 

Remover os elementos e apresentar a soma pode ser um for_each até a pilha estar vazia e depois a fila estar vazia. Ao retirar um elemento soma.

 

Ao final mostra o total.

  • Curtir 1
  • Obrigado 1
Postado
Em 05/07/2022 às 17:46, MimiYari disse:

Eu preciso de ajuda, alguém pode me dar ideias sobre como fazer este programa? por favor 

Um programa que leia os valores do teclado e os coloque em uma pilha ou fila de acordo com as seguintes condições: os números primos devem ser colocados na pilha, os outros vão para a fila. No final, você deve remover todos os elementos das duas estruturas e apresentar a soma de todos eles. 

"como posso dempilhar y desemfilar"?

🤯

#include <iostream>
#include<stdio.h>
#include<locale.h>
using namespace std;


int verificarPrimos(int num){
    int i, divisores;

    if(num > 1){

        divisores = 0;
        for(i=1;i<=num;i++){
            if(num % i== 0) divisores ++;
        }
        if (divisores == 2)
            return 1;
        else
            return 0;
            }
            else
                return 0;

}
//fila

#define tamanho 5

//define a estrutura que será a fila
//a estrutura armazena a indicação do inicio e final da fila e um vetor com os itens (valores) da fila
typedef struct{
    int ini = 0;
    int fim = 0;
    int item [tamanho] ;
} FILA;

//retorna se a fila está vazia ou não
bool filaVazia(FILA p){
    if(p.ini == p.fim) {
        return true;
    } else {
        return false;
    }
}

//retorna se a fila está cheia ou não
bool filaCheia(FILA p) {
    int tam = sizeof(p.item)/sizeof(int); //determina o tamanho do vetor

    if (p.fim < tam) {
        return false;
    } else {
        return true;
    }
}

//adiciona valor na fila
void enfilera(FILA &p, int x){
    p.item[p.fim++] = x;
}

//remove valor da fila
int desenfilera(FILA &p){
    return (p.item[p.ini++]) ;
}

//mostra os valores armazenados na fila
void mostraFila(FILA p) {
    cout << "Valores da fila: ";
    for (int i = p.ini; i < p.fim; i++) {
        cout << p.item[i] << " ";
    }
    cout << "\n";
}

//pilha
//define a estrutura que será a pilha

typedef struct{
      int topo = 0;
      int item [tamanho] ;
} PILHA;

//retorna se a pilha está vazia ou não
bool pilhaVazia(PILHA p){
    if(p.topo == 0) {
        return true;
    } else {
        return false;
    }
}

//retorna se a pilha está cheia ou não
bool pilhaCheia(PILHA p) {
    int tam = sizeof(p.item)/sizeof(int); //determina o tamanho do vetor

    if (p.topo < tam) {
        return false;
    } else {
        return true;
    }
}

//adiciona valor na pilha
void empilha(PILHA &p, int x){
    p.item[p.topo++]=x;
}

//remove valor da pilha
int desempilha(PILHA &p){
    return (p.item[--p.topo]) ;
}

//mostra os valores armazenados na pilha
void mostraPilha(PILHA p) {
    cout << "Valores da pilha: ";
    for (int i = 0; i < p.topo; i++) {
        cout << p.item[i] << " ";
    }
    cout << "\n";
}


int main(){
    setlocale(LC_ALL, "portuguese");
    char continuar;
    int num, resultado;
    FILA f; //criar a fila
    PILHA p; //criar a pilha
    do{


        printf("\n\nDigite um numero: ");
        scanf("%d",&num);

        resultado = verificarPrimos(num);
        if (resultado==1)
            empilha(p,num);
        else
            enfilera(f,num);
        printf("\n\nDeseja continuar? (s/n): ");
        scanf(" %c", &continuar);

    }
    while ( continuar == 'S'|| continuar == 's');

    mostraFila(f);
    mostraPilha(p);

    while(fila){ ! filavazia (f)
        
    }
       soma = soma + desenfilera();
       
    while(pilha){ ! pilhavazia (p)
        
    }
      soma = soma+ desempilha();
      
    printf ("resultado");

    return 0;

  • Curtir 1
Postado
1 hora atrás, MimiYari disse:

for(i=1;i<=num;i++){

 

? não precisa testar até o próprio número... Conforme aumenta um divisor de um número o outro diminui certo? pode parar quando i*i for maior que num. DEVE parar, imagino. Ou vai perder alguma nota.

 

1 hora atrás, MimiYari disse:

      if (divisores == 2)
            return 1;
        else
            return 0;
            }
            else
                return 0;

 

Evite isso. Deve te custar nota também. Não há muito sentido em else depois de return

 

O seu programa parece C e não C++.

 

Para que stdio.h? E se precisa mesmo deveria usar cstdio, é a conveção.

 

Não pode usar stack e queue da própria STL como eu te falei?

 

E se não pode escreva uma classe pilha e outra fila. E use os mesmos nomes da linguagem. Porque? porque assim pode testar seu programa com as funções que já existem e depois trocar pelas que vai ter que escrever, se precisa mesmo fazer isso.

  • Curtir 1

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!