Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.38 KB | None | 0 0
  1. #include <string.h>
  2. #include <time.h>
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5.  
  6. struct Player {
  7. char name[30];
  8. int isWinner;
  9. char phoneNumber[10];
  10. }players[100];
  11.  
  12. int getPlayersAmount() {
  13. int playersAmount = 0;
  14.  
  15. while (playersAmount > 100 || playersAmount < 1) {
  16. printf("Podaj liczbe telefonujacych osob:\n");
  17. scanf("%d", &playersAmount);
  18. }
  19.  
  20. return playersAmount;
  21. }
  22.  
  23. struct Player getPlayerData() {
  24. struct Player p;
  25. printf("Podaj imie:\n");
  26. scanf("%s", p.name);
  27. do{
  28. printf("Podaj nr telefonu:\n");
  29. scanf("%s", p.phoneNumber);
  30. }while(strlen(p.phoneNumber) > 9 || strlen(p.phoneNumber) < 9);
  31. return p;
  32. }
  33.  
  34. void getPlayersData(struct Player *players, int playersAmount) {
  35. int i;
  36. for ( i = 0; i < playersAmount; i++)
  37. players[i] = getPlayerData();
  38. }
  39.  
  40. int generateRandomNumber() {
  41. return rand() % 99;
  42. }
  43.  
  44. int pickWinners(struct Player *players, int playersAmount) {
  45. while (1) {
  46. int randomNumber = generateRandomNumber();
  47. printf("Wylosowana liczba to: %d \n", randomNumber);
  48.  
  49. if (checkWinners(players, playersAmount, randomNumber) > 0)
  50. return checkWinners(players, playersAmount, randomNumber);
  51.  
  52. printf("Nikt nie wygral - powtarzamy losowanie...\n");
  53. }
  54. }
  55.  
  56. int checkWinners(struct Player *players, int playersAmount, int winningNumber) {
  57. int i;
  58. int winners = 0;
  59. for (i = 0; i < playersAmount; i++) {
  60. int didWin = isWinner(players[i], winningNumber);
  61. players[i].isWinner = didWin;
  62.  
  63. if (didWin){
  64. winners++;
  65. }
  66. }
  67.  
  68. return winners;
  69. }
  70.  
  71. int isWinner(struct Player p, int winningNumber) {
  72. int strLen = strlen(p.phoneNumber);
  73. char winningNumberStr[3];
  74. sprintf(winningNumberStr, "%d", winningNumber);
  75.  
  76. if (winningNumber < 10) {
  77. winningNumberStr[1] = winningNumberStr[0];
  78. winningNumberStr[0] = '0';
  79. }
  80.  
  81. return p.phoneNumber[strLen - 2] == winningNumberStr[0] && p.phoneNumber[strLen - 1] == winningNumberStr[1];
  82. }
  83.  
  84. void printWinners(struct Player *players, int playersAmount, int winnersAmount) {
  85. printf("Wygralo %d osob :\n",winnersAmount);
  86. int i;
  87. for (i = 0; i < playersAmount; i++)
  88. if (players[i].isWinner)
  89. printf(" %s \n", players[i].name);
  90. }
  91.  
  92. int main() {
  93. srand(time(NULL));
  94. int playersAmount = getPlayersAmount();
  95. getPlayersData(players, playersAmount);
  96. int winnersAmount = pickWinners(players, playersAmount);
  97. printWinners(players, playersAmount, winnersAmount);
  98. return 0;
  99. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement