Ir ao conteúdo
  • Cadastre-se

Pesquisar na Comunidade

Mostrando resultados para as tags ''C''.



Mais opções de pesquisa

  • Pesquisar por Tags

    Digite tags separadas por vírgulas
  • Pesquisar por Autor

Tipo de Conteúdo


Categorias

  • Armazenamento
  • Áudio
  • Energia
  • Entrada
  • Feiras e Eventos
  • Gabinetes
  • Memória
  • Museu
  • Placas-mãe
  • Portáteis
  • Processadores
  • Programas
  • Rádio CdH
  • Redes
  • Refrigeração
  • Smartphones
  • Tablets
  • Vídeo
  • Outros

Categorias

  • Armazenamento
  • Áudio
  • Câmeras
  • Computadores
  • Consoles
  • Eletrônicos
  • Energia
  • Entrada
  • Gabinetes
  • Impressão
  • Jogos
  • Memória
  • Placas-mãe
  • Portáteis
  • Processadores
  • Programas
  • Redes
  • Refrigeração
  • Smartphones
  • Tablets
  • Vídeo
  • Outros

Categorias

  • Livros disponíveis
  • Livros esgotados

Fóruns

  • Mensagens do Clube do Hardware
    • Regras gerais
    • Boletins do Clube do Hardware
    • Notícias da administração
  • Hardware
    • Recomendações de computadores
    • Placas de vídeo
    • Placas-mãe e chipsets
    • Processadores
    • Problemas de gargalo e desempenho
    • Memórias
    • Armazenamento
    • Refrigeração e superaquecimento
    • Fontes e energia
    • Gabinetes e casemods
    • Placas de som e áudio on-board
    • Periféricos
    • Mac
    • Overclock
    • Hardware - outros
  • Computação móvel
    • Notebooks
    • Tablets
    • Smartphones e apps
  • Redes e Internet
    • Redes e Internet
    • Hospedagem de sites e registro de domínios
  • Segurança da informação
    • Remoção de malware
    • Dúvidas sobre invasões e infecções
    • Programas de proteção
  • Programação e desenvolvimento
    • Java
    • C/C#/C++
    • Pascal/Delphi
    • .NET
    • Bancos de dados
    • Programação web
    • Programação - iniciantes
    • Programação de microcontroladores
    • Programação - outros
  • Software
    • Jogos
    • Pacotes de escritório
    • Computação distribuída (Folding@Home, Bitcoin etc.)
    • Virtualização
    • Design, animação e tratamento de imagens
    • Edição, autoração e gravação de áudio e vídeo
    • Programas
  • Sistemas Operacionais
  • Eletrônicos
  • Outros
  • Clube do Hardware

Categorias

  • Hardware
  • Redes
  • Eletrônica
  • Sistemas operacionais

Encontrar resultados em...

Encontrar resultados que...


Data de criação

  • Iniciar

    FIM


Última atualização

  • Iniciar

    FIM


Filtrar pelo número de...

Data de registro

  • Iniciar

    FIM


Grupo


