Ir ao conteúdo
  • Cadastre-se

Julia_Lucia

Membro Júnior
  • Posts

    13
  • Cadastrado em

  • Última visita

Tudo que Julia_Lucia postou

  1. Está funcionando, o problema era no meu arquivo de texto.
  2. Olá, estou com dificuldade para resolver o seguinte problema: Um supermercado possui vários relatórios antigos em formato de texto (.txt) e precisa modificá-los de uma forma eficiente. Cada arquivo de relatório contém uma lista de produtos, onde cada linha representa um produto. Cada produto têm 3 atributos, nome (sem espaços), código, e preço unitário, separados por espaço. Cada relatório terá o formato como do exemplo abaixo: cafe 11 6.42 leite 43 3.2 feijao -1 6.7 o leo 234 6.0 peixe 1 38383749.2 Entretanto muitos produtos de cada relatório estão corrompidos, código igual a -1 ou valores absurdos (valor acima de 9999.0). Você foi contratado para solucionar esse problema, para isso você deve construir um programa que execute os seguintes passos: • Inicializar um vetor que representa uma lista de produtos; • Ler um relatório chamado “relatorio_corrompido.txt” • Imprimir os produtos válidos; • Salvar a lista de produtos válidos no arquivo “relatorio_processado.txt”. Apresente um programa em C que solucione o problema do supermercado segundo as regras abaixo: 1) Criar uma estrutura para representar os produtos do supermercado, esta estrutura deve conter: Nome – string, Código – int, e Preço unitário – float 2) Criar uma função para imprimir uma lista de produtos. Produtos inválidos não devem ser impressos. 3) Criar uma função que lê os produtos de um arquivo txt e coloca em um vetor de produtos. A função deve receber como entrada um vetor de produtos e uma string que representa o nome do arquivo. 4) Criar uma função que escreve para um arquivo txt os produtos válidos e não corrompidos presentes na lista do mercado. A função deve receber como entrada um vetor de produtos e uma string que representa o nome do arquivo. 5) Realizar os passos para solucionar o problema do mercado usando a estrutura “produto” e chamando as funções criadas nos tópicos 1 a 4 na função main: a. Inicializar um vetor que possui uma lista de produtos; b. Ler um relatório chamado “relatorio_corrompido.txt” e armazenar em um vetor de produtos; c. Imprimir os produtos válidos; d. Salvar a lista de produtos validos e não corrompidos no arquivo “relatorio_processado.txt”. Restrições do seu programa: • O tamanho máximo do nome de um produto é 128 caracteres considerando o caractere ‘\0’. Ou seja 127 + ‘\0’. • A capacidade máxima do supermercado é de 32768 produtos; • Os vetores devem ser passados para as funções por referência. Desenvolvi isso aqui: #include <stdio.h> #define MAX_PRODUTOS 2064 #define PRODUTO_INVALIDO -1 typedef struct { char nome[128]; int codigo; float preco; }produto; void imprime_produto(produto pr) { printf("%s ", pr.nome); printf("%d ", pr.codigo); printf("Preço unitário: %.2f\n", pr.preco); } void leitura_produtos(char *relatorio_corrompido, produto*produtos) { FILE *ac = fopen(relatorio_corrompido, "r"); if (ac != NULL) { int elements = 0; for(int i = 0 ; i < MAX_PRODUTOS ; i++, elements++) { produto pr; int retorno = fscanf(ac, "%s %d %f", pr.nome, &pr.codigo, &pr.preco); produtos[i] = pr; if (feof(ac) || retorno != 5) { break; } } for(int i = elements; i < MAX_PRODUTOS; i++) { produtos[i].codigo = PRODUTO_INVALIDO; } fclose(ac); } else { printf("Arquivo %s nao foi aberto\n", relatorio_corrompido); exit(-1); } } void imprime_produtos(produto *produtos) { for(int i = 0; i < MAX_PRODUTOS; i++) { if (produtos[i].codigo != PRODUTO_INVALIDO && produtos[i].preco <= 9999.0) { imprime_produto(produtos[i]); } } } void escreve_produtos(char *relatorio_processado, produto *produtos) { FILE *ap = fopen(relatorio_processado, "w"); if (ap !=NULL) { for(int i = 0 ; i < MAX_PRODUTOS; i++) { produto a = produtos[i]; if (a.codigo != PRODUTO_INVALIDO && a.preco <= 9999.0) { fprintf(ap, "%s %d %.2f", a.nome, a.codigo, a.preco); } } fclose(ap); } else { printf("Arquivo %s nao foi aberto\n", relatorio_processado); exit(-1); } } int main(){ char nome_entrada[] = "relatorio_corrompido.txt"; char nome_saida[] = "relatorio_processado.txt"; produto produtos[MAX_PRODUTOS]; leitura_produtos(nome_entrada, produtos); imprime_produtos(produtos); escreve_produtos(nome_saida, produtos); return 0; } Alguém sabe o que estou errando?
  3. @Lucca Rodrigues Estava errando uma coisa muito boba. Quando fui digitar a ideia que você passou usei aspas simples no r e por isso não estava funcionando. Agora está tudo certo. Muito obrigada!!! O código final ficou assim: #include <stdio.h> #include <locale.h> int main (){ setlocale(LC_ALL, "Portuguese"); int versos = 0, estrofes = 0; char texto[100], nome[501]; printf ("Digite o diretório do arquivo texto: "); gets(nome); FILE * fp = fopen (nome, "r"); if(fp == NULL) { printf("Erro ao abrir o arquivo!"); return 0; } printf("\nPoema:\n\n"); while(!feof(fp)) { fgets(texto, 100, fp); printf("%s", texto); if (strlen(texto) < 99 && strlen(texto) > 1) { versos++; } else if (strlen(texto) == 1) { estrofes++; } } if (versos == 0) { printf("\nArquivo vazio"); } else printf("\n\nO arquivo com o poema acima tem %d versos e %d estrofes.\n", versos, estrofes+1); fclose(fp); return 0; }
  4. @Lucca Rodrigues Verdade, interpretei mal o enunciado. Fiz o que você sugeriu, mas não funcionou. Tentei de várias formas e em nenhuma deu erro de não abrir o arquivo, mas também não fez o que deveria fazer. Alguma ideia?
  5. Boa noite pessoal, estou desenvolvendo um programa para o seguinte problema: "Faça um programa que leia um arquivo de texto contendo um poema e exiba na tela quantos versos e quantas estrofes tem o poema, sendo cada verso uma linha com palavras e cada estrofe um bloco de versos separado do bloco anterior por uma linha em branco. O nome do arquivo deverá ser informado pelo usuário e o arquivo não deverá ser alterado. Exemplo: O arquivo com o poema a seguir tem 4 versos e 2 estrofes: Batatinha quando nasce Espalha a rama pelo chão Menininha quando dorme Poe a mão no coração Dica: Uma linha em branco não é um verso. Atenção: O programa deverá obrigatoriamente manipular arquivos texto." A parte de contar os versos e estrofes eu consegui fazer, mas não tem jeito de dar certo pra renomear o arquivo como o exercício pede. O que desenvolvi até o momento é o seguinte: #include <stdio.h> #include <locale.h> int main (){ setlocale(LC_ALL, "Portuguese"); FILE * fp; int versos = 0, estrofes = 0; char texto[100]; fp = fopen("poema.txt", "r"); if(fp == NULL) { printf("Erro ao abrir o arquivo!"); return 0; } printf("Poema:\n"); while(!feof(fp)) { fgets(texto, 100, fp); printf("%s", texto); if (strlen(texto) < 99 && strlen(texto) > 1) { versos++; } else if (strlen(texto) == 1) { estrofes++; } } if (versos == 0) { printf("\nArquivo vazio"); } else printf("\n\nO arquivo com o poema acima tem %d versos e %d estrofes.\n", versos, estrofes+1); fclose(fp); return 0; } Sendo que o arquivo.txt está salvo na mesma pasta que o programa e já está com o poema gravado nele. Alguém pode me ajudar???
  6. Muito obrigada!!!! Dê fato, tenho dificuldade de entender vetores Fiz ainda algumas modificações no código: #include <stdio.h> #include <locale.h> #define MAX 5 // Calcula a média float media (float notas[MAX]) { int maior = 0, menor = 10, i; float media = 0; // Obter maior e menor nota for(i = 0; i < MAX; i++) { media = media + notas [i]; if (menor > notas[i]) { /* Se a variável menor for maior que a nota em questão, novo valor é atribuído */ menor = notas[i]; } /* Note que são 2 condições separadas, uma não depende da outra, então nada de if e else */ if (maior < notas[i]) { /* Se a variável maior for menor que a nota em questão, novo valor é atribuído */ maior = notas[i]; } } //calcula a media media = (media - menor - maior) / 3; return media; } // Calcula o vencedor e imprime na tela o ranking void vencedor (float medias[3]) { // Árvore de possibilidades if (medias[0] > medias[1]){ if(medias[1] > medias[2]){ printf("\n1º lugar = surfista 1 com média %.2f", medias[0]); printf("\n2º lugar = surfista 2 com média %.2f", medias[1]); printf("\n3º lugar = surfista 3 com média %.2f\n", medias[2]); } else if(medias[0] > medias[2]){ printf("\n1º lugar = surfista 1 com média %.2f", medias[0]); printf("\n2º lugar = surfista 3 com média %.2f", medias[2]); printf("\n3º lugar = surfista 2 com média %.2f\n", medias[1]); } else{ printf("\n1º lugar = surfista 3 com média %.2f", medias[2]); printf("\n2º lugar = surfista 1 com média %.2f", medias[0]); printf("\n3º lugar = surfista 2 com média %.2f\n", medias[1]); } } else if (medias[1] > medias[2]){ if(medias[2] > medias[0]){ printf("\n1º lugar = surfista 2 com média %.2f", medias[1]); printf("\n2º lugar = surfista 3 com média %.2f", medias[2]); printf("\n3º lugar = surfista 1 com média %.2f\n", medias[0]); } else{ printf("\n1º lugar = surfista 2 com média %.2f", medias[1]); printf("\n2º lugar = surfista 1 com média %.2f", medias[0]); printf("\n3º lugar = surfista 3 com média %.2f\n", medias[2]); } } else{ printf("\n1º lugar = surfista 3 com média %.2f", medias[2]); printf("\n2º lugar = surfista 2 com média %.2f", medias[1]); printf("\n3º lugar = surfista 1 com média %.2f\n", medias[0]); } } int main(){ setlocale(LC_ALL, "Portuguese"); int i; float surf1[MAX], surf2[MAX], surf3[MAX], medias[3]; // Lê as notas for(i = 0; i < MAX; i++) { printf("Digite a %dº nota do surfista 1: ", i+1); scanf("%f" , &surf1[i]); } printf("\n"); for(i = 0; i < MAX; i++) { printf("Digite a %dº nota do surfista 2: ", i+1); scanf("%f" , &surf2[i]); } printf("\n"); for(i = 0; i < MAX; i++) { printf("Digite a %dº nota do surfista 3: ", i+1); scanf("%f" , &surf3[i]); } // Envia as notas para a função e armazena as médias em um vetor medias[0] = media(surf1); printf("Média do surfista 1: %.2f\n", medias[0]); medias[1] = media(surf2); printf("Média do surfista 2: %.2f\n", medias[1]); medias[2] = media(surf3); printf("Média do surfista 3: %.2f\n", medias[2]); vencedor(medias); return 0; } Eu reparei que quando as notas de um surfista eram todas iguais, o programa não funcionava corretamente, então modifiquei o cálculo da média. Além disso, alguns dos printfs estavam com o resultado trocado, por exemplo, a média do surfista 1 aparecia como a média do surfista 2 e coisas do tipo. Sem sua ajuda eu não teria conseguido! Obrigada mesmo!!!
  7. Olá pessoal, estou com dificuldade para finalizar um programa. O enunciado do programa é o seguinte: "Em um campeonato de surf extremamente difícil, cada bateria é disputada por 3 surfistas sendo que cada um deles pode pegar apenas 1 onda. Essa onda é avaliada por 5 jurados e cada um dá uma nota entre 0 e 10. Você, que não surfa mas programa, foi contratado para calcular o resultado final da bateria. O programa que você vai escrever para fazer esse cálculo deve ter duas funções principais (pode ter outras também): 1. Uma função que recebe o vetor de 5 notas de um surfista, calcula e retorna a sua média. Pelas regras do campeonato a maior e a menor notas são descartadas, sendo utilizadas para o cálculo da média somente as 3 notas intermediárias. 2. Uma função que recebe um vetor com as 3 médias dos surfistas calculadas no passo anterior, computa e exibe na tela o ranking final. O resultado deve apresentar, quem ficou em primeiro, segundo e terceiro e as médias de cada surfista. Dicas: Você pode ignorar casos de empate na hora de fazer o ranking final." O código que eu consegui desenvolver é o seguinte: #include <stdio.h> #include <locale.h> #include <string.h> #include <stdlib.h> #include <time.h> #define MAX 4 //calcula a media float media (float notas[MAX], int tam) { int maior = 0, menor = 10, i; float media = 0; for(i=0 ; i>=tam ; i++) { printf("%.2f\n", notas[i]); for(i=0 ; i>=tam ; i++) { media = media + notas[i]; if (notas[i] < menor) { menor = notas[i]; } else { maior = notas[i]; } } } //printf("%f %f\n", menor, maior); media = (media - menor - maior)/3; return media; } //calcula o vencedor e imprime na tela o ranking int vencedor (float medias[2], int tam) { int i; if (medias[0] > medias[1] && medias[0] > medias[2] && medias[1] > medias[2]) { printf("\n1º lugar = surfista 1 com média %.2f", medias[0]); printf("\n2º lugar = surfista 2 com média %.2f", medias[1]); printf("\n3º lugar = surfista 3 com média %.2f\n", medias[2]); } else if (medias[0] > medias[1] && medias[0] > medias[2] && medias[2] > medias[1]) { printf("\n1º lugar = surfista 1 com média %.2f", medias[0]); printf("\n2º lugar = surfista 3 com média %.2f", medias[2]); printf("\n3º lugar = surfista 2 com média %.2f\n", medias[1]); } else if (medias[1] > medias[0] && medias[1] > medias[2] && medias[0] > medias[2]) { printf("\n1º lugar = surfista 2 com média %.2f", medias[1]); printf("\n2º lugar = surfista 1 com média %.2f", medias[0]); printf("\n3º lugar = surfista 3 com média %.2f\n", medias[3]); } else if (medias[1] > medias[0] && medias[1] > medias[2] && medias[2] > medias[0]) { printf("\n1º lugar = surfista 2 com média %.2f", medias[1]); printf("\n2º lugar = surfista 3 com média %.2f", medias[3]); printf("\n3º lugar = surfista 1 com média %.2f", medias[0]); } else if (medias[2] > medias[0] && medias[2] > medias[1] && medias[0] > medias[1]) { printf("\n1º lugar = surfista 3 com média %.2f", medias[2]); printf("\n2º lugar = surfista 1 com média %.2f", medias[0]); printf("\n3º lugar = surfista 2 com média %.2f\n", medias[1]); } else if (medias[2] > medias[0] && medias[2] > medias[1] && medias[1] > medias[0]) { printf("\n1º lugar = surfista 3 com média %.2f", medias[2]); printf("\n2º lugar = surfista 2 com média %.2f", medias[1]); printf("\n3º lugar = surfista 1 com média %.2f\n", medias[0]); } else { printf("\nOcorreu algum erro"); } } int main(){ srand ( time ( NULL ) ); setlocale(LC_ALL, "Portuguese"); int i; float surf1[MAX], surf2[MAX], surf3[MAX], m1, m2, m3, medias[2]; //lê as notas for(i=0 ; i<=MAX ; i++) { printf("Digite a %dº nota de surfista 1: ", i+1); scanf("%f" , &surf1[i]); } printf("\n"); for(i=0 ; i<=MAX ; i++) { printf("Digite a %dº nota de surfista 2: ", i+1); scanf("%f" , &surf2[i]); } printf("\n"); for(i=0 ; i<=MAX ; i++) { printf("Digite a %dº nota de surfista 3: ", i+1); scanf("%f" , &surf3[i]); } //envia as notas para a função e armazena a média em uma variável m1 = media(surf1, MAX); printf("Média do surfista 1: %.2f\n", m1); m2 = media(surf2, MAX); printf("Média do surfista 2: %.2f\n", m2); m3 = media(surf3, MAX); printf("Média do surfista 3: %.2f\n", m3); vencedor(medias, 2); return 0; } O cálculo da média aparentemente está todo errado, mas não sei como consertar. Alguém pode me ajudar? agradeço desde já :DD
  8. Olá pessoal, estou com dificuldade para finalizar um programa. O enunciado do meu problema é o seguinte: "Implementar um jogo de Pedra, Papel e Tesoura (jan-ken-pon). O usuário deve jogar uma das opções, 1 para pedra, 2 para papel ou 3 para tesoura. O computador deve jogar também (um número aleatório entre 1 e 3). Devem ser implementadas pelo menos 3 funções (além da main): • Lê jogada (sem parâmetros, retorna um inteiro) - informa ao usuário quais são as opções de jogada que ele pode fazer, lê a opção selecionada pelo usuário e verifica se ele informou uma jogada válida (1, 2 ou 3). Ao final retorna o número da jogada feita pelo usuário. • Imprime jogada (recebe uma jogada inteira, não retorna nada) - de acordo com a entrada informada imprime na tela pedra, papel ou tesoura. • Calcula resultado (recebe dois parâmetros, a jogada do usuário e a do computador, retorna o resultado inteiro) - de acordo com as jogadas a função deve imprimir: “Papel cobre pedra” ou “Tesoura corta papel” ou “Pedra amassa tesoura”. Ao final, a função "calcula resultado" retorna, 1 em caso de empate, 2 para vitória do usuário ou 3 para vitória do computador. A função principal (main) deve chamar as outras funções para fazer o jogo funcionar. Primeiro deve-se ler a opção do usuário e gerar uma opção para o computador. Depois imprimir as duas jogadas. Por fim calcular o resultado e dizer quem venceu ou se houve empate. Em caso de empate, iniciar uma nova rodada. Atenção: O programa deverá obrigatoriamente usar funções." O que desenvolvi até agora foi: #include <stdio.h> #include <locale.h> #include <string.h> #include <stdlib.h> #include <time.h> //Lê a jogada do usuário int usuario() { int num; do { printf("Digite o número da sua jogada: "); scanf("%d" , &num); if (num < 1 || num > 3) { printf("\nNúmero inválido.\n\n"); } } while (num < 1 || num > 3); return num; } //Interpreta o que o usuário jogos e imprime na tela. char jogada(int j) { if (j == 1) { printf("\nVocê jogou pedra\n"); } else { if (j == 2) { printf("\nVocê jogou papel\n"); } else { if (j == 3) { printf("\nVocê jogou tesoura\n"); } } } } //O computador escolhe aleatóriamente um número entre 1 e 3 e imprime na tela a interpretação do número. int computador() { int numero; numero = rand() %3 + 1; if (numero == 1) { printf("O computador jogou pedra\n"); } else { if (numero == 2) { printf("O computador jogou papel\n"); } else { if (numero == 3) { printf("O computador jogou tesoura\n"); } return numero; } } } //Calculando o resultado. int resultado (int a, int b) { int empate = 0; if (a == 1 && b == 2) { printf("\nPapel cobre pedra!\n"); printf("\n3 - O COMPUTADOR GANHOU!"); } else { if (a == 1 && b == 3) { printf("\nPedra amassa tesoura!\n"); printf("\n2 - VOCÊ GANHOU!"); } else { if (a == 2 && b == 1) { printf("\nPapel cobre pedra!\n"); printf("\n2 - VOCÊ GANHOU!"); } else { if (a == 2 && b == 3) { printf("\nTesoura corta papel!\n"); printf("\n3 - O COMPUTADOR GANHOU!"); } else { if (a == 3 && b == 1) { printf("\nPedra amassa tesoura!\n"); printf("\n3 - O COMPUTADOR GANHOU!"); } else { if (a == 3 && b == 2) { printf("\nTesoura corta papel!\n"); printf("\n2 - VOCÊ GANHOU!"); } else { printf("\n1 - EMPATE! JOGUE NOVAMENTE!!!\n\n"); empate = 1; } } } } } } return empate; } int main(){ srand ( time ( NULL ) ); setlocale(LC_ALL, "Portuguese"); int jogada_usuario, jogada_computador, empate; printf("TABELA DE JOGADAS\n\n1 - PEDRA \n2 - PAPEL\n3 - TESOURA\n\n"); do { jogada_usuario = usuario(); jogada (jogada_usuario); jogada_computador = computador(); empate = resultado(jogada_usuario , jogada_computador); } while (empate == 1); return 0; } Em alguns casos o programa funciona corretamente, mas na maioria da algum tipo de erro sobre a mensagem que aparece na tela ou sobre o sistema que eu criei em casos de empate. Agradeço desde já!
  9. Como sugeriu @mauro_b , vou deixar o programa final para ajudar outros estudantes. #include <stdio.h> #include <locale.h> #include <string.h> #include <stdlib.h> #include <time.h> //funçao que gera aleatoriamente D ou E char funcao1() { int num; char direcao; num = rand() %2; if (num == 0) { direcao = 'D'; } else { direcao = 'E'; } return direcao; } int main(){ srand(time(NULL)); setlocale(LC_ALL, "Portuguese"); int direita = 0, esquerda = 0, limite = 0; char direcao, memoria; //Iniciando a variável memoria direcao = funcao1(); memoria = direcao; printf("%c", direcao); if (direcao == 'D') { direita++; } else { if (direcao == 'E') { esquerda++; } } limite++; //Repetição até que ocorra 4 curvas para o mesmo lado while (direita < 4 && esquerda < 4 && limite < 10000) { limite++; direcao = funcao1(); printf("%c", direcao); if (memoria == direcao) { if (direcao == 'D') { direita++; } else { if (direcao == 'E') { esquerda++; } } } else { if (direcao == 'D') { esquerda = 0; direita++; } else { if (direcao == 'E') { direita = 0; esquerda++; } } } memoria = direcao; } //Imprimir o numero de voltas if (limite == 10000) { printf("O carro não completou uma volta em 10000 curvas"); } else { printf("\n\nO carro andou uma volta completa e fez %d curvas\n", limite); } return 0; }
  10. Fiz isso e ainda não funcionou... A biblioteca time.h já estava inclusa no programa. Tem mais alguma ideia?
  11. Oi gente, estou desenvolvendo um programa de loteria, que precisa utilizar funções no desenvolvimento. O programa sorteia aleatoriamente números entre os números 1 e 30 e depois compara com os números digitados pelo usuário. Até o momento consegui fazer isso, porém os números que são sorteados saem sempre iguais e eu não sei como mudar isso. #include <stdio.h> #include <locale.h> #include <string.h> #include <stdlib.h> #include <time.h> int sorteio() { int numero; srand(time(NULL)); numero = rand() %30 + 1; return numero; } int digitar() { int num; do { printf("Digite um número:"); scanf("%d", &num); if (num <1 || num > 30) { printf("Número inválido\n"); } }while (num <1 || num > 30); return num; } int main(){ setlocale(LC_ALL, "Portuguese"); int num1, num2, num3, sort1, sort2, sort3, total = 0; num1 = digitar(); num2 = digitar(); num3 = digitar(); sort1 = sorteio(); sort2 = sorteio(); sort3 = sorteio(); if (num1 == sort1 || num1 == sort2 || num1 == sort3) { total++; } if (num2 == sort1 || num2 == sort2 || num2 == sort3) { total++; } if (num3 == sort1 || num3 == sort2 || num3 == sort3) { total++; } printf("\nOs números sorteados foram: %d, %d, %d\n", sort1, sort2, sort3); if (total = 0) { printf("\nVocê não acertou nenhum numero"); } if (total = 1) { printf("\nParabéns, você acertou 1 número e ganhou um prêmio de consolação!"); } if (total = 2) { printf("\nParabéns, você acertou 2 números e ganhou um prêmio de consolação!"); } if (total = 3) { printf("\nParabéns, você ganhou acertou 3 números e ganhou o super prêmio!!!"); } return 0; } Alguém sabe me dizer como faço para que os números sorteados sejam diferentes?
  12. Então, até o momento consegui desenvolver isso: #include <stdio.h> #include <locale.h> #include <string.h> #include <stdlib.h> #include <time.h> //funçao que gera aleatoriamente D ou E char funcao1() { int num; char direcao; srand(time(NULL)); num = rand() %0; if (num == 0) { direcao = 'D'; } else { direcao = 'E'; } printf("%c", direcao); return direcao; } int main(){ setlocale(LC_ALL, "Portuguese"); int direita = 0, esquerda = 0, limite = 0; char direcao = funcao1 (); char memoria; //Iniciando a variável memoria funcao1(); memoria = direcao; if (direcao == 'D') { direita++; } else { esquerda++; } //Repetição até que ocorra 4 curvas para o mesmo lado while (direita < 4 || esquerda < 4 || limite < 1000) { funcao1(); if (memoria == direcao) { if (direcao == 'D') { direita++; } else { esquerda++; } memoria = direcao; } else { if (direcao == 'D') { esquerda = 0; direita++; } else { direita = 0; esquerda++; } } limite++; } //Imprimir o numero de voltas printf("\nO carro andou uma volta completa\n"); printf("\nO carro fez %d curvas\n", limite); return 0; } Porém não está funcionando... Alguém sabe o que esta errado?
  13. Olá pessoal, estou em uma cadeira de introdução a programação em C e me encontro com a seguinte atividade para fazer utilizando funções: "Sua empresa decide lançar um novo sistema de localização inovador para carros chamado GPS (Girando Para Sempre). Esse sistema avisa ao motorista se ele está andando em círculos, ou seja, se ele fez tantas curvas que acabou voltando à direção original. Escreva um programa com uma função que gera aleatoriamente uma direção (char ‘D’ para direita e char ‘E’ para esquerda), e que vai dobrando o carro 90 graus a cada vez. O carro para quando fizer uma volta completa (tanto faz para que lado). No final, imprima a quantidade de curvas que o carro fez. Dicas: A função chamada apenas retorna uma direção (‘D’ ou ‘E’) aleatoriamente. Tome cuidado, um carro que dobra para a direita e logo após para esquerda retorna à sua direção original, porém não completou uma volta. Atenção: O programa deverá obrigatoriamente usar funções." Eu não consigo entender qual é a lógica que deveria usar para resolver esse problema, nem como "sortear" aleatoriamente a letra D ou E. Estou realente perdida neste exercício a dias... Se alguém puder me ajudar ficarei muito grata!

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