Ir ao conteúdo
  • Cadastre-se

C++ Conversion from 'Data(Data)' to non-scalar type 'Data' requested


The_Ruivo

Posts recomendados

Quando tento compilar o código abaixo, ela mostra o seguinte erro:

Conversion from 'Data(Data)' to non-scalar type 'Data' requested

Esse erro ocorre na linha 34 (date=leData;)

Alguém pode me ajudar a resolver isso urgentemente?!

#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include<locale.h>
using namespace std;
typedef struct
{
	int dia,mes,ano;
}Data;
Data leData(Data)
{
	Data date;
	printf("Digite o dia: ");
	scanf("%i",&date.dia);
	printf("Digite o mês: ");
	scanf("%i",&date.mes);
	printf("Digite o ano: ");
	scanf("%i",&date.ano);
	return date;
}
void imprimeData(Data)
{
	Data Data;
		cout<<Data.dia;
		cout<<"/";
		cout<<Data.mes;
		cout<<"/";
		cout<<Data.ano;
		cout<<"/";
}
int main(int argc, char** argv) {
	setlocale(LC_ALL, "Portuguese");
	Data date;
	date=leData;
	imprimeData;
	system("pause");
	return 0;
}

 

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

Acho que as funções não devem ter argumentos e a chamada de função deve ter os parênteses:

Data leData(){
	...
}

void imprimeData(){
	...
}

int main(int argc, char** argv) {
	setlocale(LC_ALL, "Portuguese");
	Data date;
	date=leData; //substituir por date=leData();
	imprimeData; //substituir por date=imprimeData();
	system("pause");
	return 0;
}

 

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

Em C fica assim:

#include <stdio.h>

typedef struct{
	int dia,mes,ano;
}Data;
Data leData(){
	Data date;
	printf("Digite o dia: ");
	scanf("%d",&date.dia);
	printf("Digite o mês: ");
	scanf("%d",&date.mes);
	printf("Digite o ano: ");
	scanf("%d",&date.ano);
	return date;
}
void imprimeData(){
	Data date;
		printf("%d/%d/%d",date.dia,date.mes, date.ano);
}
int main(){
	Data date;
	date=leData();
	imprimeData();
	return 0;
}

 

Link para o comentário
Compartilhar em outros sites

Aqui funcionou perfeitamente em C++ assim:

#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include<locale.h>
using namespace std;
typedef struct
{
	int dia,mes,ano;
}Data;
Data leData()
{
	Data date;
	printf("Digite o dia: ");
	scanf("%i",&date.dia);
	printf("Digite o mês: ");
	scanf("%i",&date.mes);
	printf("Digite o ano: ");
	scanf("%i",&date.ano);
	return date;
}
void imprimeData()
{
	Data Data;
		cout<<Data.dia;
		cout<<"/";
		cout<<Data.mes;
		cout<<"/";
		cout<<Data.ano;
		cout<<"/";
}
int main(int argc, char** argv) {
	setlocale(LC_ALL, "Portuguese");
	Data date;
	date=leData();
	imprimeData();
	system("pause");
	return 0;
}

 

adicionado 0 minutos depois
2 minutos atrás, The_Ruivo disse:

@Luís Roberto C. da Silva Não funcionou 😕

Quando eu executei ele mostrou números aleatórios na tela ;-;

Colocou os parênteses mas chamadas de função?

Link para o comentário
Compartilhar em outros sites

@Luís Roberto C. da Silva Sim

 

adicionado 0 minutos depois
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include<locale.h>
using namespace std;
typedef struct
{
	int dia,mes,ano;
}Data;
Data leData()
{
	Data date;
	printf("Digite o dia: ");
	scanf("%i",&date.dia);
	printf("Digite o mês: ");
	scanf("%i",&date.mes);
	printf("Digite o ano: ");
	scanf("%i",&date.ano);
	return date;
}
void imprimeData()
{
	Data Data;
		cout<<Data.dia;
		cout<<"/";
		cout<<Data.mes;
		cout<<"/";
		cout<<Data.ano;
		cout<<"/";
}
int main(int argc, char** argv) {
	setlocale(LC_ALL, "Portuguese");
	Data date;
	date=leData();
	imprimeData();
	system("pause");
	return 0;
}

Ele está assim

 

adicionado 1 minuto depois

image.thumb.png.2616b1230569892c12d823cf423ee412.png

Link para o comentário
Compartilhar em outros sites

Tente usar "%d" no lugar de "%i" para ler as variáveis

adicionado 0 minutos depois
1 minuto atrás, The_Ruivo disse:

@Luís Roberto C. da Silva Qual compilador você usa? Gostei da aparência dele

 

Na verdade é um compilador online:

https://www.onlinegdb.com/online_c++_compiler

Link para o comentário
Compartilhar em outros sites

1 minuto atrás, Luís Roberto C. da Silva disse:

Tente usar "%d" no lugar de "%i" para ler as variáveis

adicionado 0 minutos depois

Na verdade é um compilador online:

https://www.onlinegdb.com/online_c++_compiler

No compilador online foi!! Vou testar com outros compiladores também, obrigado ;)

 

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

@The_Ruivo Assim também funciona:

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

typedef struct
{
    int dia,mes,ano;
} Data;

Data leData()
{
    Data date;
    printf("Digite o dia: ");
    scanf("%i",&date.dia);
    printf("Digite o mês: ");
    scanf("%i",&date.mes);
    printf("Digite o ano: ");
    scanf("%i",&date.ano);
    return date;
}
void imprimeData(Data d)
{
    cout<<d.dia;
    cout<<"/";
    cout<<d.mes;
    cout<<"/";
    cout<<d.ano;
    cout<<"/";
}
int main(int argc, char** argv)
{
    setlocale(LC_ALL, "Portuguese");
    Data date;
    date = leData();
    imprimeData(date);
    system("pause");
    return 0;
}

 

  • Curtir 2
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...