Çözüldü C++ harfler tekrar girildiğinde uyarı veren kod

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

huseyinddemirci

Decapat
Katılım
13 Nisan 2023
Mesajlar
26
Daha fazla  
Cinsiyet
Erkek
Kendi çapımda bir adam asmaca yapıyordum ama birkaç noktada takıldım.
Tahmin edilen harflerin bir diziye kaydedilmesini ve ekrana Denenen Harfler: A B C gibi yazdırılmasını ve denenen harfler tekrar girildiğinde oyuncunun uyarılmasını istiyorum ama bir türlü yapamadım. Şimdiden teşekkürler.
Kod;

C++:
#include <iostream>
#include <string>
using namespace std;

string kelime, gizlikelime;
string kelimeler[] = { "BLUE", "ORANGE","RED", "BROWN", "BLACK"};
char tahmin;
int yanlis = 0;

int main()
{
  
    srand(time(0));
    int y = rand() % 5;
    string kelime = kelimeler[y];

    while (gizlikelime.size() !=kelime.size())
    {
        gizlikelime.push_back('_');
    }

    do
    {
        cout << "Bulunan harfler: " << endl;
        cout << gizlikelime<<endl;
        cout << "Bir harf tahmini yapin: ";
        cin >> tahmin;
      
        system("cls");

        int x = kelime.length();
        for (int i = 0; i < x; i++)
        {
            if (tahmin == kelime[i]) {
                gizlikelime[i] = tahmin;
                yanlis--;
            }
          
        }

        yanlis++;

        if (gizlikelime==kelime)
        {
            cout << "Oyunu kazandiniz." << endl;
            break;
        }

        if (yanlis == 0)
        {
            cout << "                " << endl;
            cout << "                " << endl;
            cout << "                " << endl;
            cout << "                " << endl;
            cout << "                " << endl;
            cout << "                " << endl;
            cout << "                " << endl;
            cout << "                " << endl;
            cout << "Kalan Deneme Hakkiniz: " << "9/"<<(9 - yanlis) << endl;
        }
        else if (yanlis == 1)
        {
            cout << "                " << endl;
            cout << "|               " << endl;
            cout << "|               " << endl;
            cout << "|               " << endl;
            cout << "|               " << endl;
            cout << "|               " << endl;
            cout << "|               " << endl;
            cout << "|               " << endl;
            cout << "Kalan Deneme Hakkiniz: " << (9 - yanlis) << "/9" << endl;
        }
        else if (yanlis == 2)
        {
            cout << " ________       " << endl;
            cout << "|               " << endl;
            cout << "|               " << endl;
            cout << "|               " << endl;
            cout << "|               " << endl;
            cout << "|               " << endl;
            cout << "|               " << endl;
            cout << "|               " << endl;
            cout << "Kalan Deneme Hakkiniz: " << (9 - yanlis) << "/9" << endl;
        }
        else if (yanlis == 3)
        {
            cout << " ________       " << endl;
            cout << "|       |       " << endl;
            cout << "|               " << endl;
            cout << "|               " << endl;
            cout << "|               " << endl;
            cout << "|               " << endl;
            cout << "|               " << endl;
            cout << "|               " << endl;
            cout << "Kalan Deneme Hakkiniz: " << (9 - yanlis) << "/9" << endl;
        }
        else if (yanlis == 4)
        {
            cout << " ________       " << endl;
            cout << "|       |       " << endl;
            cout << "|      ( )      " << endl;
            cout << "|               " << endl;
            cout << "|               " << endl;
            cout << "|               " << endl;
            cout << "|               " << endl;
            cout << "|               " << endl;
            cout << "Kalan Deneme Hakkiniz: " << (9 - yanlis) << "/9" << endl;
        }
        else if (yanlis == 5)
        {
            cout << " ________       " << endl;
            cout << "|       |       " << endl;
            cout << "|      ( )      " << endl;
            cout << "|       |       " << endl;
            cout << "|               " << endl;
            cout << "|               " << endl;
            cout << "|               " << endl;
            cout << "|               " << endl;
            cout << "Kalan Deneme Hakkiniz: " << (9 - yanlis) << "/9" << endl;
        }
        else if (yanlis == 6)
        {
            cout << " ________       " << endl;
            cout << "|       |       " << endl;
            cout << "|      ( )      " << endl;
            cout << "|       |       " << endl;
            cout << "|      /        " << endl;
            cout << "|               " << endl;
            cout << "|               " << endl;
            cout << "|               " << endl;
            cout << "Kalan Deneme Hakkiniz: " << (9 - yanlis) << "/9" << endl;
        }
        else if (yanlis == 7)
        {
            cout << " ________       " << endl;
            cout << "|       |       " << endl;
            cout << "|      ( )      " << endl;
            cout << "|       |       " << endl;
            cout << "|      / \\     " << endl;
            cout << "|               " << endl;
            cout << "|               " << endl;
            cout << "|               " << endl;
            cout << "Kalan Deneme Hakkiniz: " << (9 - yanlis) << "/9" << endl;
        }
        else if (yanlis == 8)
        {
            cout << " ________       " << endl;
            cout << "|       |       " << endl;
            cout << "|      ( )      " << endl;
            cout << "|       |       " << endl;
            cout << "|      / \\     " << endl;
            cout << "|       |       " << endl;
            cout << "|       |       " << endl;
            cout << "|      /        " << endl;
            cout << "Kalan Deneme Hakkiniz: " << (9 - yanlis) << "/9" << endl;
        }
        else if (yanlis == 9)
        {
            cout << " ________       " << endl;
            cout << "|       |       " << endl;
            cout << "|      ( )      " << endl;
            cout << "|       |       " << endl;
            cout << "|      / \\     " << endl;
            cout << "|       |       " << endl;
            cout << "|       |       " << endl;
            cout << "|      / \\     " << endl;
            cout << "Kalan Deneme Hakkiniz: " << (9 - yanlis) << "/9" << endl;

            cout << "Oyunu kaybettiniz." << endl;
            cout << "Gizli Kelime: " << kelime <<endl;
        }
      
    } while (yanlis<9);



    return 0;
}
 
