Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <string.h>
- #include <time.h>
- #include <stdio.h>
- #include <stdlib.h>
- struct Player {
- char name[30];
- int isWinner;
- char phoneNumber[10];
- }players[100];
- int getPlayersAmount() {
- int playersAmount = 0;
- while (playersAmount > 100 || playersAmount < 1) {
- printf("Podaj liczbe telefonujacych osob:\n");
- scanf("%d", &playersAmount);
- }
- return playersAmount;
- }
- struct Player getPlayerData() {
- struct Player p;
- printf("Podaj imie:\n");
- scanf("%s", p.name);
- do{
- printf("Podaj nr telefonu:\n");
- scanf("%s", p.phoneNumber);
- }while(strlen(p.phoneNumber) > 9 || strlen(p.phoneNumber) < 9);
- return p;
- }
- void getPlayersData(struct Player *players, int playersAmount) {
- int i;
- for ( i = 0; i < playersAmount; i++)
- players[i] = getPlayerData();
- }
- int generateRandomNumber() {
- return rand() % 99;
- }
- int pickWinners(struct Player *players, int playersAmount) {
- while (1) {
- int randomNumber = generateRandomNumber();
- printf("Wylosowana liczba to: %d \n", randomNumber);
- if (checkWinners(players, playersAmount, randomNumber) > 0)
- return checkWinners(players, playersAmount, randomNumber);
- printf("Nikt nie wygral - powtarzamy losowanie...\n");
- }
- }
- int checkWinners(struct Player *players, int playersAmount, int winningNumber) {
- int i;
- int winners = 0;
- for (i = 0; i < playersAmount; i++) {
- int didWin = isWinner(players[i], winningNumber);
- players[i].isWinner = didWin;
- if (didWin){
- winners++;
- }
- }
- return winners;
- }
- int isWinner(struct Player p, int winningNumber) {
- int strLen = strlen(p.phoneNumber);
- char winningNumberStr[3];
- sprintf(winningNumberStr, "%d", winningNumber);
- if (winningNumber < 10) {
- winningNumberStr[1] = winningNumberStr[0];
- winningNumberStr[0] = '0';
- }
- return p.phoneNumber[strLen - 2] == winningNumberStr[0] && p.phoneNumber[strLen - 1] == winningNumberStr[1];
- }
- void printWinners(struct Player *players, int playersAmount, int winnersAmount) {
- printf("Wygralo %d osob :\n",winnersAmount);
- int i;
- for (i = 0; i < playersAmount; i++)
- if (players[i].isWinner)
- printf(" %s \n", players[i].name);
- }
- int main() {
- srand(time(NULL));
- int playersAmount = getPlayersAmount();
- getPlayersData(players, playersAmount);
- int winnersAmount = pickWinners(players, playersAmount);
- printWinners(players, playersAmount, winnersAmount);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement