Ir ao conteúdo

Posts recomendados

Postado
#ifndef CONJUNTO_H
#define CONJUNTO_H

#include <QString>
#include <QMessageBox>

namespace aogcalc{
class Conjunto
{
private:
    int tamanho;
    int indiceDeUso;
    int *pArray;

    bool buscar(int elemento)const;

public:
    Conjunto(int tamanho);
    ~Conjunto();

    int getTamanho() const;
    int getIndiceDeUso() const;

    void setElemento(int elemento);
    QString getConjunto()const;



    Conjunto* uniao(Conjunto const * const objeto);
    Conjunto* intercessao(Conjunto const * const objeto);
    Conjunto* diferenca(Conjunto const * const objeto);

    bool subConjunto(Conjunto const * const objeto);
    bool eIdentico(Conjunto const * const objeto);
    bool eDisjunto(Conjunto const * const objeto);

    int calcularAmplitude()const;
    float calcularMedia()const;
    bool eVazio()const;


};
}

#endif // CONJUNTO_H

 

 

 

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <conjunto.h>
#include <QMainWindow>
#include <QMessageBox>
#include <QTableWidgetItem>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    void on_pushButtonCriarCA_clicked();

    void on_pushButtonIncluirCA_clicked();

    void on_pushButtonCriarCB_clicked();

    void on_pushButtonIncluirCB_clicked();

    void on_pushButtonUniao_clicked();

    void on_pushButtonIntercessao_clicked();

    void on_pushButtonAmB_clicked();

    void on_pushButtonBmA_clicked();

    void on_pushButtonGrid_clicked();

private:
    Ui::MainWindow *ui;
    aogcalc::Conjunto *CA;
    aogcalc::Conjunto *CB;
};
#endif // MAINWINDOW_H

 

 

 

#include "conjunto.h"
#include <QMessageBox>

