Ir ao conteúdo

arfneto

Membro Pleno
  • Posts

    6.526
  • Cadastrado em

  • Última visita

Tudo que arfneto postou

  1. no caso de f = 1 dentro de uma certa tolerância tol número estimado de falhas, não número real. E não é uma indução, é o objetivo: calcular a possibilidade de uma eleição ter o resultado invertido por excesso de erros da urna. Você poderia calcular com o perdedor. Tanto faz. O que importa é se o resultado foi invertido em relação às margens ou não. Em C não. Isso se chama polimorfismo e existe em outras linguagens como java e C++ Sua dificuldade eu não entendi. Pode tentar explicar de outro modo? Isso é a simples busca binária por um valor no intervalo. Você rodou o programa que te mostrei? Entendeu o código? Não tem nenhuma dúvida?
  2. Você vai ter uma lista de coisas onde cada elemento é uma estrutura. Nesse caso é um evento. Não faz diferença o que tem dentro.
  3. Estou vendo isso durante o café Isso está errado. f = 1 significa que a urna vai inverter TODOS os votos e isso não quer dizer que "B vencerá de forma incorreta" mas sim que as margens serão invertidas e a eleição vai sempre inverter o vencedor. "O resultado será sempre incorreto" seria o certo de se afirmar. E o cara errou o nome da constante...
  4. Isso que eu te mostrei não é exatamente a solução. É só pra você entender a mecânica
  5. Li o enunciado. Parece muito texto para pouco problema. Entendeu que pode criar um arquivo desses com o Google Sheet ou o Excel e que tenha os dados dos tipos que precisa. Aí você exporta ele para o formato csv na sua máquina e faz um programa que lê. Quando o programa estiver ok você vai lá no site do governo e escolhe um arquivo. E faz a mesma coisa. A parte do sort não acrescenta nada, afinal você vai ler do disco o arquivo csv que baixou do site do governo. Cria uma estrutura com um registro para cada registro do tal arquivo. Identifica qual o algoritmo que vai usar e classifica o vetor. Depois pode gravar de volta o csv no disco pra conferir. Entendeu melhor? Ou eu perdi uma parte do problema?
  6. Sim. Mas não depende de nada Veja esse resultado Para 10000 testes e f=0.10 a funcao retornou 934 falhas Agora umas eleicoes pra ver a mecanica 100 simulacoes N = 10000 votantes Margem A = 0.51 Taxa de erro f = 0.01 [ 1 de 100]: 91 erros. Media de erros apos 1 eleicoes: 91.000 [ 2 de 100]: 85 erros. Media de erros apos 2 eleicoes: 88.000 [ 3 de 100]: 99 erros. Media de erros apos 3 eleicoes: 91.667 [ 4 de 100]: 98 erros. Media de erros apos 4 eleicoes: 93.250 [ 5 de 100]: 96 erros. Media de erros apos 5 eleicoes: 93.800 [ 6 de 100]: 83 erros. Media de erros apos 6 eleicoes: 92.000 [ 7 de 100]: 105 erros. Media de erros apos 7 eleicoes: 93.857 [ 8 de 100]: 98 erros. Media de erros apos 8 eleicoes: 94.375 [ 9 de 100]: 98 erros. Media de erros apos 9 eleicoes: 94.778 [ 10 de 100]: 90 erros. Media de erros apos 10 eleicoes: 94.300 [ 11 de 100]: 107 erros. Media de erros apos 11 eleicoes: 95.455 [ 12 de 100]: 96 erros. Media de erros apos 12 eleicoes: 95.500 [ 13 de 100]: 83 erros. Media de erros apos 13 eleicoes: 94.538 [ 14 de 100]: 106 erros. Media de erros apos 14 eleicoes: 95.357 [ 15 de 100]: 96 erros. Media de erros apos 15 eleicoes: 95.400 [ 16 de 100]: 98 erros. Media de erros apos 16 eleicoes: 95.563 [ 17 de 100]: 103 erros. Media de erros apos 17 eleicoes: 96.000 [ 18 de 100]: 100 erros. Media de erros apos 18 eleicoes: 96.222 [ 19 de 100]: 117 erros. Media de erros apos 19 eleicoes: 97.316 [ 20 de 100]: 102 erros. Media de erros apos 20 eleicoes: 97.550 [ 21 de 100]: 102 erros. Media de erros apos 21 eleicoes: 97.762 [ 22 de 100]: 119 erros. Media de erros apos 22 eleicoes: 98.727 [ 23 de 100]: 114 erros. Media de erros apos 23 eleicoes: 99.391 [ 24 de 100]: 109 erros. Media de erros apos 24 eleicoes: 99.792 [ 25 de 100]: 111 erros. Media de erros apos 25 eleicoes: 100.240 [ 26 de 100]: 94 erros. Media de erros apos 26 eleicoes: 100.000 [ 27 de 100]: 103 erros. Media de erros apos 27 eleicoes: 100.111 [ 28 de 100]: 101 erros. Media de erros apos 28 eleicoes: 100.143 [ 29 de 100]: 88 erros. Media de erros apos 29 eleicoes: 99.724 [ 30 de 100]: 99 erros. Media de erros apos 30 eleicoes: 99.700 [ 31 de 100]: 103 erros. Media de erros apos 31 eleicoes: 99.806 [ 32 de 100]: 100 erros. Media de erros apos 32 eleicoes: 99.813 [ 33 de 100]: 103 erros. Media de erros apos 33 eleicoes: 99.909 [ 34 de 100]: 110 erros. Media de erros apos 34 eleicoes: 100.206 [ 35 de 100]: 92 erros. Media de erros apos 35 eleicoes: 99.971 [ 36 de 100]: 106 erros. Media de erros apos 36 eleicoes: 100.139 [ 37 de 100]: 92 erros. Media de erros apos 37 eleicoes: 99.919 [ 38 de 100]: 101 erros. Media de erros apos 38 eleicoes: 99.947 [ 39 de 100]: 103 erros. Media de erros apos 39 eleicoes: 100.026 [ 40 de 100]: 97 erros. Media de erros apos 40 eleicoes: 99.950 [ 41 de 100]: 100 erros. Media de erros apos 41 eleicoes: 99.951 [ 42 de 100]: 88 erros. Media de erros apos 42 eleicoes: 99.667 [ 43 de 100]: 87 erros. Media de erros apos 43 eleicoes: 99.372 [ 44 de 100]: 91 erros. Media de erros apos 44 eleicoes: 99.182 [ 45 de 100]: 99 erros. Media de erros apos 45 eleicoes: 99.178 [ 46 de 100]: 101 erros. Media de erros apos 46 eleicoes: 99.217 [ 47 de 100]: 96 erros. Media de erros apos 47 eleicoes: 99.149 [ 48 de 100]: 99 erros. Media de erros apos 48 eleicoes: 99.146 [ 49 de 100]: 111 erros. Media de erros apos 49 eleicoes: 99.388 [ 50 de 100]: 105 erros. Media de erros apos 50 eleicoes: 99.500 [ 51 de 100]: 105 erros. Media de erros apos 51 eleicoes: 99.608 [ 52 de 100]: 96 erros. Media de erros apos 52 eleicoes: 99.538 [ 53 de 100]: 101 erros. Media de erros apos 53 eleicoes: 99.566 [ 54 de 100]: 98 erros. Media de erros apos 54 eleicoes: 99.537 [ 55 de 100]: 102 erros. Media de erros apos 55 eleicoes: 99.582 [ 56 de 100]: 106 erros. Media de erros apos 56 eleicoes: 99.696 [ 57 de 100]: 112 erros. Media de erros apos 57 eleicoes: 99.912 [ 58 de 100]: 119 erros. Media de erros apos 58 eleicoes: 100.241 [ 59 de 100]: 102 erros. Media de erros apos 59 eleicoes: 100.271 [ 60 de 100]: 103 erros. Media de erros apos 60 eleicoes: 100.317 [ 61 de 100]: 105 erros. Media de erros apos 61 eleicoes: 100.393 [ 62 de 100]: 101 erros. Media de erros apos 62 eleicoes: 100.403 [ 63 de 100]: 106 erros. Media de erros apos 63 eleicoes: 100.492 [ 64 de 100]: 86 erros. Media de erros apos 64 eleicoes: 100.266 [ 65 de 100]: 107 erros. Media de erros apos 65 eleicoes: 100.369 [ 66 de 100]: 103 erros. Media de erros apos 66 eleicoes: 100.409 [ 67 de 100]: 103 erros. Media de erros apos 67 eleicoes: 100.448 [ 68 de 100]: 102 erros. Media de erros apos 68 eleicoes: 100.471 [ 69 de 100]: 112 erros. Media de erros apos 69 eleicoes: 100.638 [ 70 de 100]: 87 erros. Media de erros apos 70 eleicoes: 100.443 [ 71 de 100]: 101 erros. Media de erros apos 71 eleicoes: 100.451 [ 72 de 100]: 97 erros. Media de erros apos 72 eleicoes: 100.403 [ 73 de 100]: 114 erros. Media de erros apos 73 eleicoes: 100.589 [ 74 de 100]: 104 erros. Media de erros apos 74 eleicoes: 100.635 [ 75 de 100]: 100 erros. Media de erros apos 75 eleicoes: 100.627 [ 76 de 100]: 97 erros. Media de erros apos 76 eleicoes: 100.579 [ 77 de 100]: 106 erros. Media de erros apos 77 eleicoes: 100.649 [ 78 de 100]: 107 erros. Media de erros apos 78 eleicoes: 100.731 [ 79 de 100]: 91 erros. Media de erros apos 79 eleicoes: 100.608 [ 80 de 100]: 97 erros. Media de erros apos 80 eleicoes: 100.563 [ 81 de 100]: 97 erros. Media de erros apos 81 eleicoes: 100.519 [ 82 de 100]: 90 erros. Media de erros apos 82 eleicoes: 100.390 [ 83 de 100]: 96 erros. Media de erros apos 83 eleicoes: 100.337 [ 84 de 100]: 103 erros. Media de erros apos 84 eleicoes: 100.369 [ 85 de 100]: 111 erros. Media de erros apos 85 eleicoes: 100.494 [ 86 de 100]: 93 erros. Media de erros apos 86 eleicoes: 100.407 [ 87 de 100]: 103 erros. Media de erros apos 87 eleicoes: 100.437 [ 88 de 100]: 95 erros. Media de erros apos 88 eleicoes: 100.375 [ 89 de 100]: 106 erros. Media de erros apos 89 eleicoes: 100.438 [ 90 de 100]: 99 erros. Media de erros apos 90 eleicoes: 100.422 [ 91 de 100]: 95 erros. Media de erros apos 91 eleicoes: 100.363 [ 92 de 100]: 97 erros. Media de erros apos 92 eleicoes: 100.326 [ 93 de 100]: 69 erros. Media de erros apos 93 eleicoes: 99.989 [ 94 de 100]: 89 erros. Media de erros apos 94 eleicoes: 99.872 [ 95 de 100]: 116 erros. Media de erros apos 95 eleicoes: 100.042 [ 96 de 100]: 105 erros. Media de erros apos 96 eleicoes: 100.094 [ 97 de 100]: 105 erros. Media de erros apos 97 eleicoes: 100.144 [ 98 de 100]: 115 erros. Media de erros apos 98 eleicoes: 100.296 [ 99 de 100]: 108 erros. Media de erros apos 99 eleicoes: 100.374 [ 100 de 100]: 105 erros. Media de erros apos 100 eleicoes: 100.420 Final Para esse programa #include <stdio.h> #include <stdlib.h> #include <time.h> #define BISSEC_TOL (1e-6) void ativa_sorteador(); double prob_erro(int, double, double, int); double sorteia_real(); int sorteia_voto_com_falha(double); int sorteia_voto_com_falha2(double); int main(int argc, char** argv) { double f = 0.1; int falhas = 0; int r = 0; int testes = 10000; ativa_sorteador(); for (int i = 0; i < testes; i += 1) { r = sorteia_voto_com_falha(f); if (r != 0) falhas = falhas + 1; }; printf("Para %d testes e f=%4.2f a funcao retornou %d falhas\n", testes, f, falhas); printf("\n\nAgora umas eleicoes pra ver a mecanica\n\n\n"); int votantes = 10000; double margemA = 0.51; double falha = 0.01; testes = 100; double erro = prob_erro(votantes, margemA, falha, testes); //printf("prob_erro() retornou %f\n", erro); return 0; }; void ativa_sorteador() { #ifdef RANDOM_SEED srand(RANDOM_SEED); #else //srand(time(NULL)); srand(20200805); #endif }; double prob_erro(int N, double a, double f, int T) { /* estima a probabilidade de erro de uma eleição com N votantes, dos quais uma fração a vota no candidato A, e com probabilidade de falha f, utilizando T simulações.Os limites dos parâmetros são como no exemplo de entrada e saída */ int erros = 0; // erros int sim = 0; // simulacoes int v = 0; // votos printf("\n%d simulacoes\n", T); printf(" N = %d votantes\n", N); printf(" Margem A = %.2f\n", a); printf(" Taxa de erro f = %.2f\n\n\n\n", f); double grande_total = 0; for (int sim = 1; sim <= T; sim += 1) { // executa T simulacoes erros = 0; for (int v = 0; v < N; v += 1) { // N votos if (sorteia_voto_com_falha(f)) erros += 1; }; printf("[%4d de %4d]: %4d erros. ", sim, T, erros); grande_total += erros; printf("Media de erros apos %4d eleicoes: %.3f\n", sim, grande_total / sim); }; // for() printf("Final\n"); return 1.234; }; /* devolve um real sorteado uniformemente no intervalo [0,1] */ double sorteia_real() { return (double)rand() / RAND_MAX; }; int sorteia_voto_com_falha(double f) { return (sorteia_real() < f); }; int sorteia_voto_com_falha2(double f) { int i = rand() % 100; int j = (int)(f * 100); return (i < j); }; Veja se entende esse e vai estar bem mais perto do resultado... Rode em sua maquina. adicionado 12 minutos depois Não sei se estamos nos entendendo. Entendeu que eu acho que o enunciado está errado? O texto não considera o outro lado da história: a mesma taxa de erro se aplica aos eleitores de B e é preciso computar isso lá. Até está escrito lá. Entendeu isso?
  7. vou ver o texto de novo lá da simulação adicionado 11 minutos depois você rodou o programa que te enviei ontem?
  8. Tomar um coice pode ser irrelevante desde que ele te dê uma resposta ... Eu estudei no IME em São Carlos, da USP. A filial. adicionado 0 minutos depois Tente escrever uma simulação. É só um loop afinal, e uma tabela pra gravar os valores
  9. Acho que você entendeu bem o lance. Acho que é isso mesmo. Mas esse é um problema chato e o enunciado não está muito bom, Você não pode escrever direto ao professor ou TA (monitor, assistente?) ? Não tem algo como um monitor, um cara que ajuda os alunos? Eu entendo que no caso da eleição a chance de B ser eleito ao invés de A é a margem de B mais os votos que eram para A mas deram erro menos os votos de B que deram erro e foram pro outro lado. Ao simular a eleição você tenta se aproximar dessa conta. Fazendo essa conta igual ao total de votos mais 1 você tem uma equação cujo resultado é o valor que Bissecta() deve aproximar.
  10. Sinto muito. É um problema chato mesmo. Mas talvez não tenha ainda familiaridade com a linguagem C para resolver isso. Já escreveu muitos programas? Conseguiu simular uma eleição? Rodou em sua máquina o programa que escrevi pra você?
  11. no caso de formato de arquivos e padrões talvez não o YouTube mas o W3C e o IETF que é onde moram os padrões. Como o RFC 4180 https://tools.ietf.org/html/rfc4180 que está no site da LOC porque faz parte do programa Sustainability of Digital Formats: Planning for Library of Congress Collections da biblioteca do congresso e que cataloga todo tipo de documento sobre formatos de conteúdo digital. Não podia não ter um dos primeiros formatos de intercâmbio digital de todos.
  12. Vá no site recomendado no enunciado e baixe alguns desses csv e abra no bloco de notas pra se familiarizar com o que é. Depois importe no Excel ou no Google Sheets e veja o que acontece. Assim terá noção de causa e efeito. Se tiver acesso a um banco de dados veja como ele lê csv. E se entende inglês.. Direto da Biblioteca do Congresso dos EUA Essa é a referência para csv no planeta: https://www.loc.gov/preservation/digital/formats/fdd/fdd000323.shtml Resumo csv é uma matriz [MxN] e usa um delimitador que em geral é a vírgula, comma separated values, afinal. Comma é a própria: vírgula. M linhas, N colunas TODAS as colunas tem o mesmo número de elementos chamados de campos. A ausência de um campo não elimina o delimitador. Tres campos pode ser a,b,c ou a,, ou ,,. Ou vai ter problemas de portabilidade. Cada linha é chamada registro porque esse é o formato padrão de importação de dados para os bancos ... bancos de dados. Desde os anos '60. E de lá vem a nomenclatura TABLE com RECORDS e RECORDS com FIELDS Os campos podem ser envolvidos em "" por razões óbvias, coma aquela em em que o campo tem vírgulas A primeira linha pode ser diferente: ela tem os nomes dos campos. HEADER é um nome comum para ela nesses casos Eu postei aqui neste forum arquivos csv e programas que criam e leem essas coisas eu acho. Procure no conteúdo das coisas que eu postei no forum Exemplo cor, r,g,b vermelho,255,, verde,0,255,0 azul,0,0,255 Gera Usando Google Sheets e File | Import E aí está Viu o que a primeira linha faz? Já pode por exemplo classificar clicando em r Depois de entender isso vai ficar fácil implementar seu exercício. É um formato genial. Simples, mas esperto. E é apenas uma tabela MxN Veja um comando pra importar um desses num banco de dados LOAD DATA INFILE 'c:/tmp/discounts.csv' INTO TABLE discounts FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS; em https://www.mysqltutorial.org/import-csv-file-mysql-table/ Não estou recomendando nada só pesquisei um agora/ Só para mostrar o lance de TABLE, FIELDS, RECORDS. Records aqui são as linhas claro. E ignora a primeira. Porque? Porque a tabela já existe então os campos já tem nomes...
  13. faça o simples: peque um papel e desenhe o tal coração e sobre o desenho coloque as linhas e colunas e faça um programa simples que copia um texto. No texto você coloca algo como um ponto onde quer imprimir algo. Papel milimetrado seria uma opção hein?
  14. struct Calendario{ char lembrete[200][30]; int dia[30]; int mes[30]; struct Calendario *prox; }; typedef struct Calendario calendario; int tam; int menu(void); void inicia(calendario *PILHA); void opcao(calendario *PILHA, int op); void exibe(calendario *PILHA); void exibe(calendario *PILHA); void imprime_mes(calendario *PILHA, int meses); void libera(calendario *PILHA); void adicionar(calendario *PILHA); calendario *deletar(calendario *PILHA); Olhando apenas para a estrutura de dados, talvez não haja razão para ter fixos 200 lembretes de 30 posições para cada dia. É quase inútil e difícil de testar sem ter memória. Talvez deva implementar antes de tudo uma função para ler o calendário do disco e outra para salvar na saída. São umas poucas linhas e vai te ajudar pra caramba O próprio calendário não é em si uma lista, mas tem propriedades, podia ter um nome, uma quantidade de eventos, uma data de criação, sei lá. E DENTRO dele está uma lista. De eventos. Onde cada evento tem um dia e mes, quem sabe hora? E as funções deveriam retornar algo. Cada vez que escreve um void perde uma oportunidade de retornar algo útil. inicia() em geral retorna o endereço de início ou NULL adicionar() também retorna o endereço de início ou NULL exibe() retorna o total de itens ou -1 em caso de erro libera retorna 0 se não achou o cara. Zero é falso em C Quando a implementar, creio que pilha não é uma boa opção: estamos falando de eventos. O normal é uma lista com ponteiros para frente e para trás. Porque? Óbvio: você que navegar pelos eventos, e um ponteiro para o anterior e o próximo é uma boa ajuda certo? Lógico que como só seu programa insere eventos você vai inserir já na ordem cronológica de evento... Apenas sugestões.
  15. Nem sei se está errado. E você pode escrever assim digamos de fora pra dentro. No entanto acho que é melhor o contrário e se preocupar em simular as eleições primeiro, depois de entender bem como simular cada voto. E aí sim tentar usar bissecta() para identificar a margem ideal
  16. Você entendeu o que eu expliquei? dessa vez e da anterior? Do modo que você imaginou não vai funcionar/ BISSECTA simplesmente manipula valores para as chamadas às rotinas anteriores para manter o erro dentro da tolerância. Você muda os parâmetros e vai simulando eleições até chegar ao valor certo via BISSECTA()
  17. De qualquer forma, obrigado ! Bem, o que posso dizer é que ele está errado. Não coloque as funções antes. Para isso são os protótipos. E se vai colocar antes o que é aquilo no final do seu programa com os protótipos de novo? Num projeto comum as funções estão mesmo em outro arquivo. A cada passo no desenvolvimento você compila só o que está alterando e usa aqueles arquivos .h para incluir as declarações das funções. Entenda isso. É um conceito importante.
  18. void uniao(float elementosA[], float elementosB[], int conjA, int conjB); void intersecao(float elementosA[], float elementosB[], int conjA, int conjB); void diferenca(float elementosA[], float elementosB[], int conjA, int conjB); Acho que entendeu ao contrário a noção de protótipos. Essas linhas aí devem mostrar como são as funções que estão em uso em seu programa, e a PRIMEIRA função de seu programa é a tal main() claro. Isso é bom para você e mais ainda para alguém que vai tentar te ajudar, já que eu por exemplo não precisaria ficar procurando main() em seu programa se ele tivesse 1.000 linhas. Muitas vezes as funções estão em outro arquivo ou você sequer tem o código delas, como o caso de printf() por exemplo. Então você cria um arquivo só com as declarações delas e inclui em seu programa, como o #include "stdio.h" em seu programa. Algo assim serve void uniao(float[], float[], int , int ); void intersecao(float[], float[], int, int); void diferenca(float[], float [], int, int ); Não precisa repetir ou inventar nomes de variáveis porque você só vai estar informando o tipo. De volta ao programa: Ele não está nada bom. Por exemplo a diferença: porque o seu código abaixo funcionaria? Para cada elemento de A você vai imprimir uma linha com o elemento de A se ele não for igual ao de B? E isso é a diferença? void diferenca(float conjuntoA[], float conjuntoB[], int nelementosA, int nelementosB){ int i, j; for(i = 0; i < nelementosA; i++){ for(j = 0; j < nelementosB; j++){ if(conjuntoA[i] != conjuntoB[j]){ printf("%f\n", conjuntoA[i]); } } } } Então se o primeiro elemento de A for igual ao último de B e você leu mesmo os 29 vai imprimir 28 vezes o cara? Sério? Outra coisa: porque usou float? Eles são chatos para comparar por causa de erros de arredondamento. Não podia usar int que é mais seguro? Ex: 1.1 é igual a 1.10000001? Note que você pode declarar os caras e dar um valor para eles, todos ou uma parte a partir do início, e assim testar seu programa mais depressa sem ter que ficar lendo, certo? float a_de_teste[29] = { 1., 2., 3., 4., 5., 6., 1., 2., 3., 4., 5., 6. }; Bonus Abaixo seu programa com o texto reformatado para a ordem que eu te expliquei e um vetor preenchido para você poder recortar e colar... #include <stdio.h> #include <math.h> void diferenca(float [], float [], int , int ); void intersecao(float[], float[], int, int); void uniao(float[], float[], int, int); int main() { int conjA, conjB; float elementosA[29], elementosB[29]; float bonus[29] = { 1., 2., 3., 4., 5., 6., 7., 8., 1., 2., 3., 4., 5., 6., 7., 8., 1., 2., 3., 4., 5., 6., 7., 8., 1., 2., 3., 4., 5. }; scanf("%d", &conjA); for (int i = 0; i <= conjA; i++) { scanf("%f", &elementosA[i]); } scanf("%d", &conjB); for (int j = 0; j <= conjB; j++) { scanf("%f", &elementosB[j]); } return 0; }; void uniao(float conjuntoA[], float conjuntoB[], int nelementosA, int nelementosB) { int i, j; for (i = 0; i < nelementosA; i++) { for (j = 0; j < nelementosB; j++) { printf("%f %f \n", conjuntoA[i], conjuntoB[j]); } } }; void intersecao(float conjuntoA[], float conjuntoB[], int nelementosA, int nelementosB) { int i, j; for (i = 0; i < nelementosA; i++) { for (j = 0; j < nelementosB; j++) { if (conjuntoA[i] == conjuntoB[j]) { printf("%f\n", conjuntoA[i]); } } } }; void diferenca(float conjuntoA[], float conjuntoB[], int nelementosA, int nelementosB) { int i, j; for (i = 0; i < nelementosA; i++) { for (j = 0; j < nelementosB; j++) { if (conjuntoA[i] != conjuntoB[j]) { printf("%f\n", conjuntoA[i]); } } } };
  19. Olá! Progressos? Com o que está no enunciado como obrigatório você pode usar a função de está lá double sorteia_real() { return (double)rand() / RAND_MAX; }; Para calcular o tal sorteio com falha int sorteia_voto_com_falha(double f) { return (sorteia_real() < f); }; Entenda que em C ZERO é falso. Qualquer outro valor é verdadeiro. Em condições verdadeiro/falso você pode usar então expressões e é bem prático depois que se acostumar if(r == 0) // e a mesma coisa que if( !r ) // e if ( r != 0 ) // e a mesma coisa que if( r ) '!' é o operador NOT. "!=" significa diferente. Então a versão acima é o mesmo que essa abaixo int sorteia_voto_com_falha(double f) { if( sorteia_real() < f ) return 1; else return 0; };
  20. Você leu sobre rand() e srand()? Você não os usa juntos. int sorteia_voto_com_falha (double f); int i, N; srand(RAND_MAX); for(i = 1; i < n; i++) return(rand() % 1-f); Está certa sobre a precedência de '%' e '-'? Testou? Se não testou não acha que devia usar parenteses como rand() % (1-f) f é uma porcentagem? porque já não imprime os valores para se sentir mais segura? Usou um for com um return? isso quer dizer que vai rodar só uma vez, certo? já que vai retornar... E declarou int i e int N. Mas não tem nenhum valor. Como vai alimentar o for? declarou N mas não colocou nenhum valor. Seu for terminaria emi=n minúsculo que sequer está declarado....
  21. Não, não é possível retornar duas coisas ao mesmo tempo. Quando precisa retorna uma coisa que inclua as duas ou tantas quantas precisar, uma estrutura. Você n~~ao leu direito o que enunciado. .. Some f + (1-f) e vai ver que dá 1... Com probabilidade F retorna o inteiro.... É basicamente o exemplo que te mostrei ontem
  22. Que significa "enterrado"? Que faltou para resolver seu problema? Talvez não tenha entendido o princípio dessas coisas. Imagino que não possa usar as classes de lista da biblioteca mas talvez te ajudasse ler como elas funcionam antes de continuar com seu programa. http://www.cplusplus.com/reference/list/list/ Atente para a lista de métodos. O que você precisa é de uma classe Lista antes de tudo. E aí nas suas classes você declara Lista de vendas, de produtos ou de itens. Você está escrevendo tudo de novo e o propósito é justamente o contrário... adicionado 0 minutos depois Crie uma classe Lista antes de tudo
  23. Nào é. Você entendeu o que eu expliquei sobre os 75% de probabilidade? Acho que não. Esse é o conceito que você deve usar no seu problema.
  24. Não exatamente. Faça um programa pequeno e experimente com rand(). Você entendeu como manipular rand()? Leu no livro ou no site?
  25. Bem, você tem e não tem razão. Esse lance de sorteio é feito com a geração de números aleatórios. Na biblioteca padrão stdlib do C você tem uma função rand() e uma associada srand() que podem resolver isso. Veja em https://www.tutorialspoint.com/c_standard_library/c_function_rand.htm rand() retorna um valor inteiro entre 0 e um limite RAND_MAX. O que importa é que se você quer retornar um valor com 75% de probabilidade usa por exemplo (rand() %100) > 75 Porque? Se o número que veio é aleatório e inteiro e você pegar o resto da divisão dele por 100 vai dar quanto? Um número entre 0 e 99. Então em 75% das vezes ele será menor que 75, entre 0 e 74 e está feito o sorteio com probabilidade. srand(int) inicia uma nova sequência desses números, então pode usar algo como srand(20200504) e toda vez que iniciar seus testes vai reproduzir a mesma sequência...

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!