Çö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

Kilopat
Katılım
16 Temmuz 2018
Mesajlar
148
Çö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;
}
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.
 
Uyarı! Bu konu 6 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Bu konuyu görüntüleyen kullanıcılar

Technopat Haberler

Geri
Yukarı