namespace aogcalc{

int Conjunto::getTamanho() const
{
    return tamanho;
}

int Conjunto::getIndiceDeUso() const
{
    return indiceDeUso;
}

Conjunto::~Conjunto()
{
    delete[] pArray;
}

Conjunto::Conjunto(int tamanho): //PPV
    tamanho(0),
    indiceDeUso (0),
    pArray(0)
{
    if(tamanho<=0) throw QString("TAMANHO DO CONJUNTO NÂO PODE SER <=0");
    try{

        pArray = new int[tamanho];
        this->tamanho = tamanho;


    }   catch (std::bad_alloc &erro){
        throw QString ("Erro de Memoria");
    }


}
void Conjunto::setElemento(int elemento){

    if(indiceDeUso == tamanho)throw QString("O conjunto está cheio");
    if(buscar(elemento))throw QString("Elemento ja Existe");
    pArray[indiceDeUso]= elemento;
    indiceDeUso ++;


}
QString Conjunto::getConjunto()const{
    QString saida;
    saida= "[ ";
    for(int pos = 0 ; pos < indiceDeUso ; pos++){
        saida += QString::number(pArray[pos]);
        if(pos != indiceDeUso -1){
            saida += ", ";
        }


    }
    saida += "]";
    return saida;
}
bool Conjunto::buscar(int elemento)const{
 for(int pos = 0; pos < indiceDeUso; pos++){
     if(pArray[pos] == elemento) return true;
 }
 return false;
}
Conjunto* Conjunto::uniao(Conjunto const * const objeto){

    int tamanho = this->indiceDeUso + objeto->indiceDeUso;
    aogcalc::Conjunto *aux = new Conjunto(tamanho);

    for(int pos=0 ; pos< this->indiceDeUso; pos++){
        aux->pArray[pos] = this->pArray[pos];


}
    aux->indiceDeUso = this->indiceDeUso;
    for(int pos=0; pos<objeto->indiceDeUso ; pos++){
        if(!this->buscar(objeto->pArray[pos])){
            aux->pArray[aux->indiceDeUso] = objeto->pArray[pos];
            aux->indiceDeUso++;
        }
    }
    return aux;

}
Conjunto* Conjunto::intercessao(const Conjunto *const objeto){

    int tamanho = this->indiceDeUso + objeto->indiceDeUso;
    aogcalc::Conjunto *aux = new Conjunto(tamanho);

    for(int pos=0 ; pos< this->indiceDeUso; pos++){
        aux->pArray[pos] = this->pArray[pos];


}

    for(int pos=0; pos<objeto->indiceDeUso ; pos++){
        if(this->buscar(objeto->pArray[pos])){
            aux->pArray[aux->indiceDeUso] = objeto->pArray[pos];
            aux->indiceDeUso++;
        }
    }
    return aux;

}
Conjunto* Conjunto::diferenca(const Conjunto *const objeto){
  int tamanho = this->indiceDeUso;
  aogcalc::Conjunto *aux = new Conjunto(tamanho);
  for(int pos = 0 ; pos < this->getIndiceDeUso(); pos++){
      if(!objeto->buscar(this->pArray[pos])){

          aux->pArray[aux->indiceDeUso] = this->pArray[pos];
          aux->indiceDeUso++;
      }
  }
  return aux;
}
bool Conjunto::subConjunto(const Conjunto *const objeto){

   int k=0;
    for(int pos = 0; pos<this->getIndiceDeUso();pos++){
        if(objeto->buscar(this->pArray[pos])){
            k++;
        }
        if(k==this->indiceDeUso){
            return true;

        }
        return false;
    }
}

int Conjunto::calcularAmplitude() const{
    int maior = this->pArray[0];
    int menor = this->pArray[0];
    for(int pos = 1;pos < this->getIndiceDeUso();pos++){
        if(this->pArray[pos] > maior){
            maior = this->pArray[pos];

        }
    }
    for(int pos = 1;pos < this->getIndiceDeUso();pos++){
        if(this->pArray[pos]<menor){
            menor=this->pArray[pos];
        }
    }
    return maior-menor;

}
float Conjunto::calcularMedia() const{
    int k=0;
    for(int pos = 0; pos <this->getIndiceDeUso();pos++){
        k=k + this->pArray[pos];
    }
    return k/this->indiceDeUso;

}
bool Conjunto::eVazio() const{
    if(indiceDeUso ==0){return true;}
    return false;

}
}

 

 

 

#include "mainwindow.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

 

 

 

 

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "conjunto.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow),
      CA(0),
      CB(0)
{
    ui->setupUi(this);
    ui->lineEditSaidaCA     ->setEnabled(false);
    ui->lineEditSaidaCB     ->setEnabled(false);
    ui->pushButtonIncluirCA ->setEnabled(false);
    ui->pushButtonIncluirCB ->setEnabled(false);
    ui->lineEditIncluirCA   ->setEnabled(false);
    ui->lineEditIncluirCB   ->setEnabled(false);

}

MainWindow::~MainWindow()
{

    if(CA) delete CA;
    if(CB) delete CB;
    delete ui;
}


void MainWindow::on_pushButtonCriarCA_clicked()
{
    try{

    int tamanho = ui->lineEditTamanhoCA->text().toInt();
    CA = new aogcalc::Conjunto(tamanho);
    ui->pushButtonIncluirCA ->setEnabled (true );
    ui->lineEditIncluirCA   ->setEnabled (true );
    ui->pushButtonCriarCA   ->setEnabled (false);
    ui->lineEditTamanhoCA   ->setEnabled (false);

    }   catch(QString &erro){
        QMessageBox::information(this,"Erro de Sistema", erro);
    }   catch (std::bad_alloc&){
        QMessageBox::information(this, "Erro de sistema","Erro de Memoria");
    }


}

void MainWindow::on_pushButtonIncluirCA_clicked()
{
try{
    int elemento = ui->lineEditIncluirCA->text().toInt();

    CA->setElemento(elemento);
    ui->lineEditSaidaCA->setText(CA->getConjunto());


    }catch(QString &erro){
            QMessageBox::information(this,"Erro de Sistema", erro);
        }
    ui->lineEditIncluirCA->clear();

}

