Witam. Z góry zaznaczam, że jestem świeży w programowaniu.
Szukam rozwiązania dla punktu b. treści zadania zamieszczonej poniżej. Chodzi o prostą grę w której gracz musi zgadnąć liczby wylosowane przez komputer. Męczę się już z tym od 2 dni i nie umiem stworzyć algorytmu który podawałby ilość dobrych cyfr z podanego przez użytkownika ciągu(służyć to ma jako podpowiedź dla gracza), ale każdą żeby zliczał tylko jeden raz. Proszę o podpowiedź doświadczonych programistów bo mnie się już pomysły wyczerpały:)
Działa to tak:
- Program generuje losowy ciąg 6 liczb, np. „ 1 2 3 4 5 6 ”.
- Użytkownik podaje swój ciąg liczbowy, np. „1 1 2 3 6 4”.
- Program sprawdza dwie rzeczy:
a. Ilość zgodnych wartości liczbowych i pozycji (w przykładzie pierwsza jedynka jest na dobrej pozycji)
b. Ilość dobrych cyfr z kodu (w przykładzie mamy 3 takie cyfry: 1, 2, 3, ale tylko 1 jest na dobrej pozycji)
poniżej zamieszczam kod programu.
#include <conio.h>
#include <stdio.h>
#include <iostream.h>
#include <time.h>
#include <stdlib.h>
#pragma hdrstop
#pragma argsused
main(){
int losowa[10], wpisana[10], i,j, pom=0, licznik, licznik1;
system("cls");
srand ( time(NULL) );
for (i=1; i<8; i++)
{
losowa[i] = rand() % 6 + 1;
}
for (i=1; i<7; i++)
{
cout<<"Wpisz "<<i<<" liczbe szukanego ciagu liczb od 1 do 6: ";
cin>>wpisana[i];
}
cout<<endl<<endl<<endl;
licznik=0;
for(i=1; i<7; i++)
{
if (wpisana[i]==losowa[i])
{
cout<<"zgodna wartosc liczbowa na pozycji: "<<i<<endl;
licznik++;
}
}
licznik1=0;
for(j=1; j<7; j++)
{
for (i=1; i<7; i++)
{
if (losowa[j]==wpisana[i] && wpisana[i]!=pom)
{
pom=losowa[j];
licznik1++;
}
}
}
cout<<"ilosc dobrych cyfr z kodu: "<<licznik1<<endl;
cout<<endl;
cout<<"szukana liczba: ";
for (i=1; i<7; i++)
{
cout<<losowa[i];
}
cout<<endl<<endl;
getch();
}