Son düzenleyen: Moderatör:
Çözüm
Bir şey fark ettim, yukarıdaki kodda her yanlış girdiğimizde hata veriyor, acaba sadece daha önceden girilen harflerden biri tekrar girildiğinde hata vermesini sağlayabilir miyiz?
Tabii, aşağıdaki kodda aynı harfi birden fazla kullanamazsın:
Kod:
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;

string kelime, gizlikelime;
string kelimeler[] = { "BLUE", "ORANGE","RED", "BROWN", "BLACK"};
char tahmin;
int yanlis = 0;
vector<char> denenenHarfler;

int main()
{
srand(time(0));
int y = rand() % 5;
string kelime = kelimeler[y];

while (gizlikelime.size() != kelime.size())
{
    gizlikelime.push_back('_');
}

do
{
    cout << "Bulunan harfler: " << endl;
    cout << gizlikelime << endl;
    cout << "Denenen Harfler: ";
    for (int i = 0; i < denenenHarfler.size(); i++) {
        cout << denenenHarfler[i] << " ";
    }
    cout << endl;
    cout << "Bir harf tahmini yapin: ";
    cin >> tahmin;
 
    system("cls");

    auto it = find(denenenHarfler.begin(), denenenHarfler.end(), tahmin);
    if (it != denenenHarfler.end()) {
        cout << "Bu harfi daha once denediniz! Lutfen baska bir harf deneyin." << endl;
        continue;
    }

    bool harfBulundu = false;
    int x = kelime.length();
    for (int i = 0; i < x; i++)
    {
        if (tahmin == kelime[i]) {
            gizlikelime[i] = tahmin;
            harfBulundu = true;
        }
    }

    if (!harfBulundu) {
        yanlis++;
        cout << "Yanlis tahmin! Kalan deneme hakkiniz: " << 9 - yanlis << endl;
    }
    else {
        cout << "Dogru tahmin!" << endl;
    }

    denenenHarfler.push_back(tahmin);

    if (gizlikelime == kelime)
    {
        cout << "Oyunu kazandiniz." << endl;
        break;
    }

    if (yanlis == 0)
    {
        cout << "                " << endl;
        cout << "                " << endl;
        cout << "                " << endl;
        cout << "                " << endl;
        cout << "                " << endl;
        cout << "                " << endl;
        cout << "                " << endl;
        cout << "                " << endl;
        cout << "Kalan Deneme Hakkiniz: " << "9/" << (9 - yanlis) << endl;
    }
    else if (yanlis == 1)
    {
        cout << "                " << endl;
        cout << "|               " << endl;
        cout << "|               " << endl;
        cout << "|               " << endl;
        cout << "|               " << endl;
        cout << "|               " << endl;
        cout << "|               " << endl;
        cout << "|               " << endl;
        cout << "Kalan Deneme Hakkiniz: " << (9 - yanlis) << "/9" << endl;
    }
} while (yanlis < 9);

if (yanlis >= 9)
{
Denenen harfleri saklamak için bir vector kullanabilirsiniz. Böylece, her tahmin edilen harfi vektöre ekleyebilir ve vektördeki tüm öğeleri ekrana yazdırabilirsiniz. Daha önce tahmin edilen bir harf tekrar girildiğinde, vektördeki bu harfi arayabilir ve kullanıcının uyarılmasını sağlayabilirsiniz.
Kod Örneği:
Kod:
#include <iostream>
#include <string>
#include <vector>
using namespace std;

string kelime, gizlikelime;
string kelimeler[] = { "BLUE", "ORANGE","RED", "BROWN", "BLACK"};
char tahmin;
int yanlis = 0;
vector<char> denenenHarfler;

int main()
{
  
    srand(time(0));
    int y = rand() % 5;
    string kelime = kelimeler[y];

    while (gizlikelime.size() !=kelime.size())
    {
        gizlikelime.push_back('_');
    }

    do
    {
        cout << "Bulunan harfler: " << endl;
        cout << gizlikelime<<endl;
        cout << "Denenen Harfler: ";
        for (int i = 0; i < denenenHarfler.size(); i++) {
            cout << denenenHarfler[i] << " ";
        }
        cout << endl;
        cout << "Bir harf tahmini yapin: ";
        cin >> tahmin;
      
        system("cls");

        bool harfBulundu = false;
        int x = kelime.length();
        for (int i = 0; i < x; i++)
        {
            if (tahmin == kelime[i]) {
                gizlikelime[i] = tahmin;
                harfBulundu = true;
            }
        }

        if (!harfBulundu) {
            yanlis++;
            cout << "Yanlis tahmin! Kalan deneme hakkiniz: " << 9 - yanlis << endl;
        }
        else {
            cout << "Dogru tahmin!" << endl;
        }

        denenenHarfler.push_back(tahmin);

        if (gizlikelime==kelime)
        {
            cout << "Oyunu kazandiniz." << endl;
            break;
        }

        if (yanlis == 0)
        {
            cout << "                " << endl;
            cout << "                " << endl;
            cout << "                " << endl;
            cout << "                " << endl;
            cout << "                " << endl;
            cout << "                " << endl;
            cout << "                " << endl;
            cout << "                " << endl;
            cout << "Kalan Deneme Hakkiniz: " << "9/"<<(9 - yanlis) << endl;
        }
        else if (yanlis == 1)
        {
            cout << "                " << endl;
            cout << "|               " << endl;
            cout << "|               " << endl;
            cout << "|               " << endl;
            cout << "|               " << endl;
            cout << "|               " << endl;
            cout << "|               " << endl;
            cout << "|               " << endl;
            cout << "Kalan Deneme Hakkiniz: " << (9 - yanlis) << "/9" << endl;
 
Denenen harfleri saklamak için bir vector kullanabilirsiniz. Böylece, her tahmin edilen harfi vektöre ekleyebilir ve vektördeki tüm öğeleri ekrana yazdırabilirsiniz. Daha önce tahmin edilen bir harf tekrar girildiğinde, vektördeki bu harfi arayabilir ve kullanıcının uyarılmasını sağlayabilirsiniz.
Kod Örneği:
Kod:
#include <iostream>
#include <string>
#include <vector>
using namespace std;

string kelime, gizlikelime;
string kelimeler[] = { "BLUE", "ORANGE","RED", "BROWN", "BLACK"};
char tahmin;
int yanlis = 0;
vector<char> denenenHarfler;

int main()
{
 
    srand(time(0));
    int y = rand() % 5;
    string kelime = kelimeler[y];

    while (gizlikelime.size() !=kelime.size())
    {
        gizlikelime.push_back('_');
    }

    do
    {
        cout << "Bulunan harfler: " << endl;
        cout << gizlikelime<<endl;
        cout << "Denenen Harfler: ";
        for (int i = 0; i < denenenHarfler.size(); i++) {
            cout << denenenHarfler[i] << " ";
        }
        cout << endl;
        cout << "Bir harf tahmini yapin: ";
        cin >> tahmin;
     
        system("cls");

        bool harfBulundu = false;
        int x = kelime.length();
        for (int i = 0; i < x; i++)
        {
            if (tahmin == kelime[i]) {
                gizlikelime[i] = tahmin;
                harfBulundu = true;
            }
        }

        if (!harfBulundu) {
            yanlis++;
            cout << "Yanlis tahmin! Kalan deneme hakkiniz: " << 9 - yanlis << endl;
        }
        else {
            cout << "Dogru tahmin!" << endl;
        }

        denenenHarfler.push_back(tahmin);

        if (gizlikelime==kelime)
        {
            cout << "Oyunu kazandiniz." << endl;
            break;
        }

        if (yanlis == 0)
        {
            cout << "                " << endl;
            cout << "                " << endl;
            cout << "                " << endl;
            cout << "                " << endl;
            cout << "                " << endl;
            cout << "                " << endl;
            cout << "                " << endl;
            cout << "                " << endl;
            cout << "Kalan Deneme Hakkiniz: " << "9/"<<(9 - yanlis) << endl;
        }
        else if (yanlis == 1)
        {
            cout << "                " << endl;
            cout << "|               " << endl;
            cout << "|               " << endl;
            cout << "|               " << endl;
            cout << "|               " << endl;
            cout << "|               " << endl;
            cout << "|               " << endl;
            cout << "|               " << endl;
            cout << "Kalan Deneme Hakkiniz: " << (9 - yanlis) << "/9" << endl;
Çok teşekkür ederim, acaba yanlış sayısını girilen harf ile kelime içindeki girilen harfe ascii olarak en yakın olana göre değiştirebilir miyiz? Ascii'ye göre 1-15 fark varsa 1 yanlış sayılsın, 16-25 fark varsa 2 yanlış sayılsın. Mesela kelimemiz RED olsun ve RE_ durumundayken F girince 1 yanlış sayılsın, Z girince 2 sayılsın.
 
Çok teşekkür ederim, acaba yanlış sayısını girilen harf ile kelime içindeki girilen harfe ascii olarak en yakın olana göre değiştirebilir miyiz? Ascii'ye göre 1-15 fark varsa 1 yanlış sayılsın, 16-25 fark varsa 2 yanlış sayılsın. Mesela kelimemiz RED olsun ve RE_ durumundayken F girince 1 yanlış sayılsın, Z girince 2 sayılsın.
Bu beni aşırı zorlar.
 
Bir şey fark ettim, yukarıdaki kodda her yanlış girdiğimizde hata veriyor, acaba sadece daha önceden girilen harflerden biri tekrar girildiğinde hata vermesini sağlayabilir miyiz?
Tabii, aşağıdaki kodda aynı harfi birden fazla kullanamazsın:
Kod:
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;

string kelime, gizlikelime;
string kelimeler[] = { "BLUE", "ORANGE","RED", "BROWN", "BLACK"};
char tahmin;
int yanlis = 0;
vector<char> denenenHarfler;

int main()
{
srand(time(0));
int y = rand() % 5;
string kelime = kelimeler[y];

while (gizlikelime.size() != kelime.size())
{
    gizlikelime.push_back('_');
}

do
{
    cout << "Bulunan harfler: " << endl;
    cout << gizlikelime << endl;
    cout << "Denenen Harfler: ";
    for (int i = 0; i < denenenHarfler.size(); i++) {
        cout << denenenHarfler[i] << " ";
    }
    cout << endl;
    cout << "Bir harf tahmini yapin: ";
    cin >> tahmin;
 
    system("cls");

    auto it = find(denenenHarfler.begin(), denenenHarfler.end(), tahmin);
    if (it != denenenHarfler.end()) {
        cout << "Bu harfi daha once denediniz! Lutfen baska bir harf deneyin." << endl;
        continue;
    }

    bool harfBulundu = false;
    int x = kelime.length();
    for (int i = 0; i < x; i++)
    {
        if (tahmin == kelime[i]) {
            gizlikelime[i] = tahmin;
            harfBulundu = true;
        }
    }

    if (!harfBulundu) {
        yanlis++;
        cout << "Yanlis tahmin! Kalan deneme hakkiniz: " << 9 - yanlis << endl;
    }
    else {
        cout << "Dogru tahmin!" << endl;
    }

    denenenHarfler.push_back(tahmin);

    if (gizlikelime == kelime)
    {
        cout << "Oyunu kazandiniz." << endl;
        break;
    }

    if (yanlis == 0)
    {
        cout << "                " << endl;
        cout << "                " << endl;
        cout << "                " << endl;
        cout << "                " << endl;
        cout << "                " << endl;
        cout << "                " << endl;
        cout << "                " << endl;
        cout << "                " << endl;
        cout << "Kalan Deneme Hakkiniz: " << "9/" << (9 - yanlis) << endl;
    }
    else if (yanlis == 1)
    {
        cout << "                " << endl;
        cout << "|               " << endl;
        cout << "|               " << endl;
        cout << "|               " << endl;
        cout << "|               " << endl;
        cout << "|               " << endl;
        cout << "|               " << endl;
        cout << "|               " << endl;
        cout << "Kalan Deneme Hakkiniz: " << (9 - yanlis) << "/9" << endl;
    }
} while (yanlis < 9);

if (yanlis >= 9)
{
 
Çözüm
Tabii, aşağıdaki kodda aynı harfi birden fazla kullanamazsın:
Kod:
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;

string kelime, gizlikelime;
string kelimeler[] = { "BLUE", "ORANGE","RED", "BROWN", "BLACK"};
char tahmin;
int yanlis = 0;
vector<char> denenenHarfler;

int main()
{
srand(time(0));
int y = rand() % 5;
string kelime = kelimeler[y];

while (gizlikelime.size() != kelime.size())
{
    gizlikelime.push_back('_');
}

do
{
    cout << "Bulunan harfler: " << endl;
    cout << gizlikelime << endl;
    cout << "Denenen Harfler: ";
    for (int i = 0; i < denenenHarfler.size(); i++) {
        cout << denenenHarfler[i] << " ";
    }
    cout << endl;
    cout << "Bir harf tahmini yapin: ";
    cin >> tahmin;
 
    system("cls");

    auto it = find(denenenHarfler.begin(), denenenHarfler.end(), tahmin);
    if (it != denenenHarfler.end()) {
        cout << "Bu harfi daha once denediniz! Lutfen baska bir harf deneyin." << endl;
        continue;
    }

    bool harfBulundu = false;
    int x = kelime.length();
    for (int i = 0; i < x; i++)
    {
        if (tahmin == kelime[i]) {
            gizlikelime[i] = tahmin;
            harfBulundu = true;
        }
    }

    if (!harfBulundu) {
        yanlis++;
        cout << "Yanlis tahmin! Kalan deneme hakkiniz: " << 9 - yanlis << endl;
    }
    else {
        cout << "Dogru tahmin!" << endl;
    }

    denenenHarfler.push_back(tahmin);

    if (gizlikelime == kelime)
    {
        cout << "Oyunu kazandiniz." << endl;
        break;
    }

    if (yanlis == 0)
    {
        cout << "                " << endl;
        cout << "                " << endl;
        cout << "                " << endl;
        cout << "                " << endl;
        cout << "                " << endl;
        cout << "                " << endl;
        cout << "                " << endl;
        cout << "                " << endl;
        cout << "Kalan Deneme Hakkiniz: " << "9/" << (9 - yanlis) << endl;
    }
    else if (yanlis == 1)
    {
        cout << "                " << endl;
        cout << "|               " << endl;
        cout << "|               " << endl;
        cout << "|               " << endl;
        cout << "|               " << endl;
        cout << "|               " << endl;
        cout << "|               " << endl;
        cout << "|               " << endl;
        cout << "Kalan Deneme Hakkiniz: " << (9 - yanlis) << "/9" << endl;
    }
} while (yanlis < 9);

if (yanlis >= 9)
{
Çok teşekkür ederim, çözüm olarak nasıl işaretleyebilirim sizi?
 
Çok teşekkür ederim, çözüm olarak nasıl işaretleyebilirim sizi?
Maalesef ki konunuz "Konu" olarak geçiyor. Sorularınızı "soru" olarak açarsanız çözüm işaretleyebilirsiniz. Ama denemek istiyorsanız üstteki mesajımı rapor edip "Çözüm" sebebini seçebilirsiniz. Belki o zaman moderatörler bir şey yapabilir.
 
Maalesef ki konunuz "Konu" olarak geçiyor. Sorularınızı "soru" olarak açarsanız çözüm işaretleyebilirsiniz. Ama denemek istiyorsanız üstteki mesajımı rapor edip "Çözüm" sebebini seçebilirsiniz. Belki o zaman moderatörler bir şey yapabilir.
Discord kullanıyorsanız size ulaşmak istiyorum, birkaç tane sorum var da.
 

Technopat Haberler

Geri
Yukarı