void MainWindow::on_pushButtonCriarCB_clicked()
{
    try{

    int tamanho = ui->lineEditTamanhoCB->text().toInt();
    CB = new aogcalc::Conjunto(tamanho);

    ui->pushButtonIncluirCB->setEnabled (true );
    ui->lineEditIncluirCB  ->setEnabled (true );
    ui->pushButtonCriarCB  ->setEnabled (false);
    ui->lineEditTamanhoCB  ->setEnabled (false);


    }   catch(QString &erro){
        QMessageBox::information(this,"Erro de Sistema", erro);
    }   catch (std::bad_alloc&){
        QMessageBox::information(this, "Erro de sistema","Erro de Memoria");
    }

}

void MainWindow::on_pushButtonIncluirCB_clicked()
{
    try{
        int elemento = ui->lineEditIncluirCB->text().toInt();

        CB->setElemento(elemento);
        ui->lineEditSaidaCB->setText(CB->getConjunto());
         ui->lineEditIncluirCB->clear();

        }catch(QString &erro){
                QMessageBox::information(this,"Erro de Sistema", erro);
            }

}

void MainWindow::on_pushButtonUniao_clicked()
{
    try{
        aogcalc::Conjunto *Caux = CA->uniao(CB);
        ui->labelResultado->setText("Conjunto A UNIAO com conjunto B");
        ui->lineEditResultado->setText(Caux->getConjunto());

    } catch (QString &erro){
        QMessageBox::information(this,"Erro do sistem",erro);
    }
}

void MainWindow::on_pushButtonIntercessao_clicked()
{
    try{
        aogcalc::Conjunto *Caux = CA->intercessao(CB);
        ui->labelResultado->setText("Conjunto A Intercessao com conjunto B");
        ui->lineEditResultado->setText(Caux->getConjunto());

    } catch (QString &erro){
        QMessageBox::information(this,"Erro do sistem",erro);
    }
}

void MainWindow::on_pushButtonAmB_clicked()
{

    try{
        aogcalc::Conjunto *Caux = CA->diferenca(CB);
        ui->labelResultado->setText("Conjunto A diferença com conjunto B");
        ui->lineEditResultado->setText(Caux->getConjunto());
    } catch (QString &erro){
        QMessageBox::information(this,"Erro do sistem",erro);
    }


}

void MainWindow::on_pushButtonBmA_clicked()
{
    try{
        aogcalc::Conjunto *Caux = CA->diferenca(CB);
        ui->labelResultado->setText("Conjunto B diferença com conjunto A");
        ui->lineEditResultado->setText(Caux->getConjunto());

    } catch (QString &erro){
        QMessageBox::information(this,"Erro do sistem",erro);
    }
}


void MainWindow::on_pushButtonGrid_clicked()
{
    try{
    
    
    QString Caux = CA->subConjunto(CB)->toText();
    
    QString str1 = "e SubConjunto";
    QString str2 = "Sim";
    QString str3 = "Não";



    QTableWidgetItem *item1 = new QTableWidgetItem(str1);
    QTableWidgetItem *item2 = new QTableWidgetItem(str2);
    QTableWidgetItem *item3 = new QTableWidgetItem(str3);


    int linha = ui->tableWidget->rowCount();
    ui->tableWidget->insertRow(linha);
    ui->tableWidget->setItem(linha,0,item1);

	/*
    ui->tableWidget->setItem(linha,3,item2);


    ui->tableWidget->setItem(linha,4,item3);
	*/



    str1 = "e Identico";
 
    item1 = new QTableWidgetItem(str1);

    linha = ui->tableWidget->rowCount();
    ui->tableWidget->insertRow(linha);
    ui->tableWidget->setItem(linha,0,item1);

    str1 = "Disjunto";

    item1 = new QTableWidgetItem(str1);

    linha = ui->tableWidget->rowCount();
    ui->tableWidget->insertRow(linha);
    ui->tableWidget->setItem(linha,0,item1);

    str1 = "Amplitude";

    item1 = new QTableWidgetItem(str1);

    linha = ui->tableWidget->rowCount();
    ui->tableWidget->insertRow(linha);
    ui->tableWidget->setItem(linha,0,item1);

    str1 = "Media";
 
    item1 = new QTableWidgetItem(str1);
 
    linha = ui->tableWidget->rowCount();
    ui->tableWidget->insertRow(linha);
    ui->tableWidget->setItem(linha,0,item1);


    } catch (QString &erro){
        QMessageBox::information(this,"Erro do sistem",erro);
    }
}


