//Exercice 3.1.2.4 Contrôle des votes pragma solidity ^0.4.25; contract Assemblee { address[] membres; string[] public descriptionDecisions; uint[] public votesPour; uint[] public votesContre; //bool[] public aVote; Decision[] public decisions; Decision public decision; struct Decision { string description; uint votesPour; uint votesContre; mapping (address => bool) aVote; } function rejoindre() public{ membres.push(msg.sender); } function estMembre(address utilisateur) public view returns (bool) { for(uint i=0; i<membres.length; i++){ if(utilisateur == membres[i]){ return true; } } return false; } function proposerDecision(string description) public { if(estMembre(msg.sender)) { //descriptionDecisions.push(description); decision.description = description; decision.votesPour = 0; decision.votesContre = 0; //votesPour.push(0); //votesContre.push(0); decisions.push(decision); } } function voter(uint indice, uint vote) public { //require(!decisions[indice].aVote[msg.sender], "Déjà voté"); if(!decisions[indice].aVote[msg.sender]){ if(vote == 0) { //votesContre[indice] += 1; decisions[indice].votesContre += 1; } if(vote == 1) { //votesPour[indice] += 1; decisions[indice].votesPour += 1; } decisions[indice].aVote[msg.sender] = true; } } function comptabiliser(uint indice) public view returns (int) { return int(decisions[indice].votesPour-decisions[indice].votesContre); } }
0.4.25