Çözüldü C++ Pointers İsmin Varlığı Bulma

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

bedrhnaliakcy

Hectopat
Katılım
16 Temmuz 2018
Mesajlar
142
Çözümler
1
Daha fazla  
Cinsiyet
Erkek
Meslek
İndie software
Arkadaşlar, bir soru var ve yapamadım. Yardımcı olursanız sevinirim.

IMG_20201212_010618.jpg


Ben mantığını çözdüm ama kodlar hata veriyor. Teşekkürler.

IMG_20201212_010618.jpg
 
Son düzenleyen: Moderatör:
Çözüm
Eğer C usulü stringler ile ders işliyorsanız:
C++:
#include <iostream>
#include <string.h>
int main(){
    char* isim;
    std::cout<<"Isim girin: ";
    std::cin>>isim;
    char** ptr = new char*[10]{"Ahmet","Mehmet","Ali","Veli","Ayse","Fatma","Mahmut","Kenan","Mustafa","Samet"};

    for(int i = 0; i < 10; i++){

        if(!strcmp(ptr[i],isim)){

            std::cout<<"Isim "<<ptr[i]<<", "<<i<<" indexinde bulundu!"<<std::endl;

        }

    }
    delete[] ptr;
    ptr = nullptr;
    return 0;
}
Eğer C++ usulü stringler ile (std::string) ile ders işliyorsanız:
C++:
#include <iostream>
#include <string>
int main(){
    std::string isim;
    std::cout<<"Isim girin: ";
    std::cin>>isim;
    std::string *ptr = new std::string[10]{"Ahmet","Mehmet","Ali","Veli","Ayse","Fatma","Mahmut","Kenan","Mustafa","Samet"};

    for(int i = 0; i < 10; i++){

        if(isim == ptr[i]){

            std::cout<<"Isim "<<ptr[i]<<", "<<i<<" indexinde bulundu!"<<std::endl;

        }

    }
    delete[] ptr;
    ptr = nullptr;
    return 0;
}
Bir 10 adet isim bulunduran array var, bu array listesini bir pointer gösteriyor, pointer'ın değerini bir arttırarak bu array içinde dolanıp eşleşeni bulmanız isteniyor. O kadar karışık değil.
 
Kodlarını paylaşabilirsen sana daha rahat yardımcı oluruz. Önemli olan senin öğrenmen, ödevinin yapılması değil. Bu arada kompleks bir kod değil, bir yere kadar yapabildiğini düşünüyorum.
Zaten bir yere kadar geldim. Şuan elektrik rüzgardan dolayı kesildi. Gelince atacağım. Büyük ihtimalle yarın atarım.
 
Eğer C usulü stringler ile ders işliyorsanız:
C++:
#include <iostream>
#include <string.h>
int main(){
    char* isim;
    std::cout<<"Isim girin: ";
    std::cin>>isim;
    char** ptr = new char*[10]{"Ahmet","Mehmet","Ali","Veli","Ayse","Fatma","Mahmut","Kenan","Mustafa","Samet"};

    for(int i = 0; i < 10; i++){

        if(!strcmp(ptr[i],isim)){

            std::cout<<"Isim "<<ptr[i]<<", "<<i<<" indexinde bulundu!"<<std::endl;

        }

    }
    delete[] ptr;
    ptr = nullptr;
    return 0;
}
Eğer C++ usulü stringler ile (std::string) ile ders işliyorsanız:
C++:
#include <iostream>
#include <string>
int main(){
    std::string isim;
    std::cout<<"Isim girin: ";
    std::cin>>isim;
    std::string *ptr = new std::string[10]{"Ahmet","Mehmet","Ali","Veli","Ayse","Fatma","Mahmut","Kenan","Mustafa","Samet"};

    for(int i = 0; i < 10; i++){

        if(isim == ptr[i]){

            std::cout<<"Isim "<<ptr[i]<<", "<<i<<" indexinde bulundu!"<<std::endl;

        }

    }
    delete[] ptr;
    ptr = nullptr;
    return 0;
}
 
Çözüm
Eğer C usulü stringler ile ders işliyorsanız:
C++:
#include <iostream>
#include <string.h>
int main(){
    char* isim;
    std::cout<<"Isim girin: ";
    std::cin>>isim;
    char** ptr = new char*[10]{"Ahmet","Mehmet","Ali","Veli","Ayse","Fatma","Mahmut","Kenan","Mustafa","Samet"};

    for(int i = 0; i < 10; i++){

        if(!strcmp(ptr[i],isim)){

            std::cout<<"Isim "<<ptr[i]<<", "<<i<<" indexinde bulundu!"<<std::endl;

        }

    }
    delete[] ptr;
    ptr = nullptr;
    return 0;
}
Eğer C++ usulü stringler ile (std::string) ile ders işliyorsanız:
C++:
#include <iostream>
#include <string>
int main(){
    std::string isim;
    std::cout<<"Isim girin: ";
    std::cin>>isim;
    std::string *ptr = new std::string[10]{"Ahmet","Mehmet","Ali","Veli","Ayse","Fatma","Mahmut","Kenan","Mustafa","Samet"};

    for(int i = 0; i < 10; i++){

        if(isim == ptr[i]){

            std::cout<<"Isim "<<ptr[i]<<", "<<i<<" indexinde bulundu!"<<std::endl;

        }

    }
    delete[] ptr;
    ptr = nullptr;
    return 0;
}
Heh işte bende ilk attığınız gibi bir şey yaptım ama değişken tanımlamada hata yapmışım.
Ben direkt 2 adet char tanımlamaya çalıştım. Diziyi tanımlayıp 10 adet isim ataması yaptım. Lakin "char için çok uzun..." hatası verdi. Aslında tanımlamayı doğru yapsaymışım kod işlermiş. Demek ki konuyu tam kavrayamadık. Bol bol örnek yapmamız gerek.
Hepinize saygılarımı sunuyorum efendim. Çok teşekkür ederim. Hayrlı günler dilerim hepinize.
 
Son düzenleme:
Heh işte bende ilk attığınız gibi bir şey yaptım ama değişken tanımlamada hata yapmışım.
Ben direkt 2 adet char tanımlamaya çalıştım. Diziyi tanımlayıp 10 adet isim ataması yaptım. Lakin "char için çok uzun..." hatası verdi. Aslında tanımlamayı doğru yapsaymışım kod işlermiş. Demek ki konuyu tam kavrayamadık. Bol bol örnek yapmamız gerek.
Hepinize saygılarımı sunuyorum efendim. Çok teşekkür ederim. Hayrlı günler dilerim hepinize.
"char" dizisi içine string dizisi yaptınız anladığım kadarıyla ve şunun gibi bir şey oldu:

C++:
char array[] = {"Ali","Veli"};

"char" dizilerine ve "char*" türüne "C usulü string" denmekte. String'in içine string dizisi yaparsanız hata almanız doğal. Benim yaptığım gibi "char**" yapınca "char*" türüne pointer olmuş oluyor, yani "char*" türünün dizisi diyebilirim, aynı işlevi görmekte.
 

Yeni konular

Geri
Yukarı