Enviado em 10/04/2019 - 22:02h
Questão:Enviado em 10/04/2019 - 22:39h
Esqueça o computador e o C. Vamos imaginar uma situação semelhante em que você teria de fazer algo parecido, usando, no máximo, lápis e papel para ajudá-lo.Enviado em 12/04/2019 - 15:46h
#include <stdio.h> int main() { int numOcorrencias[10]; int n; for(int i = 0; i < 10; i++) { numOcorrencias[i] = 0; } printf("Digite 20 numeros entre 0 e 9: "); for(int i = 0; i < 20; i++) { scanf("%d", &n); numOcorrencias[n]++; } for(int i = 0; i < 10; i++) { printf("%d ocorreu %d vezes\n", i, numOcorrencias[i]); } return 0; }
Enviado em 12/04/2019 - 17:04h
Permita-me insistir com a dica de deixar o C de lado, por enquanto.Enviado em 02/05/2019 - 12:46h
CONSEGUI#include <stdio.h> int main () { int i, n, nVezes[10]; for(i=0; i < 10; i++) { nVezes[i] = 0; } printf("Digite números entre 1 e 9 (inclusive)\n"); for(i= 0; i <100; i++) { scanf("%i", &n); if (n== 0) { break; } nVezes[n]++; } for(i=1; i<10; i++) { printf("%i foi digitado %i vezes\n", i, nVezes[i]); } }
Enviado em 02/05/2019 - 13:04h
Amigo, se me permite acrescentar um detalhe, mesmo depois de já ter dado por resolvido o tópico.Enviado em 02/05/2019 - 17:51h
Segue exemplo em bash . . .#!/bin/bash VM="\e[1;38;05;1m" FC="\e[0m" clear; n=0;N=0;Z=0; LINE() { printf '%*s' "40" '' | sed "s/ /—/g";} for ((X=1;X<10;X++)) { NNS[$X]=0;} #Gera array NNS[1] a NNS[9] com VALOR=0, para cada Nº, um array... while :;do #Laço infinito let Z++; printf "\e[2;f Participante Nº $Z \e[3;f Digite um Número Inteiro: ";read -n1 NN sleep 0.0625;printf "\e[3;28f "; #"Apaga o anterior" if [[ $NN =~ ([1-9]) ]];then #Se digitado de 1 a 9 let N++; #Contabiliza Nº de "eleitores" válidos let NNS[$NN]++; #Guarda no array elif [[ $NN =~ ([^[:digit:]]) ]];then #Se não é número, manda mensagem echo -e "\n$(LINE)\n${VM} Digitação Incorreta! \n Digite um Nº Inteiro.\n \"$NN\", não é um Número! ${FC}\n$(LINE)\n";sleep 1;clear; elif [[ $NN =~ ([0]) ]];then #Se é "0", interrompe o laço, e mostra os resultados. clear; ((${N}>0)) && { #Evitar divisão por "0" na resposta... Z=$((Z-1)); echo -e "$(LINE)\n Resultado da Pesquisa:\n$(LINE)\n" for n in {1..9};do awk '{printf " Num: %02d escolhido %01d X => %.4f%%\n" ,$1,$2,($2/$3*100)}' <<< "$n ${NNS[$n]} $N"; done echo -e "\n$(LINE)\n \"$Z\" Participantes, \"$N\" escolhas válidas.\n Indice: $(awk '{printf "%.2f%%\n" ,($1/$2*100)}' <<< "$N $Z")\n$(LINE)\n" break; }\ || { echo -e "$(LINE)\n${VM} Sem Resultados.\n \"$N\" Participantes.${FC}\n$(LINE)\n";break;} fi done
Enviado em 03/05/2019 - 08:56h
Sem firulas de cores (ainda mais hardcoded para um tipo de terminal específico), linhas e apagamentos de tela, e em C.#include <stdio.h> #define PRIMEIRO_NUMERO_INTERESSE 1 #define ULTIMO_NUMERO_INTERESSE 9 // Declarando o array como variável estática (globais são estáticas) ele já começa com todos os elementos zerados. unsigned numeros_interesse[ULTIMO_NUMERO_INTERESSE+1-PRIMEIRO_NUMERO_INTERESSE]; int main(void){ int numero; do { // O enunciado não pede que tenha um prompt antes de ler cada número, mas vamos colocar um prompt // aqui, cientes de que é uma firula, e porque é para demonstração. Se o exercício tiver vindo de um site // como o SPOJ, esse prompt vai fazer com que o resultado seja interpretado como errado. printf("Digite um valor inteiro (0 para encerrar): "); if(scanf("%d", &numero)!=1){ // O enunciado também não pede detecção e tratamento de erros de leitura, mas fica aqui como // ilustração, e porque Debian e derivados exigem que se trate o valor retornado por scanf(). fprintf(stderr, "Erro de leitura.\n"); return 1; } if(numero>=PRIMEIRO_NUMERO_INTERESSE && numero<=ULTIMO_NUMERO_INTERESSE) // O deslocamento “-PRIMEIRO_NUMERO_INTERESSE” é porque, em C, todos os arrays // iniciam com índice 0. ++numeros_interesse[numero-PRIMEIRO_NUMERO_INTERESSE]; } while(numero!=0); for(numero=PRIMEIRO_NUMERO_INTERESSE; numero<=ULTIMO_NUMERO_INTERESSE; ++numero) // O enunciado só pede que se diga quantas vezes foram lidos cada um dos números de interesse. // Num site como o SPOJ, bastaria imprimir a sequência dos valores de cada número (uma vez que // eles são mesmo sequenciais). Aqui, porém, vou imprimir um texto explicativo. printf("O valor %d foi lido %u vezes.\n", numero, numeros_interesse[numero-PRIMEIRO_NUMERO_INTERESSE]); return 0; }
Enviado em 03/05/2019 - 10:35h
Eu agradeço a todos os comentários, mas tenho uma filosofia de tentar resolver os algortimos sempre com o for, caso seja inviável para mim tento com os outros laços.Enviado em 03/05/2019 - 14:03h
Enviado em 03/05/2019 - 19:32h
for(expressão_1; expressão_2; expressão_3) comando
{ expressão_1; if(expressão_2) do comando while((expressão_3), (expressão_2)) }
Enviado em 08/05/2019 - 11:48h
Olá Paulo,Programa IRPF - Guia de Instalação e Resolução de alguns Problemas
Criando uma Infraestrutura para uma micro Empresa
Criar entrada (menuentry) ISO no Grub
Como gerar qualquer emoji ou símbolo unicode a partir do seu teclado
Instalando o Pi-Hole versão v5.18.4 depois do lançamento da versão v6.0
Instalar o VIM 9.1 no Debian 12
Como saber o range de um IP público?
Muitas dificuldades ao instalar distro Linux em Notebook Sony Vaio PCG-6131L (VPCEA24FM)
Liberação de alguns links no squid (13)
impressora de rede via dominio - gpo (2)