Encontrado 2.813 registros

  1. /* Incluindo Blibiotecas que serão necessárias para o programa */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <time.h> char op; /* Variável global para capturar no qual gerencia o usuario quer entrar */ void getch(){ system("read b"); } /* Estrutura do tipo de 'Endereço' */ typedef struct{ char logradouro[10]; char complemento[20]; char cep[10]; char bairro[20]; char cidade[20]; char estado[3]; }End; /* Estrutura do tipo 'Cliente' junto com a estrutura de 'Endereço' */ typedef struct{ int codigo; char nome[30]; char cnpj[20], cpf[20]; char telefone[20]; End endereco; }Cli; /* Estrutura do Tipo Produto */ typedef struct{ int codigo; char nome[30]; char fornecedor[30]; char categoria[30]; int quant; float valorUnit; }Prod; /* Estrutura do tipo 'Pedido' junto com as estruturas 'Cliente' e 'Produto' */ typedef struct{ int codigo; int dia; int mes; int ano; Cli clienteQuePediu; Prod *produtoPedido; int *qdtProdutoPedido; int qdt; }Ped; /* Declaração da função 'Menu', que irá gerenciar o funcionamanto do programa */ void menu(); /* Declaração das funções que gerencia as ações relacionadas com os 'Clientes' */ void gerenciaDeClientes(Cli*, int*, FILE*); Cli cadastrarCliente(Cli, int); void listarCliente(Cli*, int); void ordenarClientePorOrdemAlfabetica(Cli*, int); void buscarCliente(Cli*, int); void atualizarCliente(Cli*, int); void excluirCliente(Cli*, int*); void imprimirCliente(Cli); /* Declaração das funções que gerencia as ações relacionamentos aos 'Produtos' */ void gerenciaDeProdutos(Prod*, int*, FILE*); Prod cadastrarProduto(Prod, int); void listarProdutosCadastrados(Prod*, int); void ordenarProdutoPorNome(Prod*, int); void filtrarCategoria(); void atualizarProdutoCadastrado(Prod*, int); void atualizarEstoqueProduto(Prod*,int); void imprimirProduto(Prod); /* Declaração das funções que gerencia as ações relacionamento aos 'Pedidos' */ void gerenciaDePedidos(Ped*, Cli*, Prod*, int*,int, int); void cadastrarPedido(Ped*, Cli*, Prod*, int*,int, int); void obterData(Ped*); void listarPedidosDeUmCliente(Ped*, int); void ordenarPedidosPorData(Ped*, int); void listarPedidosDeUmDia(Ped*, int); void ordenarPorNomeDoCliente(Ped*, int); void imprimirPedido(Ped); /*Função Principal*/ int main(){ FILE *arquivo; /* Decçaração de um Arquivo */ Prod *produto; /* Declaração de um ponteiro para a estrutura 'Produto' */ Cli *cliente; /* Declaração de um ponteiro para a estrutura 'Cliente' */ Ped *pedido; /* Declaração de um ponteiro para a estrutura 'Pedido' */ int contCliente = 0, contProduto = 0, contPedido = 0, /* Inicializando os contadores em '0' */ /*Alocando na memória para os ponteiros */ produto = calloc(10, sizeof(Prod)); cliente = calloc(10, sizeof(Cli)); pedido = calloc(10, sizeof(Ped)); /* Chamada da função 'Menu' */ menu(); do{ /*ciclo que irá controlar o funcionamaneto do programa */ switch(op){ case 'C': case 'c': gerenciaDeClintes(cliente, &contCliente, arquivo); break; case 'P': case 'p': gerenciaDeProdutos(produto, &contProduto, arquivo); break; case 'E': case 'e': gerenciaDePedidos(pedido, cliente, produto, &contPedido, contCliente, contProduto); break; case 'S': case 's': exit(1); default: printf(" COMANDO INVADILO!!\n Entre com o comando Novamnte\n"); sleep(3); system("clear"); menu(); } }while(1); return 0; }/* Fim da função principal*/ /* Código da função 'Menu' */ void menu(){ printf("=======Menu de Gerenciamento=======\n"); printf("C - Gerenciar Clientes\n"); printf("P - Gerenciar Produtos\n"); printf("E - Gerenciar Pedidos\n"); printf("S - Sair\n"); printf("Digite um Comando para Prosseguir: "); scanf(" %c",&op); system("clear"); } /* Código da função que gerencia os Clientes */ void gerenciaDeClientes(Cli *cliente, int *contCliente, FILE *arquivo){ char opcao; do{ printf("=======Gerenciar Clientes=======\n"); printf("C - Cadastrar Cliente\n"); printf("L - Listar Clientes Cadastrados\n"); printf("B - Buscar Cliente Cadastrado\n"); printf("A - Atualizar Cliente Cadastrado\n"); printf("B - Excluir Cliente Cadastrado\n"); printf("Digite um Comando para Prosseguir: "); scanf(" %c",&opcao); system("clear"); switch(opcao){ case 'C': case 'c': arquivo = fopen("Força de Vendas.txt,","a+"); if(arquivo == NULL){ printf("Não foi possivel abrir o arquivo."); return; } printf("===== Cadastro de Cliente=====\n"); cliente[*contCliente] = cadastrarCliente(cliente[*contCliente], 0); fprinf(arquivo, " %d; %s; %s; %s; %s; %s; %s; %s; %s; %s; %s\n", cliente[*contCliente].codigo, cliente[*contCliente].nome, cliente[*contCliente].cnpj, cliente[*contCliente].cpf, cliente[*contCliente].telefone, cliente[*contCliente].endereco.logradouro, cliente[*contCliente].endereco.complemento, cliente[*contCliente].endereco.cep, cliente[*contCliente].endereco.bairro, cliente[*contCliente].endereco.cidade, cliente[*contCliente].endereco.estado); fclose(arquivo); *contCliente+=1; if(*contCliente == 10) cliente = realloc(cliente, (*contCliente +1) * sizeof(Cli)); break; case 'L': case 'l': listarCliente(cliente, *contCliente); break; case 'B': case 'b': buscarCliente(cliente, *contCliente); break; case 'A': case 'a': atualizarCliente(cliente, *contCliente); break; case 'E': case 'e': excluirCliente(cliente, *contCliente); break; default: printf(" !!OPCAO INVALIDA!!\n Digite novamente outra Opcao\n"); sleep(3); system("clear"); continue; } break; }while(1); } /* Função que Cadastra um Cliente */ Cli cadastrarCliente(Cli cliente, int identificador){ char opcao; char codigoCliente[10]; do{ printf("Codigo do Clienete: "); scanf(" %s", codigoCliente); cliente.codigo =atoi(codigoCliente); if(identificador == 0){ if(cliente.codigo == 0){ printf("\n !!CODIGO INVADIDO!!\n Apenas numeros para o Codigo\n"); sleep(3); system("clear"); printf("=====Cadastro de Cliente=====\n"); continue; } } else{ if(cliente.codigo == 0 && strlen(codigoCliente) > 0){ printf("!!CODIGO INVALIDO!!\n Apenas Numeros para o Codigo\n"); sleep(3); system("clear"); continue; } } break; }while(1); printf("Nome do Cliente: "); scanf(" %[^\n]s", cliente.nome); do{ printf("Pessoa: Fisica(F), Juridica(J): "); scanf("%c", &opcao); switch(opcao){ /* swith case para determinar qual indentificador do Usuário */ case 'F': case 'f': printf("CPF do Cliente: "); scanf(" %[^\n]", cliente.cpf); break; case 'J': case 'j': printf("CNPJ do Cliente: "); scanf(" %[^\n]", cliente.cnpj); break; default: printf("\n !!ATENCAO!!\n Digite (F) para pessoa Fisica ou (J) para pessoa Juridica\n\n"); continue; } break; }while(1); printf(" Telefone do Cliente: "); scanf(" %[^\n]s",cliente.telefone); printf("\n Endereco do Cliente: "); scanf(" %[^\n]s", cliente.endereco); printf("\n Logradouro: "); scanf(" %[^\n]s", cliente.endereco.logradouro); printf("\n Complemento: "); scanf(" %[^\n]s", cliente.endereco.complemento); printf("\n CEP: "); scanf(" %[^\n]s", cliente.endereco.cep); printf("\n Bairro: "); scanf(" %[^\n]s", cliente.endereco.bairro); printf("\n Cidade: "); scanf(" %[^\n]s", cliente.endereco.cidade); printf("\n Estado: "); scanf(" %[^\n]s", cliente.endereco.estado); if(identificador == 0){ printf("\n Cadastro Realizado Com Sucesso!\n"); sleep(3); system("clear"); menu; } return cliente; } /*Função que lista um cliente selecionado */ void listarCliente(Cli *cliente, int contCliente){ int i; if(contCliente == 0){ printf(" !!ERRO!!\n Nenhum Cliente Cadastrado\n"); sleep(3); system("clear"); menu; return; } /* A função irá ordenar os Clientes em ordem Alfabética */ ordenarClientePorOrdemAlfabetica(cliente, contCliente); printf("Lista de Clientes Cadastrados\n\n "); for(i=0; i<contCliente; i++) /*Ciclo que procura e imprime um Cliente */ imprimirCliente(cliente[i]); getch(); system("clear"); menu(); /* Chamando a função 'Menu' ao final da função 'ListaCliente' */ } /* Códio da função que ordena os Clientes em Ordem alfabetica */ void ordenarClientePorOrdemAlfabetica(Cli *cliente, int contCliente){ /* algoritmo de oedenaçãp foi usado o insertion sort */ int i, j, marcador; Cli aux; for(i=1; i<contCliente; i++){ aux = cliente[i]; j = i-1; do{ marcador = 0; if(strcmp(cliente[j].nome, aux.nome) > 0){ cliente[j+1] = cliente[j]; j--; marcador = 0; } if(j < 0) marcador = 0; }while(marcador); cliente[j+1] = aux; } } /*Função que imprime os dados do Cliente passando por parâmetros */ void imprimirCliente(Cli cliente){ printf("Codigo: %d\n", cliente.codigo); printf("Nome: %s\n", cliente.nome); if(strlen(cliente.cnpj) == 0); printf("CPF: %s\n", cliente.cpf); printf("CNPJ: %s\n", cliente.cnpj); printf("Telefone: %s\n", cliente.telefone); printf("Endereco: Logradouro %s / Complemento %s\n", cliente.endereco.logradouro, cliente.endereco.complemento); printf("CEP: %s\n", cliente.endereco.cep); printf("Bairro: %s\n", cliente.endereco.bairro); printf("Cidade: %s\n", cliente.endereco.cidade); printf("Estado: %s\n", cliente.endereco.estado); } /* Função que Busca um Cliente Selecionado */ void busucarCliente(Cli *cliente, int contCliente){ int i, marcador=0; int codigoCliente; char nomeCliente[30]; printf(" Digite o Nome ou Codigo do Cliente que deseja Buscar: "); scanf(" %[^\n]s", nomeCliente); printf("\n"); codigoCliente = atoi(nomeCliente); for(i=0; i<contCliente; i++){ if(cliente[i].codigo == codigoCliente || strcmp(cliente[i].nome, nomeCliente) == 0){ imprimirCliente(cliente[i]); getch(); marcador = 1; break; } } if(!marcador){ printf(" !!ERRO!!\n Cliente nao Cadastrado\n"); sleep(3); } sytem("clear"); menu(); /* Chamando a função 'Menu' depois de ter Buscado um Cliente */ } /* Função que busca e atualiza os dados de Cliente */ void atualizaCliente(Cli *cliente, int contCliente){ int codigo, i, marcador = 0; Cli aux; char codigoCliente[10]; do{ printf("Codigo do Cliente que deseja Atualizar: "); scanf(" %s", contCliente); codigo = atoi(codigoCliente); if(codigo == 0){ printf("\n !!ERRO!! \n Apenas numeros para o Codigo\n"); sleep(3); system("clear"); continue; } break; }while(1); for(i=0; i<contCliente; i++){ if(cliente[i].codigo == codigo){ marcador = 1; break; } } if(!marcador) printf("\n !!ERRO!! \n Cliente nao cadastrador\n"); else{ printf("\n Entre com os Dados Atualizados\n"); aux = cadastrarCliente(aux, -1); if(aux.codigo > 0) cliente[i].codigo, aux.codigo; if(strlen(aux.nome) > 0) strpy(cliente[i].nome, aux.nome); if(strlen(aux.cpf) > 0) strpy(cliente[i].cpf, aux.cpf); if(strlen(aux.cnpj) > 0) strpy(cliente[i].cnpj, aux.cnpj); if(strlen(aux.telefone) > 0) strpy(cliente[i].telefone, aux.telefone); if(strlen(aux.endereco.logradouro) > 0) strpy(cliente[i].endereco.logradouro, aux.endereco.logradouro); if(strlen(aux.endereco.complemento) > 0) strpy(cliente[i].endereco.complemento, aux.endereco.complemento); if(strlen(aux.endereco.cep) > 0) strpy(cliente[i].endereco.cep, aux.endereco.cep); if(strlen(aux.endereco.bairro) > 0) strpy(cliente[i].endereco.bairro, aux.endereco.bairro); if(strlen(aux.endereco.cidade) > 0) strpy(cliente[i].endereco.cidade, aux.endereco.cidade); if(strlen(aux.endereco.estado) > 0) strpy(cliente[i].endereco.estado, aux.endereco.estado); printf("\n Cliente Atualizado Com Sucesso\n"); } sleep(3); system("clear"); menu(); /* Chama a função 'Menu' ao final da função Atualizada */ } /*Função que exclui um Cliente selecionado*/ void excluirCliente(Cli *cliente, int *contCliente){ int codigo, i, marcador=0; printf("Codigo do Cliente que deseja Excluir: "); scanf(" %d", &codigo); for(i=0; i<*contCliente; i++){ /* Laço que verifica se o cliente existe */ if(cliente->codigo == codigo){ marcador = 1; break; } } if(!marcador) printf("\n !!ERRO!! \n Cliente nao Cadastrado"); else{ /* Se existi, o cliente será Sobrescrito e será excluido */ for(i; i<*contCliente; i++) cliente[i] = cliente[i+1]; *contCliente -=1; printf("\n Cliente Excluido com Sucesso\n"); } sleep(2); system("clear"); menu(); /* Chamando a função 'Menu' ao final da função ExcluirCliente */ } /* Código da função que gerencia as ações relacionadas aos produtos */ void gerenciamentoDeProdutos(Prod *produto, int* contProduto, FILE *arquivo){ char opcao; do{ printf("============== Gerenciamento de Produtos ==============\n"); printf("C - Cadastrar um Produto\n"); printf("L - Listar todos os Produtos Cadastrados\n"); printf("B - Buscar Produto ja Cadastrados\n"); printf("A - Atualizar um Produto Cadastrado\n"); printf("S - Atualizar estoque de um Produto\n"); printf("\n Digite uma opcao para Prosseguir\n"); scanf(" %c%*c", &opcao); system("clear"); switch(opcao){ case 'C': case 'c': arquivo = fopen("Força de Vendas.txt", "a+"); if(arquivo == NULL) { printf("Nao foi possivel abrir o arquivo"); return; } printf("========== Cadastro de Produtos\n"); produto[*contProduto] = cadastrarProduto(produto[*contProduto], 0); fprintf(arquivo, "%d; %s; %s; %s; %d; %.2f\n"), produto[*contProduto].codigo, produto[*contProduto].nome, produto[*contProduto].fornecedor, produto[*contProduto].categoria, produto[*contProduto].quant, produto[*contProduto].valorUnit; fclouse(arquivo); *contProduto +=1; if(*contProduto == 10) produto = realloc(produto, (*contProduto+1) * sizeof(Prod)); break; case 'L': case 'l': listarProdutosCadastros(produto, *contProduto); break; case 'B': case 'b': buscarProdutoCadastro(produto, *contProduto); break; case 'A': case 'a': atualizarProdutoCadastro(produto, *contProduto); break; case 'S': case 's': atualizarEstoqueCadastro(produto, *contProduto); break; default: printf(" !!OPCAO INVALIDA!!\n Digite novamente outra Opcao\n"); sleep(3); system("clear"); continue; } break; }while(1); } /* Código da função de Cadastro de um Produto */ Prod cadastrarProduto(Prod produto, int identificador){ char aux[15]; do{ printf("Codigo do Produto: "); scanf(" %10s", aux); produto.codigo = atoi(aux); if(identificador == 0){ if(produto.codigo == 0){ printf("\n !!CODIGO INVALIDO!! \n Apenas numeros para Codigo\n"); sleep(2); system("clear"); printf("============ Cadastro de Produtos ===========\n"); continue; } } else{ if(produto.codigo == 0 && strlen(aux) > 0){ printf("\n !!CODIGO INVAVIDO \n Apenas numeros para Codigo\n"); sleep(3); system("clear"); continue; } } break; }while(1); printf("Nome do Produto: "); scanf(" %[^\n]s", produto.nome); printf("Fornecedor: "); scanf(" %[^\n]s", produto.fornecedor); printf("Categoria: "); scanf(" %[^\n]s",produto.categoria); if(identificador == 0){ printf("Quantidade: "); scanf(" %s", &produto.quant); } do{ printf("Valor Unitario: "); scanf(" %s", aux); produto.valorUnit = atof(aux); if(identificador == 0){ if(produto.valorUnit == 0){ printf("\n !!VALOR UNITARIO INVALIDO!! \n Apenas Numeros para valor Unitario\n"); sleep(3); system("clear"); continue; } } else{ if(produto.valorUnit == 0 && strlen(aux) > 0){ printf("\n !!VALOR UNITARIO INVALIDO!! \n Apenas numeros para valor Unitario\n"); sleep(3); system("clear"); continue; } } break; }while(1); if(identificador == 0){ printf("\n Porduto cadastrado com Sucesso\n"); sleep(3); system("clear"); menu(); } return produto; } /* Função que Lista os Produtos que estão Cadastrados */ void listarProdutosCadastrados(Prod *produto, int contProduto){ char filtar; /* Chamando função para Ordenar Produtos por Nome */ ordenarProdutoPorNome(produto, contProduto); printf("Deseja Filtar por Categoria [S/N]: "); switch(filtar){ /* Switch Case para verificar com o usuário se deseja Listar os Produtos */ case 'S': case 's': filtarCategoria(produto, contProduto); break; case 'N': case 'n':{ int i; printf("\n"); if(contProduto > 0){ for(i=0; i<contProduto; i++) imprimirProduto(produto[i]); getch(); } else{ printf("\n !!ERRO!! \n Nenhum Cliente Cadastrado\n"); sleep(3); } break; } } system("clear"); menu(); /* Chamando a Função 'Menu' */ } /* Função que Filtra a categoria do Produto para Imprimir-lo */ void filtarCategoria(Prod *produto, int contProduto){ int i, j=0, indiceMesmaCategoria[30]; char categoria[30]; printf("Deseja visualizar os Produtos de qual Categoria: "); scanf(" %s", categoria); printf("\n"); for(i=0; i<contProduto; i++){ if(strcmp(produto[i].categoria, categoria) ==0) indiceMesmaCategoria[j++] = i; } if(!j){ print("\n !!ERRO!! \n Categoria nao Cadastrada\n"); sleep(3); } else{ for(i=0; i<j; i++) imprimirProduto(produto[indiceMesmaCategoria[i]]); getch(); } } /*função que Ordena Produtos por Nome */ void ordenarProdutoPorNome(Prod *produto, int contProduto){ int i, j, marcador; Prod aux; for(i=1; i<contProduto; i++){ aux = produto[i]; j = i-1; do{ marcador = 0; if(strcmp(produto[j].nome, aux.nome) > 0){ produto[j+1] = produto[j]; j--; marcador = 1; } if(j < 0) marcador = 0; }while(marcador); produto[j+1] = aux; } } /* Função que busca um Produto Cadastrado */ void buscarProdutoCadastrado(Prod *produto, int contProduto){ int codigoProduto; char nomeProduto[30]; int i, marcador = 0; printf("Digite o Nome do Produto que deseja Buscar: "); scanf(" %[^\n]s", nomeProduto); printf("\n"); codigoProduto = atoi(nomeProduto); for(i=0; i<contProduto; i++){ /* Laço que Busca e imprime o Produto solicitado pelo usuário */ if(produto[i].codigo == codigoProduto || strcmp(produto[i].nome, nomeProduto) == 0){ imprimirProduto(produto[i]); marcador=1; getch(); break; } } if(!marcador){ printf(" !!ERRO!! \n Produto nao Cadastrado!!\n"); sleep(3); } system("clear"); menu(); /* Chamando a função 'Menu' */ } /* Função que Imprime um Produto */ void imprimirProduto(Prod produto){ printf("Codigo: %d\n", produto.codigo); printf("Nome: %s\n", produto.nome); printf("Categoria: %s\n", produto.categoria); printf("Fornecedor: %s\n", produto.fornecedor); printf("Quantidade: %d\n", produto.quant); printf("Valor Unitario: %.2f\n\n", produto.valorUnit); } /* Função que atualiza um Produto já Cadastrado */ void AtualizarProdutoCadastrado(Prod *produto, int contProduto){ Prod aux; int i, marcador=0; printf("Digite o Codigo do Produto que deseja Atualizar: "); scanf(" %d", &aux.codigo); for(i=0; i<contProduto; i++){ if(produto[i].codigo == aux.codigo){ marcador=1; break; } } if(!marcador) printf("\n !!ERRO!! \n Produto nao Cadastrado!!!\n"); else{ printf("\n Entre com os Dados Atualizados\n"); aux = cadastrarProduto(aux, -1); if(aux.codigo > 0) produto[i].codigo = aux.codigo; if(strlen(aux.nome) > 0) strcpy(produto[i].nome, aux.nome); if(strlen(aux.fornecedor) > 0) strcpy(produto[i].fornecedor, aux.fornecedor); if(strlen(aux.categoria) > 0) strcpy(produto[i].categoria, aux.categoria); if(aux.valorUnit > 0) produto[i].valorUnit = aux.valorUnit; printf("\n Produto Atualizado Com Sucesso\n"); } sleep(3); system("clear"); menu(); /*Chamando a função 'Menu' */ } /* Função que atualiza o estoque de um Produto */ void atualizarEstoqueDeProduto(Prod *produto, int contProduto){ int codigo, i, marcador=0; printf("Digite o Codigo do Produto que tera seu estoque atualizado: "); scanf(" %d", &codigo); for(i=0; i<contProduto; i++){ if(produto[i].codigo == codigo){ printf("Digite o estoque a ser atualizado: "); scanf(" %d", &produto[i].quant); marcador=1; printf("\n Estoque Atualizado com Sucesso\n"); break; } } if(!marcador) printf("\n !!ERO!! \n Produto nao Cadastrado\n"); sleep(3); system("clear"); menu(); /* Chamada da função 'Menu' */ } /* Código da função que gerencia as ações relacionadas a Pedidos */ void gerenciadorDePedidos(Ped *pedido, Cli *cliente, Prod *produto, int *contPedido, int contCliente, int contProduto){ char opcao; do{ printf("=============== Gerenciador de Pedidos ===============\n"); printf("C - Cadastrar um Pedido\n"); printf("L - Listar todos os Pedidos de um Cliente\n"); printf("D - Listar todos os Pedidos de um dia Especifico\n"); printf("\n Digite uma opcao para Processeguir: "); scanf(" %c,", &opcao); system("clear"); switch(opcao){ case 'C': case 'c': cadastrarPedido(pedido, cliente, produto, contPedido, contCliente, contProduto); break; case 'L': case 'l': listarPedidoDeUmDiaCliente(pedido, *contPedido); break; case 'D': case 'd': listarPedidoDeUmDia(pedido, *contPedido); break; default: printf(" !!OPCAO INVALIDA!! \n Digite novamente outra Opcao\n"); sleep(3); system("clear"); continue; } break; }while(1); } /* Código da função que Cadastra um Pedido */ void cadastrarPedido(Ped *pedido, Cli *cliente, Prod *produto, int *contPedido, int contCliente, int contProduto){ char nomeCliente[30]; int codigoCliente, marcador=0; int codidoProdutoParaCadastro; int qdtProduto; int i, j, auxindice=0; char opcao; printf(" ============== Cadastro de Pedidos ===============\n"); printf("Digite o Codigo ou Nome do Cliente que esta Fazendo o Pedido: "); scanf(" %[^\n]s", nomeCliente); codigoCliente = atoi(nomeCliente); /* Convertendo a string em inteiro */ for(i=0; i<contCliente; i++){ if(codigoCliente == cliente[i].codigo || strcmp(cliente[i].nome, nomeCliente) == 0){ pedido[*contPedido].clienteQuePediu = cliente[i]; marcador = 1; break; } } if(!marcador && strlen(nomeCliente) !=0){ printf("\n !!ERRO!! \n Cliente nao Encontrado\n"); sleep(3); system("clear"); menu(); return; } printf(" Digite a quantidade de Produtos que deseja Pedir: "); scanf(" %d", &pedido[*contPedido].qdt); pedido[*contPedido].produtoPedido = malloc(pedido[*contPedido].qdt * sizeof(Ped)); pedido[*contPedido].qdtProdutoPedido = malloc(pedido[*contPedido].qdt * sizeof(int)); do{ /* Laço que captura o Pedido do Cliente */ marcador = 0; for(i=auxindice; i<pedido[*contPedido].qdt; i++){ printf("Digite o Codigo do Produto para Cadastro: "); scanf(" %d", &codidoProdutoParaCadastro); for(j=0; j<contProduto; j++){ if(produto[j].codigo == codidoProdutoParaCadastro){ printf("Digite o Codigo do Produto para Cadastro: "); scanf(" %d", &qdtProduto); pedido[*contPedido].produtoPedido[i] = produto[j]; pedido[*contPedido].qdtProdutoPedido[i] = qdtProduto; marcador = 1; break; } } if(!marcador){ printf("\n !!ERRO!! \n Produto nao Encontrado\n"); printf(" O Pedido sera descartado; ou Deseja digitar Novamente outro Codigo de Produto [S/N]"); scanf(" %c", &opcao); auxindice = 1; system("clear"); break; } } }while(opcao == 'S' || opcao == 's'); if(opcao == 'N' || opcao == 'n'){ printf("Pedido nao Cadastrado\n"); sleep(3); } else{ obterData(&pedido[*contPedido]); *contPedido +=1; if(*contPedido ==10) pedido = realloc(pedido, (*contPedido +1) * sizeof(Ped)); printf("\n Pedido Cadastrado Com Sucesso\n"); sleep(2); } system("clear"); menu(); } /* Função que usa a Blibioteca 'time.h' para implantar a data */ void obterData(Ped *pedido){ time_t t = time(NULL); struct tm data = *localtime(&t); pedido->ano =data.tm_year + 1900; pedido->mes =data.tm_mon + 1; pedido->dia =data.tm_mday; } /* Função que lista os pedidos de um cliente */ void listatPedidosDeUmCliente(Ped *pedido, int contPedido){ char nomeCliente[30]; int codigoCliente; int i, marcador=0; printf("Digite o codigo ou nome do cliente para visualizar seus pedidos: "); scanf(" %[^\n]s", nomeCliente); system("clear"); codigoCliente = atoi(nomeCliente); for(i=0; i<contPedido; i++){ /* Ciclo que encontra, ordena e imprime o pedido solicitado */ if(pedido[i].clienteQuePediu == codigoCliente || strcmp(pedido[i].clienteQuePediu, nomeCliente) == 0){ ordenarPedidosPorData(pedido, contPedido); /* Chamando a função que ordena os pedidos por dia */ imprimirPedido(pedido[i]); getch(); marcador = 1; break; } } if(!marcador){ /* Se a variavl marcador não tiver sido incrementado, o pedido não foi encontrado */ printf(" !!ERRO!!\n Nenhum pedido cadastrado para esse cliente\n"); sleep(3); } system("clear"); menu(); } /* Codigo da função que ordena pedidos por data*/ void ordenaPedidoPorData(Ped *pedido, int contPedido){ int i, j, marcador; Ped aux; for(i=1; i<contPedido; i++){ /* laço que ordena por ano */ aux = pedido[i]; j = i-1; do{ marcador = 0; if(pedido[j].ano > aux.ano); pedido[j+1] = pedido[j]; j--; marcador = 1; } if(j < 0) marcador = 0; }while(marcador); pedido[j+1] = aux; } for(i=1; i<contPedido; i++){ /* laço que ordena por ano */ aux = pedido[i]; j = i-i; do{ marcador = 0; if(pedido[j].mes > aux.mes && pedido[j].ano){ pedido[j+1] = pedido[j]; j--; marcador = 1; } if(j < 0) marcador = 0; }while(marcador); pedido[j=1] = aux; } for(i=1; i<contPedido; i++){ /* Laço que ordena por dia */ aux = pedido[i]; j = i-i; do{ marcador = 0; if(pedido[j].dia > aux.dia && pedido[j].ano){ pedido[j+1] = pedido[j]; j--; marcador = 1; } if(j < 0) marcador = 0; }while(marcador); pedido[j=1] = aux; } } /* Função que imprime um pedido */ void imprimirPedido(Ped pedido){ int i; printf("Nome do Cliente: %s\nPEDIDOS", pedido.clienteQuePediu.nome); for(i=0; i<contPedido; i++){ printff("Produto: %s\n", pedido.produtoPedido[i].nome); printff("Quantidade: %d\n", pedido.qdtProdutoPedido[i]); } printff("\n=================================\n"); } /* Codigo de Função que lista todos os pedidos feitos em um dia */ void listaPedidoDeUmDia(Ped *pedido, int contPedido){ int i, dia, mes, ano, marcador = 0; char d[3]; char m[3]; char a[5]; printf(" Para visualizar todos os pedidos de uma determinado data entre com a data OBS:(apenas numeros)\n"); printf("Dia: "); scanf(" %s", d); printf("Mes: "); scanf(" %s", m); printf("Ano: "); scanf(" %s", a); system("clear"); dia = atoi(d); mes = atoi(m); ano = atoi(a); ordenarPorNomeCliente(pedido, contPedido); /* Função que ordena os pedidos por nome dos Clientes */ for(i=0; i<contPedido; i++){ if(pedido[i].ano == ano && pedido[i].mes && pedido[i].dia){ imprimirPedido(pedido[i]); marcador = i; } } if(!marcador){ printf("\n !!Nenhum pedido cadaastrado nesse dia!!\n"); sleep(3); } else getch(); system("clear"); menu(); } /* Codigo da Função que ordena os pedidos pelo nome dos clientes */ void ordenarPorNomeCliente(Ped *pedido, int contPedido){ int i, j, marcador; Ped aux; for(i=1; i<contPedido; i++){ /* laço que faz a busca e ordenação */ aux = pedido[i]; j = i-i; do{ marcador = 0; if(strcmp(pedido[j]).clienteQuePediu.nome, aux.clienteQuePediu.nome) > 0){ pedido[j+1] = pedido[j]; j--; marcador = 1; } if(j < 0) marcador = 0; }while(marcador); pedido[j=1] = aux; } } /* Fim do Programa */
  2. Oi, sou novo no fórum, e estou aprendendo a usar C, como meu primeiro projeto, eu estou fazendo um simples rpg, eu gostaria de implementar uma colisão precisa, então eu precisaria pegar um caractere em uma coordenada do buffer, teria como fazer? Agradeço! Na foto pode se ver o personagem (P) e um soldado (S), precisaria achar o S no buffer, para fazer o sistema de diálogo e colisão.
  3. Pessoal estou com um problema no meu código podem me ajudar com esse erro ? /*Faça um algoritmo em linguagem C que emule as características de um player de músicas sendo executado em modo texto, via prompt de comando. 1. Deve-se criar uma playlist das músicas utilizando uma lista encadeada. A lista encadeada poderá ser simples ou dupla, circular ou não circular. Fica a critério do aluno decidir. 2. Deve-se armazenar o nome de cada música, do artista/banda e a duração da faixa. Para o armazenamento utilize uma estrutura heterogênea de dados. 3. Para inserção dos dados, você pode criar uma leitura dos dados através de um menu na tela ou já deixá-los armazenados em um arquivo texto no seu computador e só carregar este arquivo ao executar o programa. Ou ambas soluções. Decida também como você irá implementar a inserção (no início, no fim ou no meio da lista encadeada); 4. Deve existir um menu na tela. Este menu deve permitir a inserção de novas músicas (caso optado pela inserção manual de dados), deve ter a opção de listar todas as músicas da playlist (listagem de uma lista encadeada) na tela e encerrar o*/ #include<stdio.h> #include<stdlib.h> #include<locale.h> #include<string.h> struct playlist_musical { char musica[50], cantor[50]; float tempo; struct playlist_musical* prox; }; struct playlist_musical* inicio, * meio, * fim, * aux; void inserirmusica() { int c; playlist_musical *novo = (struct playlist_musical*) malloc(sizeof(struct playlist_musical)); printf("Selecione a musica\n"); fgets(novo->musica, 49, stdin); printf("Selecione o artista"); fgets(novo->cantor, 49, stdin); printf("Duracao da musica"); scanf_s("%f", &novo->tempo); while ((c = getchar()) != 'n' && c != EOF){} novo->prox = NULL; if (inicio == NULL) { inicio = fim = novo; } else { fim->prox = novo; fim = novo; } } void limpar_lista() { char ch; if (inicio == NULL) { printf("\nLista"); } else { printf("s\n"); ch = getchar(); if (ch == 's'); while (inicio != NULL) { aux = inicio; inicio = inicio->prox; free(aux); // limpar memoria } printf("\n Lista vazia"); } } void visualizar_lista() { aux = inicio; if (inicio == NULL) { printf("\n Lista Vazia"); } else { while (aux != NULL) { printf("musica:%s", aux->musica); printf("cantor:%s", aux->cantor); printf("duracao: %f\n", aux->tempo); aux = aux->prox; } } } void procurar_musica() { aux = inicio; if (inicio == NULL) { printf("\n Lista vazia"); } else { char musica[50]; printf("Digiete a faixa:"); scanf_s("%s", &aux); while (aux != NULL) { if (musica == aux->musica) { printf("\n Musica %s encontrada\n", aux->musica); printf("musica: %s", aux->musica); printf("cantor:%s\n", aux->cantor); return; } else { aux = aux->prox; } } if (aux == NULL) { printf("\n Musica %s nao encontrada", musica); } } printf("\n"); } int main() { setlocale(LC_ALL, ""); int opc, c; do { printf("1 Inserir Musica\n"); printf("2 Procurar Musica\n"); printf("3 Ver Lista\n"); printf("4 Limpar Lista\n"); printf("5 Sair\n"); printf("Escolha uma opcao"); scanf_s("%d", &opc); while ((c = getchar()) != '\n' && c != EOF); {} switch (opc) { case 1: { inserirmusica(); system("pause"); break; } case 2: { procurar_musica(); system("pause"); break; } case 3: { visualizar_lista(); system("pause"); break; } case 4: { limpar_lista(); system("pause"); break; } default: printf("Opcao nao existe"); break; } system("cls"); } while (opc != 5); return 0; }
  4. Quando excecuto esse programa ele faz tudo com exceção da última linha. Se eu colocar mais comandos todos funcionam, mas a última linha sempre dá Segmentation fault. Podem me ajudar? //Faça um programa que receba a idade e o peso de 7 pessoas . Calcule e mostre: A quantidade de pessoas com mais de 90 quilos; A média das idades das sete pessoas. #include <stdio.h> #define num_pessoas 7 typedef struct { int idade; float peso; } Pessoa; int main () { Pessoa qtp[num_pessoas - 1]; int i, quant_acima90 = 0, soma = 0; float media; for (i = 0; i < num_pessoas; i++) { printf ("Informe a idade da %d° pessoa: ", i+1); scanf ("%d", &qtp.idade); printf ("Informe o peso da %d° pessoa: ", i+1); scanf ("%f", &qtp.peso); printf ("\n"); soma += qtp.idade; if (qtp.peso > 90) { quant_acima90 ++; } } media = soma/num_pessoas; printf ("%d pessoas estão acima de 90Kg.", quant_acima90); printf ("\nA media das idades das pessoas e: %.2f", media); return (0); }
  5. Escreva um código em C que resolva o problema abaixo e envie o .c Felippe foi na reunião de comemoração do primeiro milhão de sua empresa. Para agradar três de seus sócios, Douglas, Rafael e Gabriel - que são colecionadores - ele levou várias modas raras que conseguiu em uma viagem a china. Seu objetivo era avaliar se, com essas moedas, todos agora teriam a mesma quantidade de moedas na coleção, ou seja, Felippe gostaria de distribuir as moedas para os amigos de forma que todos acabem com a mesma quantidade de moedas. Para garantir transparência na divisão, Felippe pediu para que você escreva um programa que receba em uma linha quatro inteiros, relativos as moedas de Douglas, Rafael, Gabriel e Fellippe respectivamente e informa em uma unica linha a palavra "consegue" caso com a quantidade de moedas de Felippe seja suficiente para que Douglas, Rafael e Gabriel fiquem com a mesma quantidade de moedas na coleção e "impossivel" caso contrario. A saída deve conter uma quebra de linha após a palavra. Estou usando o gitpod
  6. Boa noite pessoal!! É o seguinte minha intenção é aprender a biblioteca SDL 2 para fazer pequenos joguinhos; só pra ter uma noção de como funciona (até hoje só mexi em console). Eu pesquisei e acabei copiando o código abaixo; ele compila sem erro e roda mas não imprime o retângulo: #include <SDL/SDL.h> int main(int argc, char** argv) { printf("Iniciando SDL...\n"); int width = 10, height = 10; SDL_Surface *screen; //cria uma surface SDL screen = SDL_SetVideoMode(640, 480, 16, SDL_HWSURFACE); //inicia o vídeo printf("SDL iniciado...\n"); SDL_Surface *retangulo; //declara o retângulo retangulo = SDL_CreateRGBSurface(0, width, height, 32, 0, 0, 0, 0); //cria o retângulo SDL_Rect rect = {350, 250, 100, 100}; SDL_FillRect(retangulo, NULL, SDL_MapRGB(screen->format, 255, 0, 0)); //pinta o retângulo SDL_BlitSurface(retangulo, &rect, screen, NULL); SDL_UpdateRect(screen, 0, 0, 0, 0); SDL_UpdateRect(retangulo, 0, 0, 0, 0); SDL_FreeSurface(retangulo); SDL_FreeSurface(screen); //aqui implementa o modo de fechar o software SDL_Event event; while(1) { while (SDL_PollEvent(&event)) { switch (event.type) { case SDL_KEYDOWN: //caso alguma tecla seja pressionada { switch (event.key.keysym.sym) //para detectar a tecla pressionada { case SDLK_ESCAPE: printf("ESC pressionado.\n"); exit(0); break; case SDLK_UP: printf("Seta para cima pressionanda.\n"); exit(0); break; case SDLK_a: printf("A pressionado.\n"); exit(0); break; } break; } } if(event.type == SDL_QUIT) //fecha através do botão fechar { printf("Fechado pelo botão fechar...\n"); exit(0); } } } } Alguém pode me dizer o que tem de errado? E me ajudar na maneira certa de declarar e renderizar um retângulo? Eu pesquisei esse código e fui codificando meio que sem saber o que estava acontecendo.
  7. Boas, fiz um programa bem simples apenas para verificar a igualdade entre 2 strings, mas o meu compilador (visualStudio 2019) diz que tem erros na parte do "_Bool". Alguém pode explicar porquê e o que tenho de fazer para corrigir o problema? #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> int main() { _Bool strings_iguais(char s1[], char s2[]); if (strings_iguais("casa", "casa")) { printf("\n As strings sao Iguais. \n"); } else { printf("\n As strings nao sao Iguais. \n"); } system("pause"); } _Bool strings_iguais(char s1[], char s2[]) { int i = 0; while (s1[i] == s2[i] && s1[i] != '\0' && s2[i] != '\0') { ++i; } if (s1[i] == '\0' && s2[i] == '\0') { return 1; } else { return 0; } }
  8. Alguem poderia me ajudar? Escreva um algoritmo para calcular e escrever o n-ésimo maior termo de um vetor, onde o valor de N e o vetor serao informado pelo usuário. por exemplo se temos o vetor ( 5, 6, 11, 12, 17, 18, 23, 24), e Se de N for igual a 3, deve ser impresso o valor 18. Se o valor de N for igual 5, deve ser impresso o valor 12. Se o valor de N for igual a 8, deve ser impresso o valor 5 #include <stdio.h> #define x 5 main(){ int vetor[x],posicao,i,j,maior=0; printf ("Digite uma sequencia de numeros de tamanho: %d", x); printf ("Apenas numeros positivos e inteiros: "); for (i=0;i<x;i++){ scanf("%d",&vetor[i]); } printf ("Digite um valor inteiro e Positivo."); printf("Para encontrar o maior elemento da sequencia previamente digitada,/nDigite um numero:"); scanf("%d",&posicao); printf("\n\n"); for (i=0;i<x;i++){ printf("%d, ",vetor[i]); } for (i=0;i<x;i++){ if(vetor[i]>maior){ maior=vetor[i]; } } printf("\nmaior = %d",maior); } . PS .: O vetor não deve ser duplicado e nem modificado (não ordene). ps1.: considere que o vetor não tem números repetidos. Eu sei que tem que encontrar o maior numero 1º, mas depois disso, nao faco ideia de ocmo fazer.
  9. Boa noite, estou a ter a cadeira de programação na faculdade e estou com algumas dificuldades em fazer um programa com estruturas. Podem dar uma ajuda? O enunciado segue em pdf no anexo (É o programa 1 do pdf). #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> typedef struct // Definição da Estrutura "Endereço" { char rua[50]; int numero; char cidade[30]; char codigo_postal[8]; }tipo_endereco; typedef struct // Definição da Estrutura "Pessoal" { char nome[50]; int telefone; tipo_endereco endereco; }ficha_pessoal; int main() { system("pause"); } PC_Prat_Estruturas.pdf
  10. Eu sou novo na area de programação em C e eu gostaria de ajuda para terminar esse exercicio: Faça um programa que leia quinze números inteiros, calcule a média e diga quantos elementos são maiores que a média. O programa que eu fiz está tudo certo(eu acho) mas eu não sei como terminar mostrando a quantidade de números maior que a média, ficarei grato com a ajuda. #include<stdio.h> #include<stdlib.h> #include <conio.h> #define MAX 15 int main (){ int n=0,num[MAX],mm,soma=0, media; for (n=0; n<MAX; n++){ printf ("\ndigite um valor: "); scanf ("%d", &num[n]); } for (n=0; n<MAX; n++){ soma = soma + num[n]; } media = soma/MAX; printf ("\n\nMedia:%.2f \n", media); getch(); }
  11. Oi pessoal, será que vocês poderiam me ajuda a fazer uma calculadora de número binário de 2bits que apenas soma Eu não sei como devo faze-lá, se o certo seria passa-lo para decimal, somar e depois desconverter ou se teria como fazer a soma direto Desde já agradeço.
  12. Faça um algoritmo que leia 3 valores a, b e c, coeficientes de uma equação de segundo grau, e calcule e escreva a soma das raízes da equação. Dica:As raízes de uma equação podem ser calculadas pela fórmula de Baskhara. Qual seria meu erro em meu programa? Ele da erro na linha 8 #include <stdio.h> #include <math.h> int main() { float a,b,c,raiz1,raiz2,soma; printf ("Digita, nesta ordem, os valores A, B e C"); scanf ("%f%f%f",&a,&b,&c); raiz1=(-b+sqrt(pow(b,2)-(4*a*c)))/(2*a); raiz2=(-b-sqrt(pow(b,2)-(4*a*c)))/(2*a); soma=(raiz1+raiz2); printf ("A soma das raízes da equação é: %f",soma); }
  13. Olá, eu gostaria de escrever diretamente num printf o texto "%d", contudo, se eu fizer isso diretamente, o programa interpretará como uma referência a uma variável inteira. Eu gostaria de saber se é possível fazer esse print, sem utilizar uma variável char. adicionado 4 minutos depois Eu descobri por acidente kk, o jeito é usar dois % antes, da seguinte forma: printf("%%d");
  14. Olá meus queridos, desenvolvi este jogo em C como um trabalho para faculdade de Sistemas de Informação e gostaria de opiniões e críticas... Lembrando que foi meu primeiro contato com programação e o jogo realmente devia rodar no "terminal", só jogar no compilador e executar /* |-----------------------------------------------------------------------------| | ALUNOS | | Higor de Deus Matos - 6372 | | | |-----------------------------------------------------------------------------| | PROFESSORA | | Rachel dos Reis | | UNIVERSIDADE FEDERAL DE VIÇOSA | | CAMPOS RIO PARANAIBA | |-----------------------------------------------------------------------------| */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <locale.h> #include <time.h> #include <windows.h> //CASO LINUX, REMOVER ESSA BIBLIOTECA E TAMBÉM AS LINHAS DE 1317 ATÉ A 1322 PARA FUNCIONAR //-------------------------------------------------------------------------- Armazenamento do Jogo ---------------------------------------------------------------------------------------------- typedef struct rotulo_campominado{ char **camp_pad; // Campo que é apresentado para o jogador char **camp_padinvi; // Campo que recebe as bombas aleatroriamente char opcao; // Variável de seleção nos menus char dicas; // Variável que armazena as dicas para jogatina char nome[30]; // Nome para recordes int lin; // Variável que indica o numero de linhas int col; // Variável que indica o numero de colunas int lin_s; // Variável que indica a linha selecionada int col_s; // Variável que indica a coluna selecionada int corder_lin; // Variável que indica as coordenadas int corder_col; // Variável que indica as coordenadas int bandeiras; // Variável que indica quantas bandeiras foram colocadas int quantidade_bombas; // Variável para quantidade de bombas int quantidade_ganhou; // Variável para verificar se o usuário ganhou int cont; // Contador para gerar as linhas int cont2; // Contador para gerar as colunas int bombas; // Numero de bombas int pers_ou_pad; // Criar os recoredes personalizados ou padrão float tempo; // Melhores tempos no personalizado clock_t cronometro; // Marcar o tempo jogado }Campominado; typedef struct rotulo_recordes{ float tempo; // Guardar os tempos char nome[30]; // Guardar os nomes }Recordes; //----------------------------------------------------------------------- Fim Armazenamento do Jogo ---------------------------------------------------------------------------------------------- // ------------------------------------------------------------ Declaração das funções para utilizar em todo escopo ----------------------------------------------------------------------- void menu(Campominado*s); // MENU PRINCIPAL PARA ESCOLHA void progresso_jogatina(Campominado*s); // EXIBIÇÃO DO PROGRESSO DO JOGO, DICAS, BANDEIRAS COLOCADAS, ESPAÇOS ABERTOS void bomba(Campominado*s); // GERAÇÃO DAS BOMBAS EM LOCAIS ALEATÓRIOS void apres_camp(Campominado*s); // APRESENTAÇÃO DO CAMPO PADRÃO PARA INÍCIO void game_over(Campominado*s); // ABERTURA DOS ESPAÇOS SEM BOMBA E APRESENTAÇÃO DO GAME OVER int abr_espaco(Campominado*s); // SELEÇÃO DO CAMPO PARA ABERTURA void colocar_bandeira(Campominado*s); // SELEÇÃO DO CAMPO PARA COLOCAR BANDEIRA void abrir_ou_bandeira(Campominado*s); // MENU DE ESCOLHA PARA ABRIR OU COLOCAR BANDEIRA void preenche(Campominado*s); // PREENCHE OS CAMPOS COM # SIMBOLIZANDO FECHADO void novojogo(Campominado*s); // INICIA O NOVO JOGO COM O CAMPO PADRÃO 9X9 10 BOMBAS void verif_ganhou(Campominado*s); // VERIFICA SE O JOGADOR GANHOU OU SE ELE EXPLODIU UMA BOMBA void apresen_arte_campominado(Campominado*s); // APRESENTA A ARTE "CAMPO MINADO" COM OS COMANDOS PUTS void apresen_arte_you_win(Campominado*s); // APRESENTA A ARTE "VOCÊ VENCEU" COM OS COMANDOS PUTS void apresen_arte_game_over(Campominado*s); // APRESENTA A ARTE "VOCÊ PERDEU" COM OS COMANDOS PUTS void comojogar(Campominado*s); // TUTORIAL DE COMO JOGAR void apresen_dicas(Campominado*s); // APRESENTAR DICAS DE QUANTAS BOMBAS EXISTEM NOS QUADRADOS ADJACENTE void bandeiras_colocadas(Campominado*s); // CONTAR QUANTAS BANDEIRAS FORAM COLOCADAS E LIMITAR void abrir_campos_fim_de_jogo(Campominado*s); // ABRIR OS CAMPOS QUE NÃO POSSUEM BOMBAS QUANDO DER GAME-OVER void you_win(Campominado*s); // APRESENTA VITÓRIA E SELEÇÃO DE MENU PARA SAIR OU VONTALR void digitar_coordenada(Campominado*s); // SELECIONAR A COORDENADA PARA ABRIR OU COLOCAR BANDEIRA void apresen_dicas_local(Campominado*s); // JOGADOR ABRIR UM ESPAÇO NO QUAL ELE COLOCOU UMA BANDEIRA MAS NÃO HAVIA UMA LÁ void personalizar_jogo(Campominado*s); // JOGADOR ESCOLHE QUANTAS BOMBAS E TAMANHO DO CAMPO void criar_campo(Campominado*s); // CRIAR CAMPO COM O TAMANHO DESEJADO void zerar_campo(Campominado*s); // ZERAR TODO O CAMPO PARA JOGAR NOVAMENTE void recordes(Campominado*s); // MONTA RECORDES DOS JOGOS void apres_arte_recordes(Campominado*s); // APRESENTA A ARTE "RECORDES" COM OS COMANDOS PUTS void abr_espaco_band(Campominado*s); // VERIFICA SE É GAME OVER OU SE ONDE FOI COLOCADO A BANDEIRA HAVIA UM NUMERO // ------------------------------------------------------------ Fim Declaração das funções para utilizar em todo escopo ----------------------------------------------------------------------- // --------------------------------------------------------------------------- Funções Utilizadas --------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------- ARTES Recordes ------------------------------------------------------------------------------------------------------ void apres_arte_campominado2 (Campominado*s) { fflush(stdin); printf(" c=====e\n"); printf(" H\n"); printf(" ____________ _,,_H__\n"); printf(" (__((__((___() //| |\n"); printf(" (__((__((___()()_____________________________________// |!!!!!|\n"); printf(" (__((__((___()()()------------------------------------' |_____|\n"); } void apres_arte_recordes (Campominado*s) { printf("\n\n"); puts(" ----------------------------------------------------"); puts(" | .---. .--. .--. .--. .---. .---. .--. .--. |"); puts(" | : .; :: .--': .--': ,. :: .; :: . :: .--': .--' |"); puts(" | : .': `; : : : :: :: .': :: :: `; `. `. |"); puts(" | : :.`.: :__ : :__ : :; :: :.`.: :; :: :__ _`, : |"); puts(" | :_;:_;`.__.'`.__.'`.__.':_;:_;:___.'`.__.'`.__.' |"); puts(" ----------------------------------------------------"); printf("\n\n"); printf(" ___________ \n"); printf(" '._==_==_=_.' \n"); printf(" .-\\: /-. \n"); printf(" | (|:. |) | \n"); printf(" '-|:. |-' \n"); printf(" \\::. / \n"); printf(" '::. .' \n"); printf(" ) ( \n"); printf(" _.' '._ \n"); printf(" '-------' \n\n"); fflush(stdin); } //--------------------------------------------------------------------------------- FIM ARTES Recordes ------------------------------------------------------------------------------------------------------ //--------------------------------------------------------------------------------- Recordes ------------------------------------------------------------------------------------------------------ void recordes (Campominado*s) { fflush(stdin); Recordes MELHORES[6]; // Definir o typdef int i = 0; s->tempo = (float)s->cronometro/CLOCKS_PER_SEC; FILE* arquivo; for(i=0;i<6;i++) { MELHORES[i].tempo = 99999/CLOCKS_PER_SEC; } if(s->pers_ou_pad == 1) // JOGO PERSONALIZADO { arquivo = fopen("recordes_personalizados.txt","r"); }else if(s->pers_ou_pad == 0) // JOGO PADRÃO { arquivo = fopen("recordes_padrao.txt","r"); } for(i=0;i<5;i++) { fflush(stdin); fscanf(arquivo,"%f %s\n",&MELHORES[i].tempo,MELHORES[i].nome); //RECEBER OS DADOS QUE ESTAVAM GRAVADOS NO ARQUIVOS } fclose(arquivo); strcpy(MELHORES[5].nome,s->nome); MELHORES[5].tempo = s->tempo; int j, tam = 6; int min; Recordes swap; for (i = 0; i < (tam-1); i++) { min = i; for (j = (i+1); j < tam; j++) { if(MELHORES[j].tempo < MELHORES[min].tempo) { min = j; } } if (MELHORES[i].tempo != MELHORES[min].tempo) { swap = MELHORES[i]; MELHORES[i] = MELHORES[min]; MELHORES[min] = swap; } } for(i=0;i<6;i++) { if(MELHORES[i].tempo == 0) { (MELHORES[i].tempo = (float)99999/CLOCKS_PER_SEC); // EVITAR BUG COM METODO DE ORGANIZAÇÃO } } if(s->pers_ou_pad == 1) { arquivo = fopen("recordes_personalizados.txt","w"); }else { arquivo = fopen("recordes_padrao.txt","w"); } if(arquivo == NULL) { printf("\n\tErro ao criar os recordes\n"); system("pause"); exit(1); }else { system ("cls || clear"); apres_arte_recordes(s); printf("\n\t\t\t\t\t\tArquivo de recordes criado com sucesso! Verifique a pasta raiz.\n\n"); } for(i=0;i<5;i++) { if(MELHORES[i].tempo != 99999/CLOCKS_PER_SEC && MELHORES[i].tempo != 0) { fprintf(arquivo,"%f %s\n",MELHORES[i].tempo, MELHORES[i].nome); } } fclose(arquivo); printf("\n S - Sair \n V - Voltar ao menu principal \n"); scanf ("%c",&s->opcao); if(s->opcao == 's' || s->opcao == 'v') // Caso o jogador digite a letra em minusculo { s->opcao = s->opcao-32; } switch (s->opcao) // Depois do Você ganhou o jogador tem a opção de voltar pro menu ou sair do jogo { case 'S': system("cls || clear"); exit (1); break; case 'V': system("cls || clear"); menu(s); break; default: system("cls || clear"); recordes(s); break; } fflush(stdin); strcpy(MELHORES[5].nome," "); //"LIMPAR" VARIAVEL UTILIZADA s->cronometro = 99999/CLOCKS_PER_SEC; //ZERA O CRONOMETRO menu(s); } //------------------------------------------------------------------------- Fim Recordes --------------------------------------------------------------------------------------------- //------------------------------------------------------------------------- Criar campo ------------------------------------------------------------------------------------------------ void criar_campo(Campominado*s) { fflush(stdin); s->camp_pad = (char**) malloc (s->lin * sizeof(char*)); s->camp_padinvi = (char**) malloc (s->lin * sizeof(char*)); if(s->camp_pad == NULL) { printf("\n Impossível alocar na memória, coloque um número menor"); exit (1); } if(s->camp_padinvi == NULL) { printf("\n Impossível alocar na memória, coloque um número menor"); exit (1); } for(s->cont=0;s->cont<s->lin;s->cont++) { s->camp_pad[s->cont] = (char*) malloc (s->col*sizeof(char)); if(s->camp_pad == NULL) { printf("\n Impossível alocar na memória, coloque um número menor"); exit (1); } s->camp_padinvi[s->cont] = (char*) malloc (s->col*sizeof(char)); if(s->camp_padinvi == NULL) { printf("\n Impossível alocar na memória, coloque um número menor"); exit (1); } } fflush(stdin); } //------------------------------------------------------------------------- Fim Criar campo ----------------------------------------------------------------------------------------- //------------------------------------------------------------------------- Zerar campo ----------------------------------------------------------------------------------------- void zerar_campo(Campominado*s) { fflush(stdin); for(s->cont=0;s->cont<s->lin;s->cont++) { for(s->cont2=0;s->cont2<s->col;s->cont2++) { s->camp_padinvi[s->cont][s->cont2] = ' '; s->camp_pad[s->cont][s->cont2] = ' '; } } fflush(stdin); } //------------------------------------------------------------------------- Fim Zerar campo ----------------------------------------------------------------------------------------- void personalizar_jogo(Campominado*s) { fflush(stdin); printf ("\n\n====================================================================== Personalização ====================================================================================== \n "); printf ("\n\n Número de LINHAS do campo: "); scanf("%d",&s->lin); if(s->lin == 0 ) { system ("cls || clear"); printf ("\n\n Número de linhas não pode ser igual a 0, tente novamente!\n\n"); personalizar_jogo(s); } printf ("\n\n Número de COLUNAS do campo: "); scanf("%d",&s->col); if(s->col == 0) { system ("cls || clear"); printf ("\n\n Número de colunas não poder ser igual a 0, tente novamente!\n\n"); personalizar_jogo(s); } printf ("\n\n Quantidade de bombas: "); scanf("%d",&s->quantidade_bombas); fflush(stdin); if(s->quantidade_bombas > ((s->lin) * (s->col))) { system ("cls || clear"); printf ("\n\n Quantidade de bombas maior do que tamanho do campo ou opção inválida, tente novamente!\n\n"); personalizar_jogo(s); } system ("cls || clear"); novojogo(s); fflush(stdin); } //------------------------------------------------------------------------- Fim Personalizar Jogo ----------------------------------------------------------------------------------------- //------------------------------------------------------------------------- Apresentar dicas depois de abrir bandeira sem bomba ----------------------------------------------------------------------------------------- void apresen_dicas_local(Campominado*s) { fflush(stdin); s->dicas = '0'; if(((s->lin_s-1) >= 0) && ((s->col_s-1) >= 0) && (s->camp_padinvi[s->lin_s-1][s->col_s-1] == '*' || s->camp_padinvi[s->lin_s-1][s->col_s-1] == 'B' )) { s->dicas++; } if(((s->lin_s-1) >= 0) && ((s->col_s) >= 0) && (s->camp_padinvi[s->lin_s-1][s->col_s] == '*'|| s->camp_padinvi[s->lin_s-1][s->col_s] == 'B')) { s->dicas++; } if(((s->col_s+1) < s->col) && ((s->lin_s-1) >= 0) && (s->camp_padinvi[s->lin_s-1][s->col_s+1] == '*'|| s->camp_padinvi[s->lin_s-1][s->col_s+1] == 'B')) { s->dicas++; } if(((s->col_s-1) < s->col) && ((s->lin_s) < s->lin) && (s->camp_padinvi[s->lin_s][s->col_s-1] == '*'|| s->camp_padinvi[s->lin_s][s->col_s-1] == 'B')) { s->dicas++; } if(((s->col_s+1) < s->col) && (s->camp_padinvi[s->lin_s][s->col_s+1] == '*'|| s->camp_padinvi[s->lin_s][s->col_s+1] == 'B')) { s->dicas++; } if(((s->lin_s+1) < s->lin) && ((s->col_s-1) >= 0) && (s->camp_padinvi[s->lin_s+1][s->col_s-1] == '*'|| s->camp_padinvi[s->lin_s+1][s->col_s-1] == 'B')) { s->dicas++; } if( ((s->lin_s+1) < s->lin)&& (s->camp_padinvi[s->lin_s+1][s->col_s] == '*'|| s->camp_padinvi[s->lin_s+1][s->col_s] == 'B')) { s->dicas++; } if(((s->col_s+1) < s->col)&& ((s->lin_s+1) < s->lin) && (s->camp_padinvi[s->lin_s+1][s->col_s+1] == '*'|| s->camp_padinvi[s->lin_s+1][s->col_s+1] == 'B')) { s->dicas++; } if (s->dicas == '0') { s->dicas = ' '; } s->camp_pad[s->lin_s][s->col_s] = s->dicas; s->camp_padinvi[s->lin_s][s->col_s] = s->dicas; fflush(stdin); } //------------------------------------------------------------------------- FIM Apresentar dicas depois de abrir bandeira sem bomba ----------------------------------------------------------------------------------------- //---------------------------------------------------------------------------- Selecionar Coordenada ------------------------------------------------------------------------------------------------------------------ void digitar_coordenada(Campominado*s) { fflush(stdin); printf("\n LINHA desejada para abrir ou colocar bandeira: "); scanf ("%d", &s->lin_s); s->lin_s--; fflush(stdin); if(s->lin_s > (s->lin-1) || s->lin_s < 0) // Evitar que o usuário selecione um espaço inexistente { printf ("\n\nDigite uma coordenada válida\n\n"); digitar_coordenada(s); } printf("\n COLUNA desejada para abrir ou colocar bandeira: "); scanf ("%d", &s->col_s); s->col_s--; fflush(stdin); if( s->col_s > (s->col-1) || s->col_s < 0 ) // Evitar que o usuário selecione um espaço inexistente { printf ("\n\nDigite uma coordenada válida\n\n"); digitar_coordenada(s); } abrir_ou_bandeira(s); fflush(stdin); } //---------------------------------------------------------------------------- Fim Selecionar Coordenada ----------------------------------------------------------------------------------------- // --------------------------------------------------------------------------- Abrir todos os campos no game-over ----------------------------------------------------------------------------------- void abrir_campos_fim_de_jogo(Campominado*s) { fflush(stdin); for(s->cont=0;s->cont<s->lin;s->cont++) { for(s->cont2=0;s->cont2<s->col;s->cont2++) { s->camp_pad[s->cont][s->cont2] = s->camp_padinvi[s->cont][s->cont2]; } } fflush(stdin); } // ---------------------------------------------------------------------- Fim Abrir todos os campos no game-over ------------------------------------------------------------------------------------ // -------------------------------------------------------------------------------- Apresentar Dicas ------------------------------------------------------------------------------------ void apresen_dicas(Campominado*s) { fflush(stdin); for(s->cont=0;s->cont<s->lin;s->cont++) { for(s->cont2=0;s->cont2<s->col;s->cont2++) { if(s->camp_padinvi[s->cont][s->cont2] != '*') { s->camp_padinvi[s->cont][s->cont2] = '0'; } } } for(s->cont=0;s->cont < s->lin;s->cont++) { for(s->cont2=0;s->cont2 < s->col;s->cont2++) { if(s->camp_padinvi[s->cont][s->cont2] == '*') { if(((s->cont-1) >= 0) && ((s->cont2-1) >= 0) && (s->camp_padinvi[s->cont-1][s->cont2-1] != '*')) { s->camp_padinvi[s->cont-1][s->cont2-1]++; } if(((s->cont-1) >= 0) && ((s->cont2) >= 0) && (s->camp_padinvi[s->cont-1][s->cont2] != '*')) { s->camp_padinvi[s->cont-1][s->cont2]++; } if(((s->cont2+1) < s->col)&& ((s->cont-1) >= 0) && (s->camp_padinvi[s->cont-1][s->cont2+1] != '*')) { s->camp_padinvi[s->cont-1][s->cont2+1]++; } if(((s->cont2-1) < s->col)&& ((s->cont) < s->lin) && (s->camp_padinvi[s->cont][s->cont2-1] != '*')) { s->camp_padinvi[s->cont][s->cont2-1]++; } if(((s->cont2+1) < s->col)&& (s->camp_padinvi[s->cont][s->cont2+1] != '*')) { s->camp_padinvi[s->cont][s->cont2+1]++; } if(((s->cont+1) < s->lin)&& ((s->cont2-1) >= 0) && (s->camp_padinvi[s->cont+1][s->cont2-1] != '*')) { s->camp_padinvi[s->cont+1][s->cont2-1]++; } if( ((s->cont+1) < s->lin) && (s->camp_padinvi[s->cont+1][s->cont2] != '*')) { s->camp_padinvi[s->cont+1][s->cont2]++; } if(((s->cont2+1) < s->col)&& ((s->cont+1) < s->lin)&& (s->camp_padinvi[s->cont+1][s->cont2+1] != '*')) { s->camp_padinvi[s->cont+1][s->cont2+1]++; } } } } for(s->cont=0;s->cont<s->lin;s->cont++) { for(s->cont2=0;s->cont2<s->col;s->cont2++) { if(s->camp_padinvi[s->cont][s->cont2] == '0' ) { s->camp_padinvi[s->cont][s->cont2] = ' '; } } } fflush(stdin); } // ------------------------------------------------------------------------ Fim Apresentar Dicas ----------------------------------------------------------------------------------------- // ------------------------------------------------------------------------ Apresentar arte campo minado ------------------------------------------------------------------------------------ void apresen_arte_campominado(Campominado*s) { fflush(stdin); printf("\n\n"); puts(" ---------------------------------------------------------------------------------"); puts(" | .--. .-..-. _ .-. |"); puts(" | : .--' : `' ::_; : : |"); puts(" | : : .--. ,-.,-.,-..---. .--. : .. :.-.,-.,-. .--. .-' : .--. |"); puts(" | : :__ ' .; ; : ,. ,. :: .; `' .; : : :; :: :: ,. :' .; ; ' .; :' .; : |"); puts(" | `.__.'`.__,_;:_;:_;:_;: ._.'`.__.' :_;:_;:_;:_;:_;`.__,_;`.__.'`.__.' |"); puts(" | : : |"); puts(" | :_; |"); puts(" ---------------------------------------------------------------------------------"); fflush(stdin); } // ------------------------------------------------------------------- Fim apresentar arte campo minado ------------------------------------------------------------------------------------ // ------------------------------------------------------------------------ Apresentar arte you win ------------------------------------------------------------------------------------ void apresen_arte_you_win(Campominado*s) { fflush(stdin); printf("\n\n"); puts(""); puts(" |-----------------------------------------------------------------------------|"); puts(" | .--. .--. ^ .----. ,-. |"); puts(" | : : : : ^ ^ : .--' : : |"); puts(" | : :._.: : .--. .---..---. : : __ .--. ,-.,-.: :,-. .--. _ _ |"); puts(" | : :' .; :: :: : :-' : :__:: ' .; ; : ,. :: : :' .; :' '.; ' |"); puts(" | :..__..: `.__.'`.__,`.__; `.____.' `.__,_;:_;:_;:_;:_;`.__.'`.___.' |"); puts(" | |"); puts(" | |"); puts(" |-----------------------------------------------------------------------------|"); printf(" ___________ \n"); printf(" '._==_==_=_.' \n"); printf(" .-\\: /-. \n"); printf(" | (|:. |) | \n"); printf(" '-|:. |-' \n"); printf(" \\::. / \n"); printf(" '::. .' \n"); printf(" ) ( \n"); printf(" _.' '._ \n"); printf(" '-------' \n\n"); fflush(stdin); } // ------------------------------------------------------------------------ Fim Apresentar arte you win ------------------------------------------------------------------------------------ // ------------------------------------------------------------------- Apresentar arte gaem over ------------------------------------------------------------------------------------ void apresen_arte_game_over(Campominado*s) { fflush(stdin); printf("\n\n"); puts(""); puts(" |-----------------------------------------------------------------------------|"); puts(" | .--. .--. ^ ,----. .-. |"); puts(" | : : : : ^ ^ : : : : |"); puts(" | : :._.: : .--. .---..---. : ,__:.---.,----, .-' :.---. _ _ |"); puts(" | : :' .; :: ::': :-' : : : :-': ;-; ' .; :: :-''' .; ' |"); puts(" | :..__..: `.__.'`.__,`.__; :__: `.__;:_: `.__.'`.__; `.___.' |"); puts(" | |"); puts(" | |"); puts(" |-----------------------------------------------------------------------------|"); printf(" _______________ \n"); printf(" / \\ \n"); printf(" / \\ \n"); printf(" // \\/\\ \n"); printf(" \\| XXXX XXXX | / \n"); printf(" | XXXX XXXX |/ \n"); printf(" | XXX XXX | \n"); printf(" | | \n"); printf(" \\__ XXX __/ \n"); printf(" |\\ XXX /| \n"); printf(" | | | | \n"); printf(" | I I I I I I I | \n"); printf(" | I I I I I I | \n"); printf(" \\_ _/ \n"); printf(" \\_ _/ \n"); printf(" \\_______/ \n"); fflush(stdin); } // ------------------------------------------------------------------- Fim apresentar arte gaeme over ------------------------------------------------------------------------------------ void comojogar(Campominado*s) { fflush(stdin); printf ("\n\n======================================================================== Como Jogar =================================================================================== \n "); printf ("\n Selecione o que for desejado conforme o menu e siga a legenda:"); printf("\n\n\t# Quadrado fechado"); printf("\n\n\tB Bandeira com bomba encontrada"); printf("\n\n\tX Bandeira sem bomba encontrada (Apenas em game over)"); printf("\n\n\t* Bomba"); printf("\n\n\t' ' Quadrado aberto sem bomba adjacente"); printf ("\n\n \t\t Ao selecionar um campo em que não tenha bomba mas os espaços adjacentes tenham, será mostrado o número de bombas envolta com dica."); printf ("\n\n \t\t\t Não se preocupe em digitar as letras em maiusculo, o programa aceita de qualquer modo :D !"); printf ("\n\n=========================================================================================================================================================================== \n "); printf("\n\n S - Sair \n V - Voltar ao menu principal \n"); scanf ("%c",&s->opcao); if(s->opcao == 's' || s->opcao == 'v') // Caso o jogador digite a letra em minusculo { s->opcao = s->opcao-32; } switch (s->opcao) // Depois do Você ganhou o jogador tem a opção de voltar pro menu ou sair do jogo { case 'S': system("cls || clear"); exit (1); break; case 'V': system("cls || clear"); menu(s); break; default: system("cls || clear"); printf ("\n\nDigite uma opção válida!\n\n"); comojogar(s); break; } fflush(stdin); } // ------------------------------------------------------------------- Quantidade de Bandeiras Colocadas ------------------------------------------------------------------------------------ void bandeiras_colocadas(Campominado*s) { fflush(stdin); s->bandeiras = 0; //EVITAR QUE CONTE A MESMA 2 VEZES for(s->cont=0;s->cont<s->lin;s->cont++) { for(s->cont2=0;s->cont2<s->col;s->cont2++) { if(s->camp_pad[s->cont][s->cont2] == 'B') { s->bandeiras++; } } } } // ------------------------------------------------------------------- Fim Quantidade de Bandeiras Colocadas ------------------------------------------------------------------------------------ // ------------------------------------------------------------------- Apresentar que o jogador ganhou ------------------------------------------------------------------------------------ void you_win(Campominado*s) { fflush(stdin); abrir_campos_fim_de_jogo(s); progresso_jogatina(s); s->cronometro = clock() - s->cronometro; printf("\n"); apresen_arte_you_win(s); printf("\n\n"); printf("\n\n Tempo de jogo: %f segundos, vá até a opção RECORDES no menu e veja se você está entre os melhores :D \n", (float)s->cronometro/CLOCKS_PER_SEC); printf("\n Digite seu nome: "); fflush(stdin); gets(s->nome); for(s->cont = 0; s->cont < s->lin; s->cont++) { free(s->camp_pad[s->cont]); free(s->camp_padinvi[s->cont]); } free(s->camp_pad); recordes(s); free(s->camp_padinvi); fflush(stdin); } // ------------------------------------------------------------------- Fim Apresentar que o jogador ganhou ------------------------------------------------------------------------------------ // -------------------------------------------------------------- Verificar se o jogador ganhou ou não --------------------------------------------------------------------------------- void verif_ganhou(Campominado*s) { fflush(stdin); s->quantidade_ganhou = ((s->lin * s->col) - s->bombas); for(s->cont=0;s->cont<s->lin;s->cont++) { for(s->cont2=0;s->cont2<s->col;s->cont2++) { if(s->camp_pad[s->cont][s->cont2] == '1') { s->quantidade_ganhou--; } if(s->camp_pad[s->cont][s->cont2] == '2') { s->quantidade_ganhou--; } if(s->camp_pad[s->cont][s->cont2] == '3') { s->quantidade_ganhou--; } if(s->camp_pad[s->cont][s->cont2] == '4') { s->quantidade_ganhou--; } if(s->camp_pad[s->cont][s->cont2] == '5') { s->quantidade_ganhou--; } if(s->camp_pad[s->cont][s->cont2] == '6') { s->quantidade_ganhou--; } if(s->camp_pad[s->cont][s->cont2] == '7') { s->quantidade_ganhou--; } if(s->camp_pad[s->cont][s->cont2] == '8') { s->quantidade_ganhou--; } if(s->camp_pad[s->cont][s->cont2] == ' ') { s->quantidade_ganhou--; } if(s->camp_padinvi[s->cont][s->cont2] == 'X') // ESPAÇO MARCADO COM BANDEIRA MAS SEM BOMBA, IMPOSSÍVEL GANHAR SEM ABRIR { s->quantidade_ganhou++; } } } if(s->quantidade_ganhou == 0) { you_win(s); }else { progresso_jogatina(s); digitar_coordenada(s); } fflush(stdin); } // -------------------------------------------------------------- Fim Verificar se o jogador ganhou ou não --------------------------------------------------------------------------------- // ------------------------------------------------------------------- Apresentar progresso de jogatina ---------------------------------------------------------------------------------- void progresso_jogatina(Campominado*s) { fflush(stdin); system ("clear || cls"); fflush(stdin); s->corder_lin = 0; printf("\n----------------------------------------------------------------------- Campo %dX%d - %d BOMBAS --------------------------------------------------------------------------------- \n \n",s->lin,s->col,s->bombas); printf("\n\n"); printf(" "); // Coordenadas superiores das colunas para deixar o campo melhor visualmente for(s->corder_col=0;s->corder_col<s->col;s->corder_col++) { if(s->corder_col<9) { printf("%d ", s->corder_col+1); }else if(s->corder_col<99) { printf(" %d ", s->corder_col+1); }else { printf("%d ", s->corder_col+1); } } printf("\n\n"); for(s->cont=0;s->cont<s->lin;s->cont++) { if(s->cont<9) { printf ("\t %d ", s->cont+1); // Coordenadas da esquerda das linhas para deixar o campo melhor visualmente printf (" |"); }else if (s->cont<99) { printf ("\t %d ", s->cont+1); // Coordenadas da esquerda das linhas para deixar o campo melhor visualmente printf (" |"); }else { printf ("\t %d ", s->cont+1); // Coordenadas da esquerda das linhas para deixar o campo melhor visualmente printf (" |"); } for(s->cont2=0;s->cont2<s->col;s->cont2++) { printf(" %c ",s->camp_pad[s->cont][s->cont2]); printf (" |"); } if(s->cont<=9) { printf (" %d ", s->cont+1); // Coordenadas da direita das linhas para deixar o campo melhor visualmente }else if(s->cont<=99) { printf (" %d ", s->cont+1); // Coordenadas da direita das linhas para deixar o campo melhor visualmente }else { printf (" %d ", s->cont+1); // Coordenadas da direita das linhas para deixar o campo melhor visualmente } printf ("\n\n"); } printf(" "); // Coordenadas inferiores das colunas para deixar o campo melhor visualmente for(s->corder_col=0;s->corder_col<s->col;s->corder_col++) { if(s->corder_col<=9) { printf("%d ", s->corder_col+1); }else if(s->corder_col<=99) { printf("%d ", s->corder_col+1); }else { printf("%d ", s->corder_col+1); } } bandeiras_colocadas(s); printf ("\n\n\n\t\t\t\t\t\t\t Quantidade de bandeiras colocadas: %d/%d\n", s->bandeiras,s->bombas); fflush(stdin); } //------------------------------------------------------------------- FIM DA APRESENTAÇÃO DO STATUS DA JOGATINA ----------------------------------------------------------------------------- //------------------------------------------------------------------------- Gerar bombas aleatórias ------------------------------------------------------------------------------------- void bomba(Campominado *s) { fflush(stdin); srand(time(NULL)); s->bombas = s->quantidade_bombas; for (s->quantidade_bombas;s->quantidade_bombas>0;s->quantidade_bombas--) { s->cont = rand() % s->lin; s->cont2 = rand() % s->col; if(s->camp_padinvi[s->cont][s->cont2] != '*') // Evitar que ele coloque uma bomba onde já foi colocada - Chance baixa mas tem! { s->camp_padinvi[s->cont][s->cont2] = '*'; }else { s->quantidade_bombas++; } } s->bandeiras = 0; // Zerar quantidade de bandeiras para iniciar o jogo! fflush(stdin); } //--------------------------------------------------------------------------- Fim Gerar bombas aleatórias -------------------------------------------------------------------------------- //----------------------------------------------------------------------------- Apresentar Campo padrão ------------------------------------------------------------------------------------------ void apres_camp(Campominado *s) { fflush(stdin); s->corder_lin = 0; printf("\n----------------------------------------------------------------------- Campo %dX%d - %d BOMBAS --------------------------------------------------------------------------------- \n \n",s->lin,s->col,s->bombas); printf("\n\n"); printf(" "); // Coordenadas superiores das colunas para deixar o campo melhor visualmente for(s->corder_col=0;s->corder_col<s->col;s->corder_col++) { if(s->corder_col<9) { printf("%d ", s->corder_col+1); }else if(s->corder_col<99) { printf(" %d ", s->corder_col+1); }else { printf("%d ", s->corder_col+1); } } printf("\n\n"); for(s->cont=0;s->cont<s->lin;s->cont++) { if(s->cont<9) { printf ("\t %d ", s->cont+1); // Coordenadas da esquerda das linhas para deixar o campo melhor visualmente printf (" |"); }else if (s->cont<99) { printf ("\t %d ", s->cont+1); // Coordenadas da esquerda das linhas para deixar o campo melhor visualmente printf (" |"); }else { printf ("\t %d ", s->cont+1); // Coordenadas da esquerda das linhas para deixar o campo melhor visualmente printf (" |"); } for(s->cont2=0;s->cont2<s->col;s->cont2++) { printf(" %c ",s->camp_pad[s->cont][s->cont2]); printf (" |"); } if(s->cont<=9) { printf (" %d ", s->cont+1); // Coordenadas da direita das linhas para deixar o campo melhor visualmente }else if(s->cont<=99) { printf (" %d ", s->cont+1); // Coordenadas da direita das linhas para deixar o campo melhor visualmente }else { printf (" %d ", s->cont+1); // Coordenadas da direita das linhas para deixar o campo melhor visualmente } printf ("\n\n"); } printf(" "); // Coordenadas inferiores das colunas para deixar o campo melhor visualmente for(s->corder_col=0;s->corder_col<s->col;s->corder_col++) { if(s->corder_col<=9) { printf("%d ", s->corder_col+1); }else if(s->corder_col<=99) { printf("%d ", s->corder_col+1); }else { printf("%d ", s->corder_col+1); } } printf ("\n\n\n\t\t\t\t\t\t\t Quantidade de bandeiras colocadas: %d/%d\n", s->bandeiras,s->bombas); fflush(stdin); } //---------------------------------------------------------------------------- Fim Apresentar Campo padão ------------------------------------------------------------------------------------- //-------------------------------------------------------------------------------- Apresentar Game Over --------------------------------------------------------------------------------------- void game_over(Campominado *s) { fflush(stdin); system ("clear || cls"); abrir_campos_fim_de_jogo(s); // Abrir campos fechados sem bombas no campo visível, onde tiver bandeira permanece progresso_jogatina(s); apresen_arte_game_over(s); for(s->cont = 0; s->cont < s->lin; s->cont++) { free(s->camp_pad[s->cont]); free(s->camp_padinvi[s->cont]); } free(s->camp_pad); free(s->camp_padinvi); printf ("\n S - Sair \n V - Voltar ao menu principal\n"); fflush(stdin); scanf ("%c", &s->opcao); fflush(stdin); if(s->opcao == 's' || s->opcao == 'v') // Caso o jogador digite a letra em minusculo { s->opcao = s->opcao-32; } switch (s->opcao) // Depois do GAME OVER o jogador tem a opção de voltar pro menu ou sair do jogo { case 'S': system("cls || clear"); exit (1); break; case 'V': system("cls || clear"); menu(s); break; default: system("cls || clear"); game_over(s); break; } fflush(stdin); } //-------------------------------------------------------------------------------------- Fim Apresentar Game Over ----------------------------------------------------------------------------- //--------------------------------------------------------------------------------------- Abrir espaço bandeira selecionada ------------------------------------------------------------------------------------ void abr_espaco_band(Campominado*s) { if(s->lin_s >= 0 && s->lin_s < s->lin && s->col_s >= 0 && s->col_s < s->col && s->camp_padinvi[s->lin_s][s->col_s] == '*' || s->camp_padinvi[s->lin_s][s->col_s] == 'B') { game_over(s); } if(s->lin_s >= 0 && s->lin_s < s->lin && s->col_s >= 0 && s->col_s < s->col && s->camp_padinvi[s->lin_s][s->col_s] == 'X') //CAMPO SEM BOMBA MAS ANTES MARCADO COM BOMBA { apresen_dicas_local(s); } } //---------------------------------------------------------------------------------------Fim Abrir espaço bandeira selecionada ------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------ Abrir espaços - RECURSIVA ---------------------------------------------------------------------------- int abr_espaco(Campominado*s) { fflush(stdin); int i,j,lin,col; if(s->lin_s >= 0 && s->lin_s < s->lin && s->col_s >= 0 && s->col_s < s->col && s->camp_padinvi[s->lin_s][s->col_s] > 48 && s->camp_padinvi[s->lin_s][s->col_s] < 57) // entre 48 e 57 estão os numeros na tabela asci { s->camp_pad[s->lin_s][s->col_s] = s->camp_padinvi[s->lin_s][s->col_s]; return 1; } lin = s->lin_s; col = s->col_s; for(i=lin-1;i<lin+2;i++) { for(j=col-1;j<col+2;j++) { if(i >= 0 && j >= 0 && i < s->lin && j < s->col && s->camp_padinvi[i][j] == ' ' && s->camp_pad[i][j] != ' ' && s->camp_pad[i][j] == '#') { s->camp_pad[i][j] = ' '; s->lin_s = i; s->col_s = j; abr_espaco(s); } else if (i>= 0 && j >= 0 && i < s->lin && j < s->col && s->camp_padinvi[i][j] > 48 && s->camp_pad[i][j] < 57 && s->camp_pad[i][j] == '#') { s->camp_pad[i][j] = s->camp_padinvi[i][j]; s->lin_s = i; s->col_s = j; abr_espaco(s); } } } return 1; } //-------------------------------------------------------------------------------------- Fim Abrir espaço RECURSIVA ------------------------------------------------------------------- //--------------------------------------------------------------------------------- Colocar uma bandeira no local selecionado ---------------------------------------------------------------- void colocar_bandeira(Campominado*s) { fflush(stdin); if(s->bandeiras == s->bombas) { printf ("\n\n Limite de bandeiras atingido, abra um espaço que contenha uma bandeira para liberar mais!\n\n"); digitar_coordenada(s); }else { if(s->camp_pad[s->lin_s][s->col_s] == 'B') // CAMPO QUE JÁ TEM UMA BANDEIRA { printf("\n\n Campo já possui uma bandeira, selecione outro ou abra o selecionado\n\n"); digitar_coordenada(s); } if(s->camp_padinvi[s->lin_s][s->col_s] == '*' ) // Campo Fechado com bomba { s->camp_pad[s->lin_s][s->col_s] = 'B'; s->camp_padinvi[s->lin_s][s->col_s] = 'B'; // CAMPO INVISÍVEL RECEBE O REFERENTE A BANDEIRA MARCADA ONDE HÁ BOMBA progresso_jogatina(s); digitar_coordenada(s); } if(s->camp_pad[s->lin_s][s->col_s] != '#') // IMPEDIR QUE O JOGADOR COLOQUE UMA BANDEIRA EM UM ESPAÇO ABERTO { printf("\nImpossível colocar uma bandeira em um local aberto\n\t"); digitar_coordenada(s); } if((s->camp_padinvi[s->lin_s][s->col_s] != '*') && // CAMPO FECHADO SEM BOMBA (s->camp_pad[s->lin_s][s->col_s] != 'B')) { s->camp_pad[s->lin_s][s->col_s] = 'B'; s->camp_padinvi[s->lin_s][s->col_s] = 'X'; // CAMPO INVISÍVEL RECEBE X REFERENTE A BANDEIRA MARCADA ONDE NÃO HÁ BOMBA progresso_jogatina(s); digitar_coordenada(s); } } fflush(stdin); } //------------------------------------------------------------------------------- Fim Colocar uma bandeira no local selecionado ------------------------------------------------------------------------- //------------------------------------------------------------------------ Selecionar se quer abrir um espaço ou colocar uma bandeira --------------------------------------------------------------- void abrir_ou_bandeira(Campominado*s) { fflush(stdin); printf ("\n A - Abrir espaço\n B - Adicionar bandeira\n "); scanf ("%c", &s->opcao); int retorno; if(s->opcao == 'a' || s->opcao == 'b') // Caso o jogador digite a letra em minusculo { s->opcao = s->opcao-32; } if (s->opcao == 'A') // Abrir espaço { abr_espaco_band(s); retorno = abr_espaco(s); }else if (s->opcao == 'B') // Colocar bandeira { colocar_bandeira(s); }else if (s->opcao != 'A' || s->opcao != 'B') { printf ("\nDigite uma opção válida!\n"); abrir_ou_bandeira(s); }else if (s->camp_pad[s->cont][s->cont2] == ' ') // Evitar que o usuário coloque uma bandeira em um lugar aberto { printf ("Não é possível colocar uma bandeira em um campo já aberto\n"); system("cls || clear"); } if(retorno == 0) { game_over(s); }else { verif_ganhou(s); progresso_jogatina(s); digitar_coordenada(s); } fflush(stdin); } //------------------------------------------------------------------ Fim Selecionar se quer abrir um espaço ou colocar uma bandeira ------------------------------------------------------------- //---------------------------------------------------------------------------- Preenchendo campo padrão ------------------------------------------------------------------------------------------------------------ void preenche(Campominado *s) { fflush(stdin); for(s->cont=0;s->cont<s->lin;s->cont++) { for(s->cont2=0;s->cont2<s->col;s->cont2++) { s->camp_pad[s->cont][s->cont2] = '#'; } } fflush(stdin); } //------------------------------------------------------------------------ Fim do campo padrão------------------------------------------------------------------------------------------------ //----------------------------------------------------------------------- Iniciar um novo Jogo -------------------------------------------------------------------------------------------------- void novojogo(Campominado *s) { fflush(stdin); system("cls || clear"); criar_campo(s); zerar_campo(s); bomba(s); preenche(s); apresen_dicas(s); s->cronometro = clock(); // Tempo de jogo apres_camp(s); digitar_coordenada(s); fflush(stdin); } //----------------------------------------------------------------------- Fim Iniciar um novo Jogo --------------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------- Menu Principal -------------------------------------------------------------------------------------------- void menu(Campominado *s) { fflush(stdin); system("cls || clear"); apresen_arte_campominado(s); do{ printf("\n\n\t\t\t\t\t\t\t\t\t N - Novo jogo\n\n"); printf ("\n\t\t\t\t\t\t\t\t\t C - Como jogar\n\n"); printf("\n\t\t\t\t\t\t\t\t\t P - Personalizar\n\n"); printf("\n\t\t\t\t\t\t\t\t\t R - Recordes\n\n"); printf("\n\t\t\t\t\t\t\t\t\t S - Sair\n\n"); apres_arte_campominado2(s); printf("\n\n\t\t\t\t\t\t\t\t\t "); scanf("%c", &s->opcao); if(s->opcao == 's' || s->opcao == 'r' || s->opcao == 'p' || s->opcao == 'c' || s->opcao == 'n')// Caso o jogador digite a letra em minusculo { s->opcao = s->opcao-32; } switch( s->opcao ) { case 'S': system("cls || clear"); printf("Saindo do menu...\n"); exit(1); break; case 'R': system("cls || clear"); fflush(stdin); apres_arte_recordes(s); printf("\n\n\t\t\t\t\t\t\tOs recordes são gravados em arquivos na pasta raiz do jogo :)\n\n"); system("pause"); menu(s); break; case 'P': system("cls || clear"); fflush(stdin); s->pers_ou_pad = 1; personalizar_jogo(s); break; case 'C': system("cls || clear"); comojogar(s); break; case 'N': s->lin = 9; s->col = 9; s->quantidade_bombas = 10; s->pers_ou_pad = 0; //Jogo padrão novojogo (s); break; default: system("cls || clear"); printf("\nOpção inválida! Tente novamente.\n\n"); menu(s); break; } }while(s->opcao != 'S' || s->opcao != 'R' || s->opcao != 'P' || s->opcao != 'C' || s->opcao != 'N'); fflush(stdin); } //----------------------------------------------------------------------------------------- Fim Menu Principal ----------------------------------------------------------------------------------------- int main(){ system("mode con:cols=10000 lines=10000"); // TAMANHO DA TELA keybd_event ( VK_MENU, 0x38, 0, 0 ); //TELA CHEIA keybd_event ( VK_SPACE, 0x39, 0, 0 ); keybd_event(0x58,0,0,0); keybd_event ( VK_MENU, 0x38, KEYEVENTF_KEYUP, 0 ); keybd_event ( VK_SPACE, 0x39, KEYEVENTF_KEYUP, 0 ); keybd_event(0x58,0,KEYEVENTF_KEYUP,0); setlocale(LC_ALL, "Portuguese"); // Colocar o código em português Campominado NOTAMAXIMA; // Definir o typdef menu(&NOTAMAXIMA); /*Deu muito trabalho, mas ficou pronto com tudo funcionando :)... Foram incontáveis horas dedicadas a ele, mas tudo está perfeito);*/ return 0; } Campo Minado - Projeto.pdf Campo Minado - Projeto.pdf Campo Minado - Projeto.pdf
  15. Eu estava fazendo uns exercícios de programação em c no visual studio code, mas ele parou de compilar. Eu aperto f6 e não acontece nada, eu já rentista-lei e não mudou nada, alguém pode me ajudar a resolver?
  16. Gostaria de saber se após rodar um programa em C, que digamos rode uma serie de perguntas, eu conseguiria salvar o conteúdo das respostas?
  17. Eu quero fazer um agente reativo simples de inteligência artificial. Meu código: #include <stdio.h> #include <stdlib.h> #include <stdbool.h> #include <locale.h> #include <string.h> char* cadeiraRodasPretaEscritorio(char* tecla, char* estado){ char* resultado; if(strcmp(estado, "ativo") == 0) strcpy(resultado, "Usa o computador!"); else if(strcmp(estado, "inativo") == 0){ if(strcmp(tecla, "esquerda") == 0) strcpy(resultado, "Move a cadeira para a esquerda!"); else if(strcmp(tecla, "direita") == 0) strcpy(resultado, "Move a cadeira para a direita!"); else if(strcmp(tecla, "acima") == 0) strcpy(resultado, "Move a cadeira para frente!"); else if(strcmp(tecla, "abaixo") == 0) strcpy(resultado, "Move a cadeira para trás!"); else if(strcmp(tecla, "A") == 0) strcpy(resultado, "Gira a cadeira para a esquerda!"); else if(strcmp(tecla, "D") == 0) strcpy(resultado, "Gira a cadeira para a direita!"); else if(strcmp(tecla, "W") == 0) strcpy(resultado, "Levanta a cadeira!"); else if(strcmp(tecla, "S") == 0) strcpy(resultado, "Abaixa a cadeira!"); else strcpy(resultado, ""); } else strcpy(resultado, ""); return resultado; } int main(){ setlocale(LC_ALL, "portuguese"); char* estado, tecla, continua2; bool continua1; do{ do{ printf("\n\nSeu estado é ativo ou inativo? "); fflush(stdin); scanf("%s", &estado); printf("Sua tecla é esquerda, direita, acima, abaixo, A, D, W ou S? "); fflush(stdin); scanf("%s", &tecla); printf("\n"); if(strcmp(cadeiraRodasPretaEscritorio(tecla, estado), "") != 0) printf("%s\n\n", cadeiraRodasPretaEscritorio(tecla, estado)); } while(strcmp(cadeiraRodasPretaEscritorio(tecla, estado), "") == 0); if(strcmp(cadeiraRodasPretaEscritorio(tecla, estado), "") != 0){ do{ printf("Quer continuar? "); fflush(stdin); scanf("%s", &continua2); if(strcmp(continua2, "sim") == 0) continua1 = true; else if(strcmp(continua2, "não") == 0) continua1 = false; printf("\n\n"); } while(strcmp(continua2, "sim") != 0 && strcmp(continua2, "não") != 0); } } while(continua1); return 0; } O erro de compilação no CodeBlocks é Permission denied e 1d returned 1 exit status.
  18. Pessoal estou com esse problema na hora de compilar esse código : #include <stdio.h> #include <locale.h> int main () { //variaveis int produto; setlocale(LC_ALL, "portuguese"); printf("Digite o codigo do produto:"); scanf("%d", &produto); if (produto == 1); { printf("Código 1: SUL"); } else { if (produto == 2); { printf("Código 2: NORTE"); } else { if (produto == 5 && 6 ); { printf ("Código 3: NORDESTE"); } else { if (produto == 7 && 8 && 9);{ printf("Código 4: SUDESTE"); } else { if (produto >=10 && <=20); { printf("Código 5: Centro-Oeste");} else ( if (produto >=25 && <=50 );{ printf("Código 6: NORDESTE"); } else { return 0; } ) } } } } } Eu não consegui localizar o erro, imagino que seja alguma chave (apesar de ter conferido). Outra coisa, alguém poderia me mostrar uma possível substituição para esses múltiplos if-else ?
  19. Boa tarde pessoal! Espero que todos estejam bem e lavando bem as mãos! Eu estou com uma dificuldade muito grande e não sei arrumar o erro desse código.. É um código que receba o salário, o valor do empréstimo e o número de prestações. Nenhum dos valores informados pode ser zero ou negativo. Devo mostrar no final o valor de cada prestação e se o empréstimo pode ou não ser realizado. Se o valor do empréstimo for exatamente dentro do limite máximo estabelecido, ele poderá ser concedido também. Mas eu não consigo arrumar o código, será que alguém poderia me ajudar, por favor? :c Segue o código abaixo: #include <stdio.h> #include <conio.h> #include <locale.h> int calculaEmprestimo(double salario, double valorDoEmprestimo, int numeroDePrestacoes); int main() { setlocale(LC_ALL,""); double salario, valorDoEmprestimo; int numeroDePrestacoes; printf("Digite o salário do funcionário: "); scanf("%f", &salario); printf("Digite o valor do empréstimo: "); scanf("%f", &valorDoEmprestimo); printf("Digite o número de prestações: "); scanf("%f", &numeroDePrestacoes); printf("\n"); calculaEmprestimo(salario, valorDoEmprestimo, numeroDePrestacoes); getch(); return 0; } int calculaEmprestimo(double salario, double valorDoEmprestimo, int numeroDePrestacoes) { if(salario <= 0 valorDoEmprestimo <= 0 numeroDePrestacoes <= 0) { printf("Não se admite na entrada, valores negativos ou 0!"); return 0; } double cadaPrestacao = (valorDoEmprestimo / (double)numeroDePrestacoes); printf("%f", cadaPrestacao); printf("Valor de cada prestação = R$%.2f", cadaPrestacao); }
  20. Eu tentei resolver um exercício, mas eu não estou achando ele em lugar nenhum. Ele basicamente pedia para pedir os dados de uma pessoa(nome, sexo e idade), e se a pessoa tivesse menos de 25 anos e fosse do sexo feminino era para imprimir o nome da pessoa e que ela foi aceita. O problema é que pelo código que eu fiz, depois de inserir as informações, o nome não é impresso, mesmo obedecendo as condições estabelecidas. Alguém ai pode me ajudar, por favor? #include <stdio.h> #include <stdlib.h> #include <string.h> struct dados{ char nome [70]; char sexo [20]; int idade; }; int main (){ struct dados pessoa1; printf ("Insira o seu nome: "); fgets (pessoa1.nome, 70, stdin); printf ("Insira o seu sexo: "); fgets (pessoa1.sexo, 20, stdin); printf ("Insira a sua idade: "); scanf ("%i", &pessoa1.idade); if (pessoa1.sexo==="feminino" && pessoa1.idade<25){ printf ("%s, voce foi aceita!\n", pessoa1.nome); } return 0; }
  21. Estou trabalhando em um código, porém não consigo compreender o que há de errado. A sequencia só funciona para a primeira entrada, e depois simplesmente apaga. É suposto que o usuario entre com um numero qualquer (0 a 10ˆ8) e o programa retorne se aquele numero inserido pode ser representado como a soma de 4 primos , por exemplo: Entrada: 87 Saída: 2ˆ2 + 3ˆ2+ 5ˆ2+7ˆ2 Entrada: 100 Saída: Não é possível a representação Qualquer dica, agradeço imensamente. Obs: É proibido utilizar funções, vetores, breaks e etc. É um trabalho de faculdade sobre as funções mais básicas: ifs, fors e whiles. Obrigada! Eis o código: #include <stdio.h> #include <math.h> int main() { int j1, j2, j3, j4, next, i, numb, prime; printf("Entrada: "); scanf("%d", &n); while(1){ if((j1 *j1) + (j2 *j2) + (j3 *j3) + (j4 *j4) == n){ printf("Saida: %d + %d + %d + %d", j1, j2, j3, j4); } next = p4+2; if(next > n) printf("Impossivel"); while(1) for(i=3; i<= sqrt(next); i=i+2){ if(next % i == 0) prime = false; else{ prime = true;} } if(prime == true){ p1=p2; p2=p3; p3=p4; p4=next; } else{ next = next +2;} } return 0; }
  22. linguagem c for só que meu professor eu acho erro no codigo #include <stdio.h> #define MAX 100 int main() { int v[MAX], i; for (i = 0; i < MAX; i++){ v += 0; v+= 101; } return 0; }
  23. #include <stdio.h> int main() { int v[], i; for (i = 0; i < 10; i++) printf("Digite um valor: "); scanf("%d", &v); return 0; }
  24. Me ajudem nesses 2 programas, por favor, estou no primeiro semestre da faculdade e estou começando e nao consigo fazer, favor usar apenas códigos que iniciantes saberiam fazer 1) Fazer um programa que leia três notas de um aluno, calcule e escreva a sua média harmônica ponderada conforme equação abaixo. Após desenvolver o programa, verificar o que acontece caso um ou mais valores lidos for zero? 2) Fazer um programa que leia 2 valores e escreva o maior deles. Dica:O maior entre dois valores quaisquer v1 e v2 pode ser calculado pela expressão (v1+v2+|v1-v2|)/2. O operador matemático de módulo ( |x| ) é representado na linguagem C pela função que calcula o valor absoluto.
  25. Ooi gente! Tenho um exercício para fazer e não sei como ou por onde começar Poderiam me dar uma ideia? Implementar o TAD Lista (de Produtos) com as seguintes operações: criar, inserir e remover um produto numa determinada posição, retornar um produto numa determinada posição, buscar um produto e encontrar a posição, imprimir a Lista. Usando listas sequenciais (por contiguidade)

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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...

Redes de Computadores - Gabriel Torres

PROMOÇÃO DE QUARENTENA

De R$ 39,90 por apenas R$ 9,90 só até as 23h59min desta sexta-feira 03/04/2020

CLIQUE AQUI E COMPRE AGORA MESMO!