• 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

Konferencja JOIN! 2018
0 głosów
55 wizyt
pytanie zadane 15 stycznia w C i C++ przez Mick_SQ6IYV Użytkownik (600 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 przez draghan VIP (101,790 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 przez niezalogowany
wybrane 15 stycznia 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 przez Mick_SQ6IYV Użytkownik (600 p.)
Super, zadziałało:) Dziękuję bardzo za pomoc:)

Podobne pytania

0 głosów
2 odpowiedzi 106 wizyt
0 głosów
0 odpowiedzi 36 wizyt
pytanie zadane 31 lipca w HTML i CSS przez Shudernight Nowicjusz (120 p.)
0 głosów
1 odpowiedź 50 wizyt
Porady nie od parady
Zadając pytanie postaraj się o odpowiedni tytuł, kategorię oraz tagi.Tagi

55,269 zapytań

99,579 odpowiedzi

204,900 komentarzy

27,239 pasjonatów

Przeglądających: 160
Pasjonatów: 1 Gości: 159

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.

...