Ir ao conteúdo
  • Cadastre-se

Daniel Natan Schmitz

Membro Júnior
  • Posts

    10
  • Cadastrado em

  • Última visita

posts postados por Daniel Natan Schmitz

  1. @Xandrules Estou usando, continua apresentando um número negativo.... 

    Exemplo: se tento converter 111111111111 deveria aparecer 4095, ao invés disso o programa está retornando: -2585.

    #include <stdio.h>
    
    int bin_to_dec(int bin)
    {
        long int dec=0, d=1;
    	do{
            dec = dec+(bin%10)*d;
    		d = d*2;
    		bin = bin/10;
    	}while(bin != 0);
    
    	return dec;
    }
    int main(){
    	
    	long int bin=0, resultado=0;
    	printf("Digite um binario a ser convertido para decimal\n");
    	scanf("%li", &bin);
    	
    	resultado = bin_to_dec(bin);
    	
    	printf("O valor convertido é: %li\n", resultado);
    	return 0;
    }

    Este é o código utilizando long int

  2. Boa tarde, estou tentando criar um programa que converta valores binários em C, cheguei no seguinte código:

    #include <stdio.h>
    
    int bin_to_dec(int bin)
    {
        int dec=0, d=1;
    	do{
            dec = dec+(bin%10)*d;
    		d = d*2;
    		bin = bin/10;
    	}while(bin != 0);
    
    	return dec;
    }
    int main(){
    	
    	int bin=0, resultado=0;
    	printf("Digite um binario a ser convertido para decimal\n");
    	scanf("%d", &bin);
    	
    	resultado = bin_to_dec(bin);
    	
    	printf("O valor convertido é: %d\n", resultado);
    	return 0;
    }

    O problema é que ele só converte se o binários tiver no máximo 10 dígitos. Preciso que ele converta um binário de quantos dígitos o usuário quiser.

     

    Se alguém puder me ajudar fico muito agardecido.

  3. @dif Posso publicar o código que fiz, o problema é que ele converte apenas números binários de 8 bits, e preciso que ele converta quantos números o usuário quiser.

    Segue minha função

    int bin_to_dec(int valorint)
    {
        int total = 0;
        int potenc = 1;
        while(valorint > 0) {
            total += valorint % 10 * potenc;
            valorint = valorint / 10;
            potenc = potenc * 2;
        }
    
        return total;
    }

    Obs.: Ao resolver o problema desta função as outras meio que se resolvem sozinhas.

    • Curtir 1
  4. Boa noite pessoal, preciso criar um programa que converta bases numéricas:

    • Binário para decimal
    • Decimal para binário
    • Binário para Hexadecimal
    • Hexadecimal para binário

    O usuário poderá entrar com um número de quantos digitos ele quiser.

    Se souber de apenas uma, poste, pois de grão em grão a galinha enche o papo hehehe.

     

    Obrigado!

  5. Boa noite pessoal, estou desenvolvendo um "joguinho" de apostas com vários jogadores, segue meu código:

    #include <stdio.h>
    #include <conio.h> //Biblioteca para limpar a tela
    #include <locale.h> // Biblioteca para permitir usi de acentos e caracteres especiais
    #include <string.h> // Biblioteca para Strings
    #include <stdlib.h>
    #define size1 50
    #define size2 50
    
    // Atividade Prática Supervisionada
    // Código produzido por: Daniel Schmitz e Willian Felipe Motta
    // 1° período de Tecnologia em Sistemas para Internet
    // Universidade Tecnológica Federal do Paraná
    // Câmpus Toledo
    
    struct Jogador  //Struct que armazena dados do jogador
        {
            char nome[size2];
            int fichas_j;
        };
    
    
    
    
    
    int sorteio() // Função para sotear um número aleatório
    {
        int n_sorteado=0;
        srand(time(NULL) );
        n_sorteado = rand() % 18; // Defina que os números aleatórios não podem ultrapassar 18
        return n_sorteado;
    }
    
    int main()
    {
    
        char novo_jogador;
        int i=1;
    
    
        struct Jogador jogador[size1];
        setlocale(LC_ALL, "Portuguese"); //Define a língua usada, permitindo a utilização de acentos e caracteres especiais
        do{
            system("cls");
            printf("*********************************************************\n");
            printf("*********************************************************\n");
            printf("***************| Seja bem vindo a Roleta |***************\n");
            printf("*********************************************************\n");
            printf("*********************************************************\n");
    
            fflush(stdin); // Limpa o buffer do teclado para entrar com um tipo char
            printf("\nDigite o nome do jogador: \n");
            gets(jogador[i].nome); //Lendo o char
    
            printf("\n\nBem vindo, você esta iniciando o jogo com 10 fichas.\n");
    
            int fichas_jogador=10, aposta, fichas_apostadas=0, n_sorteado=0;
            char continuar;
    
            do{
                do{
                    printf("\nQuantas fichas deseja apostar?\n");
                    scanf("%d", &fichas_apostadas);
                    if(fichas_apostadas > fichas_jogador) printf("Você não tem todas essas fichas, tente novamente!");
                }while(fichas_apostadas > fichas_jogador); //Testando se a quantidade de fichas apostadas não ultrapassam a quantidade que o jogador tem
    
    
    
                printf("\nVocê deseja apostar no [0]zero, [2]par ou [1]ímpar?\n");
                scanf("%d", &aposta); //Escolhendo o tipo de número que o jogador deseja apostar
    
                n_sorteado = sorteio(); //Recebendo um número aleatório da função "sorteio"
    
                printf("\nNumero sorteado: %d\n", n_sorteado);
    
                if(aposta == 0) //Direciona o programa para a aposta do jogador
                {
                    if(n_sorteado == 0){ //Se o jogador apostou no número zero e foi sorteado o número zero, as fichas apostadas são multiplicadas por sete e armazenadas com as fichas pré-existentes
                        fichas_jogador = fichas_jogador - fichas_apostadas; //Deduz as fichas apostadas do total de fichas do jogador, para somar o novo número de fichas
                        fichas_jogador = fichas_jogador + (fichas_apostadas * 7);
                    }
                    else fichas_jogador = fichas_jogador - fichas_apostadas; //Se o jogador errou o número apostado ele perde o tanto de fichas que ele apostou
                }
    
                if(aposta == 1)
                {
                    if((n_sorteado % 2) != 0 )
                    {
                        fichas_jogador = fichas_jogador + (fichas_apostadas * 2);
                        fichas_jogador = fichas_jogador - fichas_apostadas;
                    }
                    else fichas_jogador = fichas_jogador - fichas_apostadas;
                }
    
                if(aposta == 2)
                {
                    if((n_sorteado % 2) == 0 )
                    {
                        fichas_jogador = fichas_jogador + (fichas_apostadas * 2);
                        fichas_jogador = fichas_jogador - fichas_apostadas;
                    }
                    else fichas_jogador = fichas_jogador - fichas_apostadas;
                }
    
    
                printf("\nSuas fichas atualmente são: %d\n", fichas_jogador); //Apresentando o número de fichas que o jogador ficou após ter ganhado ou perdido o jogo
                if(fichas_jogador<=0) break;
    
                fflush(stdin); //Limpando o buffer do teclado
                printf("\nDeseja apostar mais? S para sim e N para não.\n");
                scanf("%c", &continuar); //Descobrindo se o jogador quer apostar mais
                printf("\n\n");
    
                if(continuar=='n' || continuar=='N') break; //Se o jogador não quiser mais apostar, sai do laço
    
    
            }while (continuar == 's' || continuar == 'S');
    
            if(fichas_jogador>0)
            {
                printf("\nParabéns, você terminou o jogo com %d fichas\n", fichas_jogador); //Se o jogador terminar o jogo com fichas aqui ele é parabenizado e apresenta a quantidade de fichas com que ele terminou o jogo
            }
            else
            {
                printf("\nPocha vida, suas fichas acabaram, e o seu jogo também!"); // Caso se o jogador termine o jogo com saldo devedor ou sem fichas, essa mensagem é apresentada
            }
            jogador[i].fichas_j = fichas_jogador; // Passa o número de fichas com que o jogador terminou o jogo para a struct correspondente ao jogador
            fflush(stdin);
            printf("\n\nDeseja iniciar outro jogador? (S para sim e N para não)\n"); // Descobrindo se ooutro jogador deseja jogar
            scanf("%c", &novo_jogador);
            i++;
        }while(novo_jogador == 's' || novo_jogador == 'S');
    	system("cls"); //Limpa a tela
        int j=0;
        printf("\n\nRanking:\n"); //Imprimindo o ranking
        for(j = 1 ; j < i ; j++)
        {
            printf("\n%d°  %s | %d fichas", j, jogador[j].nome, jogador[j].fichas_j);
    
        }
        printf("\n\n\n***Código produzido por Daniel Schmitz e Willian Motta, 1° período de TSI - UTFPR TD***\n\n\n");
    
        return 0;
    }

     

    O problema é que preciso exibir o o ranking em ordem crescente de quem terminou com mais fichas e não faço ideia de como fazer. Alguma sugestão?

     

    Obrigado!

  6. Boa tarde, sou novato e estou no 1 período da faculdade, e meu professor passou o seguinte exercício :

     

    "Desenvolva um programa que contenha uma função que receba 4 notas de um aluno e uma letra que representa o tipo do cálculo. Se a letra for “A”, a função deverá fazer o cálculo da média aritmética das notas do aluno. Caso for a letra “P”, a função deverá realizar o cálculo de média ponderada com pesos, 4, 3, 2 e 1. Não deve ser permitido que o usuário informe uma letra diferente daquelas definidas para a função (para isso crie uma função que leia e valide o caractere digitado e retorne o mesmo para ser passado para a função do cálculo). Apresente o resultado da média, bem como se é média ponderada ou aritmética no corpo do programa principal."

     

    Cheguei ao seguinte código:

    #include <stdio.h>
    
    char valida (char *escolha)
    {
        if (*escolha = 'P' || 'p' || 'A' || 'a'){
            return *escolha;
        }
        else return 'r';
    }
    
    media_aritmetica(float *nota1, float *nota2, float *nota3, float *nota4)
    {
        float resultado=0;
        resultado = (*nota1 + *nota2 + *nota3 + *nota4) / 4;
        return resultado;
    }
    
    media_ponderada(float *nota1, float *nota2, float *nota3, float *nota4)
    {
        float resultado=0;
        resultado = (*nota1 * 4 + *nota2 * 3 + *nota3 * 2 + *nota4 * 1) / (4+3+2+1);
    }
    
    int main()
    {
        char escolha, escolha_validada;
        float nota1=0, nota2=0, nota3=0, nota4=0, media=0;
    
        printf("Digite os valores das quatro notas:\n");
        scanf("%f%f%f%f", &nota1, &nota2, &nota3, &nota4);
    
        fflush(stdin);
    
        do {
            printf("Digite A para media aritmetica e P para media ponderada\n");
            scanf("%c", &escolha);
    
            escolha_validada = valida(&escolha);
    
            if(escolha_validada == 'r'){
                printf("Escolha invalida, por favor tente novamente\n");
            }
    
        }while (escolha_validada == 'r');
    
        if (escolha == 'P' || 'p' ){
            media = media_ponderada(&nota1, &nota2, &nota3, &nota4);
            printf("A media ponderada é: %f", media);
        }
        else{
            media = media_aritmetica(&nota1, &nota2, &nota3, &nota4);
            printf("A media aritmetica é: %f", media);
        }
        return 0;
    }

     

    Porém ao executa-lo ele não esta executando corretamente, apresenta sempre a média ponderada, e ainda por cima pega lixo na memória. Como na imagem:Capturar.JPG

  7. Bom dia.

     

    Meu professor de programação pediu o seguinte exercício:

     

    "Escreva uma função chamada continuar capaz de ler um caractere informado pelo usuário e somente retorne 1 se for igual a ‘S’ ou 0 se igual a ‘N’. Caso o usuário informar um caractere diferente a função deve emitir a mensagem “Caractere inválido! Digite novamente.”. Além disso, escreva uma função chamada cubo que receba um número inteiro, eleve este número ao cubo e retorne o resultado ao programa principal. O programa deve ficar lendo, calculando e apresentando os números até que o usuário informe a letra ‘N’ à pergunta “Deseja continuar?”."

     

    Cheguei ao seguinte código:

     

    #include <stdio.h>

    char continuar(char escolha){
        if(escolha == 'S') return 1;
        else if(escolha == 'N') return 0;
        else printf("Caractere invalido");
    }

    int cubo(int n){
        int a=0;
        a = n*n*n;
        return a;
    }

    int main(){
        
        int n=0, a=0;
        char escolha=0;
        
        do{
            printf("Digite um numero\n");
            scanf("%d", &n);
            
            a = cubo(n);
            
            printf("O numero elevado ao cubo é %d\n", a);
            
            printf("Deseja continuar? S para sim e N para nao");
            scanf("%c", &escolha);
            
        }while(continuar(escolha) == 'S');
        
        return 0;
        
    }
     

    Porém ao compilar este código no Geany, apareceu o seguinte erro: "ex_9.c:7:1: warning: control reaches end of non-void function [-Wreturn-type]"

     

    Alguém pode me ajudar?

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

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

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!