İçeriğe geç
ShiftDelete.Net
Haber ara/ SDN'ye SorGiriş
Haber Akışı SDNTV İnceleme Forum Yapay Zeka Akıllı Telefon Elektrikli Otomobil Oyun ShiftDelete.Net Global Teknoloji Haberleri Mobil Otomobil Donanım Savunma Bilim Sosyal Medya İnternet Giyilebilir Teknoloji Rehber Ürünler Son dakika Yazarlar
  1. Ana sayfa
  2. Topluluk
  3. Programlama
  4. Programlama Dilleri
Programlama Dilleri

C++ Programlama Ödevi

DAIMONAS30.12.201512 cevap5.319 görüntüleme
2015'den beri6 mesaj
#1
Merhaba Arkadaşlar,

Final yerine geçecek bi ödevimiz var.Yardımlarınızı bekliyorum.

Ödev:

* 5 x 5 lik bir dizimiz olacak
* Kullanıcıdan en fazla 5 harflik bir kelime istenecek.
- Eğer kelime 5 harften fazlaysa tekrar istenecek.
* Eğer kelime dizi içinde yoksa böyle bir kelime dizide bulunmamaktadır yazacak.
- eğer kelime dizi içinde varsa konumu bulunacak.Örneğin: AK kelimesi girildi bunun dizi içindeki konumu [1,0],[5,4] falan gibi.

Yardımlarınız için şimdiden teşekkürler.
Cevaplar
2012'den beri173 mesaj
#2
Maddelerden hangilerini yaptın ?
DAIMONAS Konuyu açan
2015'den beri6 mesaj
#3
Dizi tanımlama,kullanıcıdan kelimeyi aldım ve boyutunu sorguladım ve ona göre if kullandım ama kullanıcıdan alınan kelime ile dizinin karakterlerini sorgulayamadım


2012'den beri173 mesaj
#4
Selamlar,

Anlattığın kadarıyla olan kısmını gördüm. Buraya kadar gelmiş olman güzel birşey.
Takıldığın kısımlar ile ilgili aşağıdaki gibi bir çalışma yaptım. Yeni bir proje oluşturup aşağıdaki kodu yapıştırıp deneyebilirsin.
"KELİMELER" dizisi içindeli karakterler büyük olduğu için aramada büyük harfle olmak zorunda. "a" karakterini girersen bir kayıt bulamaz.
Eğer burada küçük a karakterini de dikkate almasını istersen o kısmını sana bırakıyorum.

#include <iostream>
#include <stdio.h>
#include <string.h>

using namespace std;
int main()
{
    char kelimeler[5][6] = { "DNBDC", "AAMAC", "OGREI", "VOSJK", "BRTEA" };
    string kelime;
    
    TEKRAR:
    cout << "Arama yapmak istediginiz kelimeyi giriniz \n";
    cin >> kelime;
    
    if(kelime.length() > 5)
    {
        cout << "Girilen kelime en fazla 5 karakter olmalidir. Tekrar deneyiniz ! \n";
        goto TEKRAR;
    }
    else
    {
        int boyut = sizeof(kelimeler) / sizeof(*kelimeler);
        int bulundu = 0;
        
        for(int i = 0; i < boyut; i++)
        {
            string deger = kelimeler[i];
            size_t index = deger.find(kelime);
            
            if(index != std::string::npos)
            { 
                bulundu = 1;
                cout << "Kelime " << deger << ", dizi sirasi: " << i << ", karakter sirasi: " << index << "\n";
                cout << "Kelime " << deger << ", Konumu: [" << i << "," << index << "]" << "\n";
            }
        }            
        
        if(bulundu == 0)
        {
            cout << "KAYIT BULUNAMADI !";
        }
    }

    return 0;
}
DAIMONAS Konuyu açan
2015'den beri6 mesaj
#5
Merhaba iyi günler :) öncelikle uğraştığınız için teşekkür ederim.
Fakat benim bi sorum olacak size ben harf harf karşılaştırma yapmak istiyorum yani şöyle
diyelim dizi[j] == girilen kelimenin ilk harfi ve i j arttıkça girilen kelimenin diğer harfleriyle de karşılaştırma yapması çünkü diyelim girilen kelime ADNAN ve A dizi içinde [0,1] konumunda D dizi içinde [1,5] N harfi diyelim [2,4] böyle böyle konum bulması isteniyor bizden direk kelimenin başlangıç konumu değilde kelimenin içindeki harflerin konumu
[URL="http://forum.shiftdelete.net/usertag.php?do=list&action=hash&hash=include"]#include[/URL]  <iostream>
int main(int argc, char** argv) {
    
    char dizi [6][6]=
    {
    "XNBDC","AAMAC","OGREI","VOSJK","BRTEA"
    };
    int i,j;
    
    for(i=0;i<5;i++)
    {
    for(j=0;j<2;j++)
    {
    if(dizi[i][j]=='A')
    {
    if(dizi[i][j+1]=='M' && dizi[i][j+2]=='A' && dizi[i][j+3]=='C')
    {
        printf("AMAC kelimesinin konumu [%d,%d][%d,%d][%d,%d][%d,%d]",i,j,i,j+1,i,j+2,i,j+3);
    }
    }    
    }
    }
    
    return 0;
[FONT=Verdana]}
[/FONT]


