#include #include #include #include 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; }