https://imgur.com/a/Emyc69U


É a primeira vez que eu uso um construtor que não é o padrão e eu queria ajuda para entender como que eu puxo os dados das funções sendo elas int, bool e float

no meu codigo eu 
 

  • Vetor A e Vetor B (feito)
  • Passar pelas funções (eSubConjunto, eIdentico, amplitude, media) (feito)
  • Pegar o resultado das funções converter e mostrar na grid (Não sei fazer)

 

nas outras funções eu pego o resultado da UI passo pela função e ja tenho o resultado, na qual eu mostro na tela,

ja nesses que eu estou tendo dificuldade, eu preciso usar o resultado de uma função, mandar para outra função, pegar o resultado dessa, converter para String, e mostrar na grid,

 


mas não sei como mexer com a grid ou converter para string,

a unica forma que eu conheço é direto pela UI, não pela função :
 

nameSpace::Construtor objeto;

objeto.funcao = ui->lineEdit->text().toFloat();


meu objetivo é fazer algo tipo isso:
 

if(eSubConjunto == 0){

ui->tableWidget->setItem(linha,2,item3);

}else{

ui->tableWidget->setItem(linha,2,item2);

}

void MainWindow::on_pushButtonGrid_clicked()
{
    try{
    QString str1 = "e SubConjunto";
    QString str2 = "Sim";
    QString str3 = "Não";

    QTableWidgetItem *item1 = new QTableWidgetItem(str1);
    QTableWidgetItem *item2 = new QTableWidgetItem(str2);
    QTableWidgetItem *item3 = new QTableWidgetItem(str3);

    int linha = ui->tableWidget->rowCount();
    ui->tableWidget->insertRow(linha);
    ui->tableWidget->setItem(linha,0,item1);

    if(eSubConjunto == 0){
    ui->tableWidget->setItem(linha,1,item3); // se (eSbConjunto = falso){mostrar na grid (linha=1,coluna=1 e 2)" Não ";}
      ui->tableWidget->setItem(linha,2,item3);
    }else{
    ui->tableWidget->setItem(linha,1,item2);
    ui->tableWidget->setItem(linha,2,item2); // se (eSbConjunto = Verdadeiro){mostrar na grid(linha=1,coluna=1 e 2) " sim ";}
    }

    int linha = ui->tableWidget->rowCount();
    ui->tableWidget->insertRow(linha);
    ui->tableWidget->setItem(linha,0,item1);

    if(eDisjunto == 0){
    ui->tableWidget->setItem(linha,2,item3); // se (eDisjunto = falso){mostrar na grid (linha=2,coluna=1)" Não ";}
    }else{
    ui->tableWidget->setItem(linha,2,item2); // se (eDisjunto = Verdadeiro){mostrar na grid(linha=2,coluna=1) " sim ";}
    }
    
  } catch (QString &erro){
        QMessageBox::information(this,"Erro do sistem",erro);
    
 }
}

 

 

  • Obrigado 1
Postado

@devair1010 https://www.qt.io/ é o lar dessas coisas, Qt

6 horas atrás, Cairo Alberto disse:

ja nesses que eu estou tendo dificuldade, eu preciso usar o resultado de uma função, mandar para outra função, pegar o resultado dessa, converter para String, e mostrar na grid,

 

Mantenha até onde der a interface separada dos dados. Use uma estrutura intermediária. A interface carrega essa estrutura. As contas são feitas na estrutura. A lógica atualiza a interface.

 

 

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