Heslo – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Heslo – C / C++ – Fórum – Programujte.comHeslo – C / C++ – Fórum – Programujte.com

 

Aliande
~ Anonymní uživatel
18 příspěvků
25. 11. 2012   #1
-
0
-

Ahoj, mám program, do kterého uživatel musí vložit heslo. To musí obsahovat min pět znaků, obsahovat min jedno malé nebo velké písmeno, musí mít min jednu číslici a ještě jeden znak, který není písmeno ani číslice. Udělal jsem níže uvedený kód, o kterém jsem si myslel, že by měl fungovat. Bohužel asi tápu v podmínkách, jak se tak dívám. No studuju dálkově. Zkuste mi prosím poradit. Když uživatel splní podmínky zapsaného hesla, objeví se hláška "Heslo splňuje podmínky." V opačném případě "Heslo nesplňuje podmínky." Děkuji

#include <iostream>
#include <string>
using namespace std;
int main ()
{
string heslo;
cin >> heslo;
if (heslo.size() >= 5)
{
if ((heslo[0] >='a' && heslo[0] <='z') || (heslo[0] >='A' && heslo[0] <='Z'))
{
if (heslo[0] >='0' && heslo[0] <='9')
{
if ((heslo[0] >='!' && heslo[0] <='/') || (heslo[0] >=':' && heslo[0] <='`') || (heslo[0] >='{' && heslo[0] <='~'))

cout << "Heslo splnuje pozadavky.";
else cout << "Heslo nesplnuje pozadavky.";
}
else cout << "Heslo nesplnuje pozadavky.";
}
else cout << "Heslo nesplnuje pozadavky.";
}
else cout << "Heslo nesplnuje pozadavky.";


char reakce;
cin >> reakce;
return 0;
}

Nahlásit jako SPAM
IP: 188.175.160.–
vitamin+8
Grafoman
25. 11. 2012   #2
-
0
-

#1 Aliande
Ty testujes len prvy znak hesla.

Nahlásit jako SPAM
IP: 95.105.157.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
Aliande
~ Anonymní uživatel
18 příspěvků
25. 11. 2012   #3
-
0
-

#2 vitamin
Takže smazat nulu v hranaté závorce?

Nahlásit jako SPAM
IP: 188.175.160.–
Aliande
~ Anonymní uživatel
18 příspěvků
25. 11. 2012   #4
-
0
-

Nene, takhle to nejde. Jak zaimponuju do testu všechny znaky?

Nahlásit jako SPAM
IP: 188.175.160.–
vitamin+8
Grafoman
25. 11. 2012   #5
-
0
-

Musis pouzit cyklus, niak takto:

bool cislo = false;
for(int i = 0; i < 5; ++i){
	if (heslo[i] >='0' && heslo[i] <='9')cislo = true;
}
if(cislo == false)/*chyba*/;
Nahlásit jako SPAM
IP: 95.105.157.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
Aliande
~ Anonymní uživatel
18 příspěvků
25. 11. 2012   #6
-
0
-

#5 vitamin
Takže dopsat cyklus ke každé podmínce?

Nahlásit jako SPAM
IP: 188.175.160.–
Aliande
~ Anonymní uživatel
18 příspěvků
25. 11. 2012   #7
-
0
-

#5 vitamin
Udělal jsem to takhle, ovšem tam musím ještě zakomponovat podmínku, že heslo musí mít min 5 znaků. O bool toho moc nevím, pravda nepravda. Jak udělat výpis "Pokud pravda = zobrazí se Heslo splnuje pozadavky", pokud se vrací nepravda = Heslo nesplnuje pozadavky..."?

#include <iostream>
#include <string>
using namespace std;
int main ()
{
string heslo;
bool cislo = false;
bool pismena = false;
bool znaky = false;
cin >> heslo;


for(int i = 0; i < 5; ++i){
if (heslo[i] >='0' && heslo[i] <='9')cislo = true;
}

if(cislo == false)/*chyba*/;

for(int i = 0; i < 5; ++i){
if ((heslo[i] >='a' && heslo[i] <='z') || (heslo[i] >='A' && heslo[i] <='Z'))pismena = true;
}
if(pismena == false)/*chyba*/;

for(int i = 0; i < 5; ++i){
if ((heslo[0] >='!' && heslo[0] <='/') || (heslo[0] >=':' && heslo[0] <='`') || (heslo[0] >='{' && heslo[0] <='~'))znaky = true;
}
if(znaky == false)/*chyba*/;

cout << "Heslo splnuje pozadavky.";

char reakce;
cin >> reakce;
return 0;
}

Nahlásit jako SPAM
IP: 188.175.160.–
Aliande
~ Anonymní uživatel
18 příspěvků
25. 11. 2012   #8
-
0
-

