Ir ao conteúdo

C <CODE error expected ':', ',', ';', '}' or '__attribute__' before '{' token>


Ir à solução Resolvido por isrnick,

Posts recomendados

Postado
Segue meu código.



<#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define TAM 5

typedef struct pessoa{
    char nome[10];
    char livro[10];
    int cod;
    char autor[10];
    char obra[10];
    char editora[10];
    
int main(){
    tipo_pessoa lista[TAM];
    int i;
    
    for(i=0; i<TAM; i++){
        lista.cod=i;
        printf("Insira o nome da pessoa %d: \n",i+1);
        gets(lista.nome);
        fflush(stdin);
        printf("Insira o nome do livro %d: \n", i+1);
        gets(lista.livro);
        fflush(stdin);
        printf("Insira o nome do autor %d: \n", i+1);
        gets(lista.autor);
        fflush(stdin);
        printf("Insira o nome da obra %d: \n", i+1);
        gets(lista.obra);
        fflush(stdin);
        printf("Insira o nome da editora %d: \n", i+1);
        gets(lista.editora);
        fflush(stdin);
    }
    
    system("cls");
    printf("Sistema de cadastro lotado. Não é possível armazenar mais informações!\n\n");
    system("pause");
    
    for (i=0; i<TAM; i++){
        printf("%s - %d - %s - %s - %s - %s\n", lista.nome, lista.cod, lista.livro, lista.autor, lista.obra, lista.editora);
    }
}

int menu(){
    int opcao;
 
    printf("\n\n ==== MENU DE opções ====\n");
    printf("0 - ENCERRAR PROGRAMA. \n");
    printf("1 - INSERIR CADASTRO\n");
    printf("2 - EXIBIR TODOS \n");
    printf("\nO que deseja fazer? ");
    scanf("%d", &opcao);
 
    return opcao;
}
 

 

O que fazer? -.-' erro linha 14 int main(){ dizendo que () está com erro.

 

Postado

@isrnick

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define TAM 5

typedef struct pessoa{
	char nome[10];
	char livro[10];
	int cod;
	char autor[10];
	char obra[10];
	char editora[10];
} tipo_pessoa;

int menu(){
    int opcao;
 
    printf("\n\n ==== MENU DE opções ====\n");
    printf("0 - ENCERRAR PROGRAMA. \n");
    printf("1 - INSERIR CADASTRO\n");
    printf("2 - EXIBIR TODOS \n");
	printf("\nO que deseja fazer? ");
    scanf("%d", &opcao);
 
    return opcao;
}

int main(){
	tipo_pessoa lista[TAM];
	int i;
	
	for(i=0; i<TAM; i++){
		lista[i].cod=i;
		printf("Insira o nome da pessoa %d: \n",i+1);
		gets(lista[i].nome);
		fflush(stdin);
		printf("Insira o nome do livro %d: \n", i+1);
		gets(lista[i].livro);
		fflush(stdin);
		printf("Insira o nome do autor %d: \n", i+1);
		gets(lista[i].autor);
		fflush(stdin);
		printf("Insira o nome da obra %d: \n", i+1);
		gets(lista[i].obra);
		fflush(stdin);
		printf("Insira o nome da editora %d: \n", i+1);
		gets(lista[i].editora);
		fflush(stdin);
	}
	
	system("cls");
	printf("Sistema de cadastro lotado. Não é possível armazenar mais informações!\n\n");
	system("pause");
	
	for (i=0; i<TAM; i++){
		printf("%s - %d - %s - %s - %s - %s\n", lista[i].nome, lista[i].cod, lista[i].livro, lista[i].autor, lista[i].obra, lista[i].editora);
	}
}
  
  
  /// Eis que vem a questão, eu ainda não consigo fazer a vinculação entre o menu de opções com o cadastro de pessoas, parecem que rodam um independente do outro.

 

Eu gostaria de acessar primeiro o menu e sempre se inicia com o cadastro de livros, porque está com main nesta opção e quando troco main para o menu de opções o sistema de cadastro não inicializa.

  • Curtir 1
  • Solução
Postado

menu() é uma função, e deve ser chamada para ser executada. No caso deve chamar a função menu(); dentro da função main() (no local apropriado), e usar if-else-if ou então switch-case para realizar uma das operações de inserir cadastro, ou exibir cadastros, conforme a opção escolhida e retornada pela função menu().

 

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#define TAM 5

typedef struct pessoa {
    char nome[10];
    char livro[10];
    int cod;
    char autor[10];
    char obra[10];
    char editora[10];
} tipo_pessoa;

int menu() {
    int opcao;

    printf("\n\n ==== MENU DE opções ====\n");
    printf("0 - ENCERRAR PROGRAMA. \n");
    printf("1 - INSERIR CADASTRO\n");
    printf("2 - EXIBIR TODOS \n");
    printf("\nO que deseja fazer? ");
    scanf("%d", &opcao);

    return opcao;
}

int main() {
    tipo_pessoa lista[TAM];
    int i = 0, j, opcao;

    do {
        opcao = menu();
        switch (opcao) {
        case 1:
            if (i < TAM) {
                lista[i].cod = i;
                printf("Insira o nome da pessoa %d: \n", i + 1);
                gets(lista[i].nome);
                fflush(stdin);
                printf("Insira o nome do livro %d: \n", i + 1);
                gets(lista[i].livro);
                fflush(stdin);
                printf("Insira o nome do autor %d: \n", i + 1);
                gets(lista[i].autor);
                fflush(stdin);
                printf("Insira o nome da obra %d: \n", i + 1);
                gets(lista[i].obra);
                fflush(stdin);
                printf("Insira o nome da editora %d: \n", i + 1);
                gets(lista[i].editora);
                fflush(stdin);
                i++;
            } else {
                system("cls");
                printf("Sistema de cadastro lotado. Não é possível armazenar mais informações!\n\n");
            }
            break;
        case 2:
            for (j = 0; j < i; j++) {
                printf("%s - %d - %s - %s - %s - %s\n", lista[j].nome, lista[j].cod, lista[j].livro, lista[j].autor, lista[j].obra, lista[j].editora);
            }
            break;
        case 0:
            printf("Programa finalizado.\n");
            break;
        default:
            printf("Opcao invalida.\n");
        }
        system("pause");
    } while (opcao != 0);
    return 0;
}

 

Também coloquei um do-while para continuar o programa enquanto não digitar 0 no menu. Mas não testei o código, teste e me diga se der algum erro.

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!