Bu örnekte aranacak kelime belli olduğundan harfi yazıp karşılaştırma yapabiliyoruz fakat biz kullanıcının kaç harfli kelime gireceğini,kelimenin dizi içindeki konumu(çaprazda mı,yukardan aşağı mı,sağdan sola mı vs vs.) bilmiyoruz benimde aklımı bu nokta karıştırıyor.
2012'den beri173 mesaj
#6
Selamlar,

Benim sana gönderdiğim örnek senin bahsettiğin gibi çalışıyor.
Örnek olarak "SİVAS" ve "BURSA" kelimelerinin içerisinde harf ya da kelime arayalım.
"S" harfini girdiğin zaman dizinin 1. elemanı için [0,1], 2. elemanı için [1,4] sonucunu verecektir.
Yani elemanların sadece 0. indexlerinden değil, 0. indexten itibaren kelime içerisindeki tüm char indexlerini taramaktadır.
DAIMONAS Konuyu açan
2015'den beri6 mesaj
#7
Merhaba,

Sizin gönderdiğiniz örnekte 'AMAC' kelimesini aratıyorum buluyor fakat 'AMRE' yazınca bulmuyor.Ben dizi içinde o kelimeyi oluşturan harfler nerdeyse onu bulmak istiyorum.
2012'den beri173 mesaj
#8
Selamlar,

Aşağıdaki gibi revize ettim. Kelime içerisindeki aynı karakterler için hep aynı adresi gösterecektir. Burada benzer harflerin adresi sadece bir kere dikkate almasını istiyorsan, o kısmı sana bırakıyorum.

#include <iostream>
#include <stdio.h>
#include <string.h>

using namespace std;
int main()
{
    char kelimeler[5][6] = { "DNBDC", "AAMAC", "OGREI", "VOSJK", "BRTEA" };
    string kelime;
    
    TEKRAR:
    cout << "Arama yapmak istediginiz kelimeyi giriniz \n";
    cin >> kelime;
    
    if(kelime.length() > 5)
    {
        cout << "Girilen kelime en fazla 5 karakter olmalidir. Tekrar deneyiniz ! \n";
        goto TEKRAR;
    }
    else
    {
        int boyut = sizeof(kelimeler) / sizeof(*kelimeler);
        int bulundu = 0;
        int row = 0, column = 0;

        for(int j = 0; j < kelime.length(); j++)
        {
            char kelimeChar = kelime[j];
            bulundu = 0;
            
            for(int k = 0; k < boyut; k++)
            {
                string deger = kelimeler[k];
                row = k;
                
                for(int x = 0; x < deger.length(); x++)
                {
                    char degerChar = deger[x];
                    
                    if(degerChar == kelimeChar)
                    {
                        column = x;
                        bulundu = 1;
                    }
                    
                    if(bulundu == 1)
                        break;
                }
                
                if(bulundu == 1)
                {
                    cout << kelimeChar << " karakteri adresi: " << "[" << row << "," << column << "]" << "\n";
                    break;
                }
            }
        }

        /*        
        for(int i = 0; i < boyut; i++)
        {
            string deger = kelimeler[i];
            size_t index = deger.find(kelime);
            
            if(index != std::string::npos)
            { 
                bulundu = 1;
                cout << "Kelime " << deger << ", dizi sirasi: " << i << ", karakter sirasi: " << index << "\n";
                cout << "Kelime " << deger << ", Konumu: [" << i << "," << index << "]" << "\n";
            }
        }            
        */
        
        if(bulundu == 0)
        {
            cout << "KAYIT BULUNAMADI !";
        }
    }

    return 0;
}
DAIMONAS Konuyu açan
2015'den beri6 mesaj
#9
Çok teşekkür ederim revize ettiğiniz şekli tam istediğim şekilde arama yapıyor.Şimdi sizin yazdığınız kodları anlayarak kendim yazmayı denicem.Yardımlarınız için tekrar tekrar çok teşekkür ederim.Vaktinizi çaldım bundan dolayı da kusura bakmayın :)
2012'den beri173 mesaj
#10
Estağfurullah, yardımcı olabildiysem ne mutlu.

Başarılar dilerim.
DAIMONAS Konuyu açan
2015'den beri6 mesaj
#11
Çok yardımcı oldunuz :)

Bende iyi günler dilerim.
2016'den beri1 mesaj
#12
bi konuda banada yardımcı olabilir misiniz ?
2012'den beri173 mesaj
#13
Gullsum dedi: ↑
bi konuda banada yardımcı olabilir misiniz ?
Konu nedir ? Yardımcı olmaya çalışalım.

Cevabını yaz

Cevap yazmak için giriş yap ya da üye ol. Eski forum kullanıcı adın ve parolanla girebilirsin.