#5 vitamin
Napsal jsem to ještě jinak a je teď problém, že pokud nesplním podmínky se znaky, vypíše se 3x hláška heslo nesplňuje požadavky - potřebuju jen jednu hlášku. Ještě mi tam chybí zakomponovat podmínku, aby heslo mělo min 5 znaků. pokud má 5 znaků, program postupuje po řádcích, ale když nemá, zhroutí se... 

#include <iostream>
#include <string>
using namespace std;
int main ()
{
string heslo;
bool cislo = false;
bool pismena = false;
bool znaky = false;
cin >> heslo;


for(int i = 0; i < 5; ++i){
if (heslo[i] >='0' && heslo[i] <='9')cislo = true;
}

if(cislo == false)/*chyba*/;
{
  cout << "Heslo nesplnuje pozadavky.";
}

for(int i = 0; i < 5; ++i){
if ((heslo[i] >='a' && heslo[i] <='z') || (heslo[i] >='A' && heslo[i] <='Z'))pismena = true;
}
if(pismena == false)/*chyba*/;
{
  cout << "Heslo nesplnuje pozadavky.";
}

for(int i = 0; i < 5; ++i){
if ((heslo[0] >='!' && heslo[0] <='/') || (heslo[0] >=':' && heslo[0] <='`') || (heslo[0] >='{' && heslo[0] <='~'))znaky = true;
}
if(znaky == false)/*chyba*/;

{
  cout << "Heslo nesplnuje pozadavky.";
}

char reakce;
cin >> reakce;
return 0;
}

Nahlásit jako SPAM
IP: 188.175.160.–
Aliande
~ Anonymní uživatel
18 příspěvků
25. 11. 2012   #9
-
0
-

#5 vitamin
Ještě jsem to opravil ale přesto heslo splňuje podmínky vždy, když zadám pět znaků :-( Prostě to nefunguje jak má :(

Prosím, poraďte mi někdo

#include <iostream>
#include <string>
using namespace std;
int main ()
{
string heslo;
bool cislo = false;
bool pismena = false;
bool znaky = false;
cin >> heslo;


for(int i = 0; i < 5; ++i)
{
if (heslo[i] >='0' && heslo[i] <='9')cislo = true;
{
  if ((heslo[i] >='a' && heslo[i] <='z') || (heslo[i] >='A' && heslo[i] <='Z'))pismena = true;
  {
   if ((heslo[i] >='!' && heslo[i] <='/') || (heslo[i] >=':' && heslo[i] <='`') || (heslo[i] >='{' && heslo[i] <='~'))znaky = true;
   {
   cout << "Heslo splnuje pozadavky.";
   char reakce;
   cin >> reakce;
   }
   if(znaky == false)/*chyba*/;
{
  cout << "Heslo nesplnuje pozadavky.";
  return 0;
}
  }
  if(pismena == false)/*chyba*/;
{
  cout << "Heslo nesplnuje pozadavky.";
  return 0;
}
}
if(cislo == false)/*chyba*/;
{
  cout << "Heslo nesplnuje pozadavky.";
  return 0;
}
}

char reakce;
cin >> reakce;
return 0;
}

Nahlásit jako SPAM
IP: 188.175.160.–
Anonym
~ Anonymní uživatel
454 příspěvků
25. 11. 2012   #10
-
0
-

   

#include <iostream>

using namespace std;

void Error(const char *Text);

int main(void)
{

    string Heslo;
    bool Pismeno,Znak,Cislo;

    Pismeno = Znak = Cislo = false;

    cout << "Zadej heslo " << endl;
    cin >> Heslo;

    if (Heslo.length() < 5) {
        Error("Minimalne 5 znaku");
        return 0;
    }


    for (unsigned int i=0 ; i<Heslo.length() ; i++) {
        if (Heslo[i] >= '0' && Heslo[i] <= '9') Cislo = true;

        else if ((Heslo[i] >= 'a' && Heslo[i] <= 'z') || (Heslo[i] >= 'A' && Heslo[i] <= 'Z'))
                Pismeno = true;

        else if (Heslo[i] != ' ') Znak = true;

        else {
            Error("Nespecifikovany znak");
            return 0;
        }



   }

    if (!Cislo || !Pismeno || !Znak)
        Error("Min 1 znak,cislo,pismeno");

    else
        cout << "Heslo splnuje pozadavky" << endl;

    return 0;

}

void Error(const char *Text) {

  cout << "Heslo nesplnuje pozadavky : " << Text << endl;
}
Nahlásit jako SPAM
IP: 194.8.239.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 32 hostů

Podobná vlákna

Heslo — založil

Heslo — založil Tomáš

Meno a heslo — založil Empo202

Zapomenuté heslo. — založil Roman

Prográmek na heslo — založil TOP SECRET

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý