Ir ao conteúdo
  • Cadastre-se

C++ Erro em argumento de função c++


Posts recomendados

Olá,estou fazendo um código que irá receber um vetor com datas do formato ddmmaaaa e irá verificar quais datas são maiores ou iguais a de hoje (no caso usei a data de ontem 30/03/2018) e quais são menores. porém estou com um problema na chamada de uma função o código esta abaixo e o erro foi esse 

 

O erro está na função verificar data. Se puderem me ajudar agradeço desde já.

 

Citação

error: cannot convert 'int*' to 'int**' for argument '2' to 'void verificar_data(int*, int**, int**, int, int)'|

  

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

using namespace std;

#define hoje 30032018
#define quant 5

void print_datas (int datas[],int a){
    int i;
    for (i=0;i<a; i++){
        printf("\nData %i: %8.8i",i+1,datas[i]);
    }
}

void verificar_data (int datas[],int *maiores[],int *menores[], int menor, int maior){
    int ano_hoje, mes_hoje, dia_hoje, i;
    ano_hoje=hoje%10000;
    mes_hoje=(hoje/10000)%100;
    dia_hoje=(hoje/10000)/100;
    //printf("\ndata: %2.2d/%2.2d/%d",dia,mes,ano);
    for (i=0;i<quant;i++){
        if (datas[i]%10000 >= ano_hoje){
            if ((datas[i]/10000)%100>= mes_hoje){
                if ((datas[i]/10000)/100 >= dia_hoje)
                    *maiores[i]=datas[i];
                    maior++;
            }
        }
        else
            *menores[i]=datas[i];
            menor++;
    }
}

int main(){
    int datas[quant], maiores[quant], menores[quant];
    int i,  menor, maior;

    cout << "\nDigite as datas no formato ddmmaaaa: ";
    for (i=0;i<quant;i++){
        cin>>datas[i];
    }
    print_datas(datas, quant);
    verificar_data(datas, &maiores , &menores, menor, maior);
    cout << "\nDatas menores que a de hoje: \n";
    print_datas(maiores, maior);
    cout << "\nDatas maiores ou iguais a de hoje: \n";
    print_datas(menores, menor);
    return 0;
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Henrique Negri     esse erro é por que não pode converter int para ponteiro , então ou você coloca a variável como ponteiro assim :

int *maiores, *menores;

e na chamada da função coloca assim :

verificar_data(datas, *maiores , *menores, menor, maior);

ou coloca como vetor normal, e na chamada da função coloca assim :

verificar_data(datas, maiores , menores, menor, maior);

 

Link para o comentário
Compartilhar em outros sites

@Henrique Negri    isso por tem algum erro dentro da função  verificar_data   dentro desse for

for (i=0;i<quant;i++){
    if (datass[i]%10000 >= ano_hoje){
        if ((datass[i]/10000)%100>= mes_hoje){
            if ((datass[i]/10000)/100 >= dia_hoje){
                maiores[i]=datass[i];
                maior++;
            }
        }
        else{}
        menores[i]=datass[i];
        menor++;
    }
}

ele coloca os valor do maior e menor fora de faixa . por isso na função print_data ele imprime um valor aleatório de acordo com o valor da variável menor e maior .   vamos analisar essa função verificar_data .

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