• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Program dodaje nowy napis do starego

0 głosów
56 wizyt
pytanie zadane 15 stycznia 2018 w C i C++ przez Mick_SQ6IYV Użytkownik (750 p.)

Witam!

Zadaniem programu jest "odgadnąć" hasło wprowadzone przez użytkownika. Użytkownik wprowadza napis składający się z określonej liczby liter, a komputer losuje zadaną ilość znaków i sprawdza, czy udało mu się wylosować to, co wpisał użytkownik. Wszystko fajnie, tylko program do wylosowanego (w poprzedniej próbie) napisu "dokleja" mi nowo utworzoną kombinację liter. Najchętniej kazałbym programowi za każdym razem kasować stary napis po sprawdzeniu jego poprawności.

#include <iostream>
#include <cstdlib>
#include <windows.h>
#include <time.h>

using namespace std;

string generator();

int liczba_podejsc=0, liczba_znakow=3;
string napis, haslo;

int main(int argc, char** argv) 
{
	srand(time(NULL));
	cout << endl << " Podaj mi jakies slowo (skladajace sie z 3 znakow): ";
	cin >> haslo;
	do
	{
		system("cls");
		generator();
		liczba_podejsc++;
		cout << endl << " " << liczba_podejsc << ". Podano: " << haslo << ". Wylosowano: " << napis << endl;
		Sleep(50);	
	}
	while(haslo!=napis);
	cout << " Odgadlem Twoje haslo w " << liczba_podejsc << " probie! :)" << endl;
	system("pause");
	return 0;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////
string generator()
{
	int liczba;
	char znaki[26]={'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};
	for(int i=1; i<=liczba_znakow; i++)
	{
		liczba=(rand()%26)+1;
		napis+=znaki[liczba];
		i++;
	}
	return napis;
}

 

1
komentarz 15 stycznia 2018 przez draghan VIP (102,850 p.)

Najchętniej kazałbym programowi za każdym razem kasować stary napis po sprawdzeniu jego poprawności.

A więc tak zrób. ;)

1 odpowiedź

+2 głosów
odpowiedź 15 stycznia 2018 przez niezalogowany
wybrane 15 stycznia 2018 przez Mick_SQ6IYV
 
Najlepsza

Po co kasować stary napis jak można modyfikować jego elementy? ;)

#include <iostream>
#include <cstdlib>
#include <string>
#include <windows.h>
#include <time.h>
using namespace std;

void generator(string& napis);

int main(int argc, char** argv)
{
	srand(time(NULL));
	int liczba_podejsc = 0, liczba_znakow = 3;
	string napis, haslo;
	
	cout << endl << " Podaj mi jakies slowo: ";
	cin >> haslo;

	if (haslo.length() != liczba_znakow)
	{
		cerr << "\nBlad krytyczny! Podano slowo o nieodpowiedniej dlugosci!";
		return -1;
	}

	napis.resize(liczba_znakow); 
	/*
	funkcja generator generuje przypadkowe wartosci dla kazdego elementu
	wiec powinien miec taki sam rozmiar jak haslo
	*/

	do
	{
		system("cls");
		generator(napis);
		liczba_podejsc++;
		cout << endl << " " << liczba_podejsc << ". Podano: " << haslo << ". Wylosowano: " << napis << endl;
		Sleep(50);
	} while (haslo != napis);

	cout << " Odgadlem Twoje haslo w " << liczba_podejsc << " probie! :)" << endl;
	system("pause");
}

void generator(string& napis)
{
	const static int ile_liter = 'z' - 'a' + 1;
	for (int i = 0; i < napis.length(); i++)
	{
		napis[i] = 'a' + rand() % ile_liter;
	}
}
komentarz 15 stycznia 2018 przez Mick_SQ6IYV Użytkownik (750 p.)
Super, zadziałało:) Dziękuję bardzo za pomoc:)

Podobne pytania

0 głosów
0 odpowiedzi 17 wizyt
0 głosów
2 odpowiedzi 83 wizyt
pytanie zadane 5 dni temu w C i C++ przez Mavimix Mądrala (5,140 p.)
0 głosów
1 odpowiedź 57 wizyt
Porady nie od parady
Forum posiada swój własny chat IRC, dzięki któremu będziesz mógł po prostu pogadać z innymi Pasjonatami lub zapytać o jakiś problem. Podstrona z chatem znajduje się w menu pod ikoną człowieka w dymku.IRC

65,683 zapytań

112,321 odpowiedzi

237,045 komentarzy

46,657 pasjonatów

Przeglądających: 234
Pasjonatów: 5 Gości: 229

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...