Ir ao conteúdo
  • Cadastre-se

C++ Como mostrar resultado da função na grid?


Cairo Alberto

Posts recomendados

#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
Link para o comentário
Compartilhar em outros sites

@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
Link para o comentário
Compartilhar em outros sites

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