Facebook
From Social Crocodile, 4 Years ago, written in C.
Embed
Download Paste or View Raw
Hits: 114
  1. /*
  2.  
  3. Napisz program, który:
  4. - poprosi użytkownika o liczbę int z zakresu 10 - 50 i wczyta ją do łańcucha znaków
  5.  
  6.  
  7. - wywoła funkcję/procedurę (zdecyduj), która sprawdzi, czy w podanym łańcuchu są
  8. same cyfry, jeśli tak to dokona jego konwersji do wartości typu int, jeśli nie, będzie
  9. prosić dopóki użytkownik nie poda poprawnie
  10. - tak powstała wartość int będzie rozmiarem dwóch nowych łańcuchów znaków
  11.  
  12.  
  13. - poprosi użytkownika o wymyślenie hasła i powtórzenie go, a odpowiedzi przypisze do
  14. dwóch stringów
  15. - sprawdzi, czy hasła się zgadzają, a jeśli nie, poprosi o wymyślenie innego
  16. - wywoła funkcję/procedurę (zdecyduj), która sprawdzi, czy hasło zawiera co najmniej
  17. 1 dużą literę, 1 małą, jedną cyfrę i 1 znak specjalny. Jeśli tak, wyświetli komunikat, że
  18. hasło jest silne.
  19. */
  20. #include <stdio.h>
  21. #include <string.h>
  22. #include <ctype.h>
  23. #include <stdlib.h>
  24. #include <stdbool.h>
  25.  
  26. void Konwersja( const char znaki[]);
  27. int Liczba(int liczba);
  28. void Haslo(char haslo1[]);
  29. int main()
  30. {
  31.     const char znaki[10];
  32.     int liczba;
  33.     char haslo1[20];
  34.     char haslo2[20];
  35.    
  36.    Liczba(liczba);
  37.    
  38.     printf("Podaj lancuch znakow w ktorym wystepuja same cyfry\n\n");
  39.     scanf("%s", &znaki);
  40.    
  41.     Konwersja(znaki);
  42.    
  43.     do{
  44.     printf("Prosze wymysl haslo.\n HASLO: ");
  45.     scanf("%s", haslo1);
  46.     printf("Powtorz haslo. \nHASLO: ");
  47.     scanf("%s", haslo2);
  48.    }while( strcmp(haslo1,haslo2) != 0);
  49.    
  50.    Haslo(haslo1);
  51.  
  52.   return 0;
  53. }
  54.  
  55.  
  56. int Liczba(int liczba){             //nie jestem pewna czy o to chodzilo
  57.    
  58.     printf("Witaj! Podaj liczbe z zakresu 10-50");
  59.     scanf("%d", &liczba);
  60.    
  61.     while( liczba < 10 || liczba > 50 ){
  62.       printf( "Zle wybrana liczba. Spróbuj ponownie");
  63.       scanf("%d", &liczba);
  64.    }
  65.    return liczba;
  66. }
  67.  
  68. void Konwersja( const char znaki[]){
  69.    
  70.     int nowa;
  71.     int  tmp=0;
  72.     int dlugosc = strlen(znaki);
  73.  
  74.     for(int i = 0 ; i < dlugosc ; i++){
  75.         if(isdigit(znaki[i]))                   //sprawdzanie kolejnych znakow
  76.             tmp++;
  77.         else{
  78.             printf("Sprobuj ponownie!");            //zmuszenie uzytkownika do podania wlasciwego lancucha
  79.             scanf("%s", znaki);
  80.             dlugosc = strlen(znaki);
  81.             i=0;
  82.         }
  83.     }
  84.    
  85.     if(tmp == dlugosc)
  86.         nowa=atoi(znaki);           //konwersja
  87.        
  88.     char haslo1[nowa+1];            
  89.     char haslo2[nowa+1];
  90.        
  91.     return;
  92. }
  93.  
  94. void Haslo(char haslo1[]){
  95.     int war1, war2, war3, war4 = 0;  
  96.     int dlugosc = strlen(haslo1);
  97.    
  98.     for(int i=0 ; i < dlugosc ; i++ ){
  99.        
  100.         if(ispunct(haslo1[i])) war1++;
  101.        
  102.         if(isdigit(haslo1[i])) war2++;
  103.      
  104.         if(islower(haslo1[i])) war3++;
  105.          
  106.         if(isupper(haslo1[i])) war4++;
  107.     }
  108.  
  109.     if(war1>=1 && war2>=1 && war3>=1 && war4>=1){
  110.         printf("Twoje haslo jest silne");               //informacja o hasle
  111.     }
  112.     return;
  113. }
  114.  
  115.