Ir ao conteúdo
  • Cadastre-se

Passagem de parâmetros de funções


Stynne

Posts recomendados

Bom, tenho que fazer um exercício que pede uma série de coisas, porém está dando um erro dizendo que "menu was not declared", porém menu não é uma variável, é uma função.
Vou colocar os dois exercícios (que são juntos) e o código que fiz... me ajudem, por favor. Tenho prova amanhã =/

4) Em uma loja os games são identificados por:
Nome – 30 caracteres;
Console – 10 caracteres;
Genero – 15 caracteres;
Codigo – inteiro;
Preço – ponto flutuante. Desenvolva uma estrutura de dados para armazenar esses dados.

5) Elabore um programa para o cadastro de games da loja do exercício anterior. A função main() do programa deve acessar as seguinte funções:
• entrada() – responsável por coordenar a entrada de dados;
• gravar() – grava os registros digitados em um arquivo txt;
Quando for inserir os dados do campo console, deve ser chamada uma função que exiba um menu com as seguintes opções:
1 – PS4;
2 – XBOX ONE;
3 – PS3;
4 – XBOX 360;
5 – Wii.
O campo deve ser preenchido de acordo com o retorno da função. A entrada de dados deve ser finalizada quando for digitado um Nome igual a ZZZZ.

Meu código: 

 

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

struct jogos {
	char nome[30];
	char console[10];
	char genero[15];
	int codigo;
	float preco;
};

void entrada () {
	int tipoconsol;
	jogos cod;
	printf("Digite o nome do jogo:");
	gets(cod.nome);
	if (cod.nome[30] == 'zzzz' && 'ZZZZ')
		exit (0);
	else {
		cod.console = menu ();
		printf("Digite o genero: ");
		gets(cod.genero);
		printf("Digite o codigo do produto: ");
		scanf("%d",&cod.codigo);
		printf("Digite o preco: ");
		scanf("%f",&cod.preco);
		printf("\nNome: %s\nConsole: %s\nGenero: %s\nCodigo: %d\nPreco: %f\n",cod.nome,cod.console,cod.genero,cod.codigo,cod.preco);
		}
}

void gravar () {
	FILE *arq;
	jogos cod;
	arq = fopen("I:\\ESTUDOS\\ex6.txt","w");
	fprintf(arq,"Nome: %s\nConsole: %s\nGenero: %s\nCodigo: %d\nPreco: %f\n",cod.nome,cod.console,cod.genero,cod.codigo,cod.preco);
	fclose(arq);
}

char menu () {
	int menu1;
	printf("Selecione o console desejado: ");
	scanf("%d",&menu1);
	printf("\t1. PS4\t2. XBOX ONE\t3. PS3\t4. XBOX 360\t.5 Wii"); 
	switch (menu1) {
	case 1:
		return printf("PS4");
		break;
	case 2:
		return printf("XBOX ONE");
		break;
	case 3:
		return printf("PS3");
		break;
	case 4:
		return printf("XBOX 360");
		break;
	case 5:
		return printf("Wii");
		break;
	}
}

int main () {
	printf("Bem vindo a Moovie Games");
	entrada ();
	gravar ();
	printf("Cadastrado com sucesso.");
}

 

Link para o comentário
Compartilhar em outros sites

 

Ja arrumei a maioria dos bugs... e eram uns quantos >_<. Agora não me peça que te explique tudo porque vai ser como ir ao pezinho outra vez. Melhor o estude e pergunte o que tiver duvida.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
	char nome[30];
	char *console;
	char genero[15];
	int codigo;
	float preco;
}jogos;

char* menu ();

jogos entrada () {
    //int tipoconsol;
    jogos cod;
    printf ( "Digite o nome do jogo:" );
    scanf ( "%29[^\n]%*c", cod.nome );
    
    if ( strcmp ( cod.nome, "zzzz" ) == 0 || strcmp ( cod.nome, "zzzz" ) == 0 )
        exit ( 0 );
    else {
        cod.console = menu ();
        printf ( "\nDigite o genero: " );
        scanf ( "%14[^\n]%*c", cod.genero );
        printf ( "Digite o codigo do produto: " );
        scanf ( "%d%*c", &cod.codigo );
        printf ( "Digite o preco: " );
        scanf ( "%f%*c", &cod.preco );
        printf ( "\nNome: %s\nConsole: %s\nGenero: %s\nCodigo: %d\nPreco: %.2f\n", cod.nome, cod.console, cod.genero, cod.codigo, cod.preco );
    }
    return cod;
}

void gravar ( jogos cod) {
	FILE *arq;
	//arq = fopen("I:\\ESTUDOS\\ex6.txt","w");
	arq = fopen("ex6.txt","a");
	fprintf(arq,"%s %s %s %d %.2f\n",
			cod.nome, cod.console, cod.genero, cod.codigo, cod.preco);
	fclose(arq);
}

char* menu () {
	int menu1;
	printf("Selecione o console desejado: ");
	printf("1-PS4 \n2-XBOX ONE \n3-PS3 \n4-XBOX 360 \n5-Wii\n\n"); 
	scanf("%d%*c",&menu1);
	switch (menu1) {
	case 1:
		printf("PS4");
		return (char*)"PS4";
		break;
	case 2:
		printf("XBOX ONE");
		return (char*)"XBOX ONE";
		break;
	case 3:
		printf("PS3");
		return (char*)"PS3";
		break;
	case 4:
		printf("XBOX 360");
		return (char*)"XBOX 360";
		break;
	case 5:
		printf("Wii");
		return (char*)"Wii";
		break;
	}
	return (char*)"No Console";
}

int main () {
	jogos cod;
	printf("Bem vindo a Moovie Games");
	cod = entrada ();
	gravar (cod);
	printf("Cadastrado com sucesso.");
}

 

Link para o comentário
Compartilhar em outros sites

@Stynne É que nesse caso o ponteiro aponta para o endereço na memória de uma string. É bem comum utilizar ponteiros para retornar strings ou para passar uma string por parâmetro em uma função.

 

também pode se utilizar ponteiro de int para passar um vetor de inteiros, e a string também é um vetor, só que é um vetor de char.

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

Visitante
Este tópico está impedido de receber novas respostas.

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!