Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.

giu_d

Membros Plenos
  • Total de itens

    115
  • Registro em

  • Última visita

  • Qualificações

    N/D

Reputação

89

1 Seguidor

Sobre giu_d

  • Data de Nascimento 28-03-1973 (45 anos)

Informações gerais

  • Cidade e Estado
    Capanema - PR
  • Sexo
    Masculino
  1. Se não aparecer o Visual C++ como instalado, aí amigo o q seria preciso fazer é instalar esse pacote (não sei se é assim q se fala) adicionado 2 minutos depois Mas pela imagem que você postou no início desse tópico está instalado adicionado 49 minutos depois Creio q já posso adiantar q se a mensagem de erro é essa conforme a imagem vai ser preciso fazer a configuração adequado do Visual Studio:
  2. @Sslifer_ Olá. Daria para informar qual erro está aparecendo? Pode ser uma imagem mesmo adicionado 8 minutos depois Seu código deve ficar dessa forma: #include "stdio.h" int main() { printf("isso memu"); system("pause"); // esse comando é para segurar a janela do cmd aberta após imprimir o texto acima return 0; } Se aparecer alguma mensagem de erro informe qual mensagem está aparecendo para que seja possível saber como proceder para resolver o problema adicionado 11 minutos depois Mas está parecendo que vai ser preciso informar o passo a passo para configurar o Visual Studio, para que não apareça mais erros adicionado 31 minutos depois É preciso saber também se o Visual Studio foi instalado corretamente para compilar e executar códigos em C/C++ adicionado 37 minutos depois Para saber se a instalação está adequada para códigos em C/C++ faça o seguinte: 1 - Abrir o Visual Studio 2 - Clicar em Arquivo -> Novo -> Projeto Feito isso uma janela parecida com essa deve aparecer: adicionado 38 minutos depois Se chegou até aí ótimo! adicionado 51 minutos depois Só é importante frisar que o código que você está tentando executar é em C e não C++
  3. @Sslifer_ Olá. Dei uma olhada na imagem que você passou e o que vi é que você não está incluindo a biblioteca "stdio.h" em seu código. Se você não incluir essa biblioteca no seu código, não vai ser possível fazer uso de comandos como printf e scanf. Procure remover essa biblioteca "stdafx.h" e inserir a biblioteca "stdio.h" para ver se resolve. Caso continue dando algum erro, comunique aqui e daí posso te passar três configurações que costumo fazer toda vez antes de iniciar um projeto no Visual Studio adicionado 5 minutos depois Para incluir a biblioteca "stdio.h" em seu código é dessa forma: #include "stdio.h"
  4. @Ana Júlia Silva Olá. O problema é sujeira no buffer de entrada. Experimenta fazer essa mudança (na parte comentada): cout<<"Lugar de origem:"; getline(cin, origem); cout<<"Latitude da cidade (em graus): "; cin>>lat1; cout<<"Longitude da cidade (em graus): "; cin>>long2; cin.get(); // esse comando serve para limpar o buffer de entrada no C++ cout<<"Lugar de destino:"; // ... Apenas uma dica: Em C++, para o caso de trabalhar com strings é usada a biblioteca <string>. Em C é q se usa a biblioteca <string.h>. Também não é necessário o uso da biblioteca <stdio.h>. Essa última também é para códigos em C e não C++. Apenas fiz esses comentários para procurar orientar você, ok?
  5. Se alguém tiver sugestões para passar para o autor do tópico fique a vontade p postar
  6. @Antonio_FPS Olá. Gostaria de dar uma breve explicação para se trabalhar com valores do tipo double. Para o caso de ler do teclado um valor desse tipo, já comentei aqui, mas apenas para reforçar: scanf("%lf", &y); Já para o caso de imprimir um valor do tipo double seria da mesma forma q um valor do tipo float. Veja nesse exemplo q peguei do seu exercício: printf("\nSeno de %f (funcao proposta):\t%f", x, seno(x, eps)); Como pode ver, para o caso de impressão não é necessário o "%lf" . Se quiser usar formatação, como, por ex, definir quantas casas decimais você quer mostrar, seria bem simples. Nesse exemplo fictício estou querendo imprimir os valores do tipo double com apenas com 2 casas decimais: printf("\nSeno de %.2f (funcao proposta):\t%.2f", x, seno(x, eps)); Onde o número 2 depois do ponto equivale a quantidade de casas decimais. Se fosse com 10 casas decimais, seria isso: %.10f Se deu para entender o q procurei passar ok! Se acaso ficou alguma dúvida fique a vontade para perguntar Obs: Caso o valor em questão fosse do tipo long double, aí sim seria preciso fazer uso do %lf para impressão, mas esse não é o foco dessa explicação e se deu para entender o q foi passado com relação a valores do tipo double ótimo!
  7. @Antonio_FPS Olá. Realmente sua função está funcionando agora. Mas ficou um certo ponto: No enunciado do exercício é falado como deve ser assinatura da sua função, que seria double seno(double x, double eps). Devemos fazer de acordo com o enunciado. Logo, se você pensar um pouco, vai saber como resolver seu exercício usando a assinatura para sua função de acordo com o enunciado. Dica: Dê uma olhada nos comentários acima adicionado 31 minutos depois Se não está conseguindo resolver olhando para os comentários feitos avisa, ok? adicionado 34 minutos depois
  8. @isrnick Obrigado pela explicação. Também pensei em algo assim: essa precisão ser passada como parâmetro.da função. Se acaso tiver alguma sugestão para orientar o autor do tópico fique a vontade
  9. @Antonio_FPS Tem um outro ponto. Sua função deve ter o tipo de retorno double e você não está retornando nada
  10. @Antonio_FPS O problema então está na sua função adicionado 8 minutos depois Perceba que no main você cria a variável do tipo double eps e, mesmo sem atribuir nenhum valor a ela, você passa ela como parâmetro ao chamar sua função adicionado 56 minutos depois @Antonio_FPS só uma pergunta. O q seria o eps?
  11. @Antonio_FPS Olá. A princípio só uma correção: Você está trabalhando com valores do tipo double. Logo, para fazer a leitura de um valor desse tipo seria isso: scanf("%lf", &x);
  12. @Simon Viegas De fato é preciso concordar com a explicação dada com relação ao comando for. O ideal é fazer que o for percorra todos os números que sejam maiores q 50 e menores que 100
  13. @Marcel Yamaki Tem um pequeno erro no seu printf. Usando o '&' comercial nele você vai imprimir o endereço de memória da variável em questão e não o valor dessa variável, q é o que você quer. Uma maneira d fazer esse exercício seria essa: #include <stdio.h> int main() { for(int i = 55 ; i < 100 ; i++) { if (i % 5 == 0) printf("%d ", i); } return 0; }
  14. @PaulaFabiana Olá. Devido a dificuldade q percebi ter com relação a trabalhar com lista encadeada resolvi entrar em contato com meu instrutor de C, e, além de uma breve explicação, também me orientou a revisar as aulas do curso e também me passou uma material muito bom. Esse material você pode conseguir aqui: http://www.ic.unicamp.br/~ra069320/PED/MC102/1s2008/Apostilas/Cap10.pdf Pelo pouco q estudei com esse material, já pude entender muita coisa q não estava clara com relação a lista encadeada. Por ex: No primeiro exercício q você postou e q depois foi em partes ajustado pelo @Simon Viegas o problema q está ocorrendo é q os valores estão sendo inseridos no início da lista. Por isso a impressão desses valores não segue a ordem de inserção. O correto seria inserir os elementos no fim da lista. Isso resolve q questão de imprimir de acordo com ordem de inserção. Mas, a princípio, dando uma breve olhada no material q passei acima, já deu para fazer um exercício bem simples, mas claro, inda continua a questão de inserção no início da lista. Mas a meta com esse exercício q vou passar é a didática. Realmente estou aprendendo com esse material. As explicações mais detalhadas sobre as funções q uso no código você consegue acessando esse material. Na verdade o código q vou postar aprendi a fazer devida a explicação dada no mesmo Segue o código. Ficou algo relativamente simples e com uma boa didática: #include <stdio.h> #include <stdlib.h> struct lista { int info; struct lista *prox; }; typedef struct lista Lista; /* função de inicialização: retorna uma lista vazia */ Lista *inicializa() { return NULL; // retorna uma lista vazia } /* inserção no início: retorna a lista atualizada */ Lista* insere(Lista* l, int i) { Lista *novo = (Lista *) malloc(sizeof(Lista)); novo->info = i; novo->prox = l; return novo; } /* função imprime: imprime valores dos elementos */ void imprime(Lista* l) { Lista *p = l; do { printf("Info: %2d\n", p->info); p = p->prox; } while (p != NULL); } void libera(Lista* l) { Lista *p = l; while (p != NULL) { Lista *t = p->prox; /* guarda referência para o próximo elemento */ free(p); /* libera a memória apontada por p */ p = t; /* faz p apontar para o próximo */ } } int main() { Lista *l; l = inicializa(); // inicializa a lista int cont = 0, x; do { printf("Digite o numero para inserir ou 0 para sair: "); scanf("%d", &x); fflush(stdin); if (x != 0) { l = insere(l, x); cont++; } } while (x != 0); printf("\nQuantidade de numeros inseridos: %d\n\n", cont); imprime(l); libera(l); return 0; } Se deu para ajudar mais um pouco maravilha. Devido a esse tópico foi q eu me dei conta dessa minha dificuldade e agora o negócio é estudar sobre o assunto!
  15. @Leandro Arnold Olá. Vou procurar primeiro passar um exemplo de um jogo da velha q creio q você vai entender bem. A meta, com isso, é você ver como é simples resolver o problema de duplicidade de código. Perceba nesse exemplo q vou passar, q a mesma função para verificar se há ganhador serve tanto para um jogador como para outro. Espero q com esse exemplo possa, de alguma forma, ajudar. #include <stdio.h> #include <stdbool.h> // para trabalhar com variáveis do tipo booleana, true e false #include <windows.h> #include <string.h> char matriz[3][3]; void showMatriz(); void initMatriz(); void requestPlay(char simbolo); bool isComplete(); bool isSequence(); void iniciar(); void readString(char dados[], int tam); struct jogador { char nome[50]; char simbolo; }; void readString(char dados[], int tam) { char ch; fgets(dados, tam, stdin); strtok(dados, "\n"); if (strlen(dados) == tam - 1) { while ((ch = getchar()) != '\n' && ch != EOF); } } void iniciar() { int indexAtual, qtdeJogadores = 2, i; struct jogador j[2]; system("cls"); printf("=====================\n"); printf("==| JOGO DA VELHA |==\n"); printf("=====================\n\n"); indexAtual = 0; printf("DIGITE O NOME DO JOGADOR 1: "); readString(j[indexAtual].nome, 50); // aqui eu criei uma função para ler uma string (nome), pode também fazer uso do printf se preferir j[indexAtual].simbolo = 'X'; // aqui atribu0 o símbolo para o jogador indexAtual++; printf("DIGITE O NOME DO JOGADOR 2: "); readString(j[indexAtual].nome, 50); j[indexAtual].simbolo = 'O'; bool finalizado = false; char *vencedor = NULL; indexAtual = 0; initMatriz(); // esvaziar o tabuleiro while (!finalizado) { system("cls"); // para limpar a tela showMatriz(); // imprimir o tabuleiro printf("E a vez do jogador %s\n", j[indexAtual].nome); requestPlay(j[indexAtual].simbolo); // aqui é a jogada, onde passo o símbolo referente a cada jogador como parâmetro if (isSequence()) // aqui equivale a fazer isso (isSequence() == true) { vencedor = j[indexAtual].nome; finalizado = true; } else if (isComplete()) finalizado = true; // aqui o valor de indexAtual fica sendo intercalado entre 0 e 1 indexAtual = (indexAtual + 1) % qtdeJogadores; } system("cls"); showMatriz(); if (vencedor == NULL) // se vencedor continua como NULL, significa que não houve vencedor, (empate), senão um jogador ganhou printf(" O Jogo terminou empatado!\n\n"); else printf(" O Jogador %s ganhou!\n\n", vencedor); vencedor = NULL; printf("\nFIM DE JOGO!\n\n"); } int main() { system("title Jogo da Velha"); char sim[5]; do { iniciar(); printf("\nDeseja jogar novamente? [s/n]: "); readString(sim, 5); } while (!strcmp("s", sim)); system("cls"); printf("\n\n\tObrigado por usar esse programa!\n\n"); return 0; } // aqui é pra limpar o tabuleiro void initMatriz() { int i, j; for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) { matriz[i][j] = ' '; } } } // tabuleiro usado no jogo void showMatriz() { int i, j, cont; printf("\n\n\t"); for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) { printf(" %c ", matriz[i][j]); if (j < 2) { printf("%c", -77); // colunas } } printf("\n\t"); for (cont = 1; cont <= 15; cont++) { if (i < 2) { printf("%c", -60); // linhas if (cont == 5 || cont == 10) { printf("%c", -59); // '+' } } } printf("\n\t"); } printf("\n\n"); } // exemplo de uma tabuleiro mais simples void ShowTab() { int i; printf("\n\n\n"); for (i = 0; i < 3; i++) { printf("\t %c | %c | %c ", matriz[i][0], matriz[i][1], matriz[i][2]); if (i < 2) { printf("\n\t---|---|---\n"); } } printf("\n\n\n"); } // aqui é solicitada a jogada para o jogador void requestPlay(char simbolo) { int jogada = 0, i, j; do { printf("\nLINHA: "); scanf("%d", &i); fflush(stdin); printf("COLUNA: "); scanf("%d", &j); fflush(stdin); if ((i > 3 || i < 1) || (j < 1 || j > 3)) { printf("\nERRO: Jogada invalida!\n"); jogada = 0; continue; } else jogada = 1; if (matriz[i - 1][j - 1] != ' ') { printf("\nERRO: Essa jogada ja foi efetuada!\n"); jogada = 0; continue; } else jogada = 1; } while (!jogada); matriz[i - 1][j - 1] = simbolo; } // aqui é verificado se houve empate bool isComplete() { int i, j; for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) { if (matriz[i][j] == ' ') { return false; } } } return true; } // aqui é verificado se algum jogador ganhou bool isSequence() { // Linhas if (matriz[0][0] == matriz[0][1] && matriz[0][1] == matriz[0][2] && matriz[0][0] != ' ') { return true; } if (matriz[1][0] == matriz[1][1] && matriz[1][1] == matriz[1][2] && matriz[1][0] != ' ') { return true; } if (matriz[2][0] == matriz[2][1] && matriz[2][1] == matriz[2][2] && matriz[2][0] != ' ') { return true; } // Colunas if (matriz[0][0] == matriz[1][0] && matriz[1][0] == matriz[2][0] && matriz[0][0] != ' ') { return true; } if (matriz[0][1] == matriz[1][1] && matriz[1][1] == matriz[2][1] && matriz[0][1] != ' ') { return true; } if (matriz[0][2] == matriz[1][2] && matriz[1][2] == matriz[2][2] && matriz[0][2] != ' ') { return true; } // Diagonais if (matriz[0][0] == matriz[1][1] && matriz[1][1] == matriz[2][2] && matriz[0][0] != ' ') { return true; } if (matriz[2][0] == matriz[1][1] && matriz[1][1] == matriz[0][2] && matriz[2][0] != ' ') { return true; } return false; } Procure entender bem o que está sendo feito no jogo. Caso tiver alguma dúvida fique a vontade para perguntar, ok? adicionado 3 minutos depois Perceba q eu faço uso do tipo de dado bool inserindo o arquivo de cabeçalho "stdbool.h". Caso preferir, usar os valores 0 para false e 1 para true

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

×