Çözüldü Fonksiyonla nesneler üretmek

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

heisenrut

Decapat
Katılım
3 Mayıs 2021
Mesajlar
22
Makaleler
1
Yemek diye bir sınıftan fonksiyonla nesneler üretmem gerekiyor ürettiğim nesneleri de tekrar mainde göstermek istiyorum bunu nasıl yapacağım?
İlk 1.code gibi düşündüm bunda ise [Error] 'yemekler' was not declared in this scope hatası veriyor. Sonra 2. code ki gibi fonksiyonu pointırla oluşturup çağırmayı beceremedim.
1.code
Kod:
#include <iostream>

using namespace std;
using std:: string;
class yemek.
{
 string anayemek;
 string yaninda1;
 stirng yaninda2;
 int fiyat;
}
int olustur(int x ,int y){
yemek*yemekler= new yemek[15,20];

cout<<"\n eklediginiz anayemeyi giriniz \n";cin>>yemekler[x,y].anayemek;
cout<<yemekler[x,y].anayemek;cout<<" yaninda hangi yemegi eklemek istediginizi yazin => ";cin>>yemekler[x,y].yaninda1;
cout<<yemekler[x,y].anayemek;cout<<" yaninda hangi garneturu eklemek istediginizi yazin => ";cin>>yemekler[x,y].yaninda2;
cout<<yemekler[x,y].anayemek;cout<<"fiyatini giriniz => ";cin>>yemekler[x,y].fiyat;

return ;
}
int main(int argc, char** argv) {

olustur(0,0);

cout<<yemekler[0,0].anayemek;
return 0 ;
}

2.code
Kod:
#include <iostream>

using namespace std;
using std:: string;
class yemek.
{
 string anayemek;
 string yaninda1;
 stirng yaninda2;
 int fiyat;
}
int olustur(int*yemekler){

cout<<"\n eklediginiz anayemeyi giriniz \n";cin>>yemekler[x,y].anayemek;
cout<<yemekler[x,y].anayemek;cout<<" yaninda hangi yemegi eklemek istediginizi yazin => ";cin>>yemekler[x,y].yaninda1;
cout<<yemekler[x,y].anayemek;cout<<" yaninda hangi garneturu eklemek istediginizi yazin => ";cin>>yemekler[x,y].yaninda2;
cout<<yemekler[x,y].anayemek;cout<<"fiyatini giriniz => ";cin>>yemekler[x,y].fiyat;

return ;
}
int main(int argc, char** argv) {
yemek*yemekler= new yemek[15,20];
olustur(&yemekler);
 
Son düzenleyen: Moderatör:
Çözüm
[CODE lang="cpp" title="Struct'lı hali"]#include <iostream>
#include <string>
using namespace std;

struct yemek //Class kullanmak yerine bunu kullandım. Class'lı halini yapacağım.
{
string anayemek;
string yaninda1;
string yaninda2;
int fiyat;
};
void olustur(yemek* yemek){ //Yemeğin adresini alarak ona direkt olarak ekleme yapıyoruz fonksiyon içerisinde.

cout<<"\n eklediginiz ana yemegi giriniz \n";cin>>yemek->anayemek;
cout<<yemek->anayemek<<" yaninda hangi yemegi eklemek istediginizi yazin => ";
cin>>yemek->yaninda1;
cout<<yemek->anayemek<<" yaninda hangi garneturu eklemek istediginizi yazin => ";
cin>>yemek->yaninda2;
cout<<yemek->anayemek<<" fiyatini giriniz => ";
cin>>yemek->fiyat;

}
int main(int argc, char** argv) {
yemek yemek_;
olustur(&yemek_); //yemek_ değişkeninin adresini verdim.

cout<<yemek_.anayemek;
return 0 ;
}[/CODE]

[CODE lang="cpp" title="Class'lı hali"]#include <iostream>
#include <string>
using namespace std;

class yemek
{
string anayemek;
string yaninda1;
string yaninda2;
int fiyat;
public:
inline yemek(string &anayemek, string &yaninda1, string &yaninda2, int &fiyat){
this->anayemek = anayemek;
this->yaninda1 = yaninda1;
this->yaninda2 = yaninda2;
this->fiyat = fiyat;
}
inline string anayemek_adi(){return this->anayemek;}
inline string yanindaki_yemek_bilgisi(){return this->yaninda1;}
inline string garnitur_bilgisi(){return this->yaninda2;}
inline int fiyat_bilgisi(){return this->fiyat;}
inline void goster(){std::cout<<"Yemek adi: "<<anayemek<<"\nYemegin yanindaki yemek: "<<yaninda1<<"\nYemegin yanindaki garnitur: "<<yaninda2<<"\nYemek fiyati: "<<fiyat<<"\n";}
};

int main(int argc, char** argv) {
string anayemek_, yaninda1_, yaninda2_;
int fiyat_;
cout<<"\n eklediginiz ana yemegi giriniz \n";cin>>anayemek_;
cout<<anayemek_<<" yaninda hangi yemegi eklemek istediginizi yazin => ";
cin>>yaninda1_;
cout<<anayemek_<<" yaninda hangi garneturu eklemek istediginizi yazin => ";
cin>>yaninda2_;
cout<<anayemek_<<" fiyatini giriniz => ";
cin>>fiyat_;
yemek yemek_(anayemek_,yaninda1_,yaninda2_,fiyat_);
yemek_.goster();
return 0 ;
}[/CODE]
2 boyutlu dizileri yanlış kullanıyorsun.


Ayrıca pointer ile Heap'te oluşturduğun nesnenin public elemanlarına. Operatörüyle değil, -> operatörüyle ulaşmalısın.

Şu anda mobilde olduğum için düzeltemeyeceğim hatalarını.

Hocam ben bu işin içinden yine çıkamadım PC geçtiğinde yardımcı olursan çok sevinirim.
 
[CODE lang="cpp" title="Struct'lı hali"]#include <iostream>
#include <string>
using namespace std;

struct yemek //Class kullanmak yerine bunu kullandım. Class'lı halini yapacağım.
{
string anayemek;
string yaninda1;
string yaninda2;
int fiyat;
};
void olustur(yemek* yemek){ //Yemeğin adresini alarak ona direkt olarak ekleme yapıyoruz fonksiyon içerisinde.

cout<<"\n eklediginiz ana yemegi giriniz \n";cin>>yemek->anayemek;
cout<<yemek->anayemek<<" yaninda hangi yemegi eklemek istediginizi yazin => ";
cin>>yemek->yaninda1;
cout<<yemek->anayemek<<" yaninda hangi garneturu eklemek istediginizi yazin => ";
cin>>yemek->yaninda2;
cout<<yemek->anayemek<<" fiyatini giriniz => ";
cin>>yemek->fiyat;

}
int main(int argc, char** argv) {
yemek yemek_;
olustur(&yemek_); //yemek_ değişkeninin adresini verdim.

cout<<yemek_.anayemek;
return 0 ;
}[/CODE]

[CODE lang="cpp" title="Class'lı hali"]#include <iostream>
#include <string>
using namespace std;

class yemek
{
string anayemek;
string yaninda1;
string yaninda2;
int fiyat;
public:
inline yemek(string &anayemek, string &yaninda1, string &yaninda2, int &fiyat){
this->anayemek = anayemek;
this->yaninda1 = yaninda1;
this->yaninda2 = yaninda2;
this->fiyat = fiyat;
}
inline string anayemek_adi(){return this->anayemek;}
inline string yanindaki_yemek_bilgisi(){return this->yaninda1;}
inline string garnitur_bilgisi(){return this->yaninda2;}
inline int fiyat_bilgisi(){return this->fiyat;}
inline void goster(){std::cout<<"Yemek adi: "<<anayemek<<"\nYemegin yanindaki yemek: "<<yaninda1<<"\nYemegin yanindaki garnitur: "<<yaninda2<<"\nYemek fiyati: "<<fiyat<<"\n";}
};

int main(int argc, char** argv) {
string anayemek_, yaninda1_, yaninda2_;
int fiyat_;
cout<<"\n eklediginiz ana yemegi giriniz \n";cin>>anayemek_;
cout<<anayemek_<<" yaninda hangi yemegi eklemek istediginizi yazin => ";
cin>>yaninda1_;
cout<<anayemek_<<" yaninda hangi garneturu eklemek istediginizi yazin => ";
cin>>yaninda2_;
cout<<anayemek_<<" fiyatini giriniz => ";
cin>>fiyat_;
yemek yemek_(anayemek_,yaninda1_,yaninda2_,fiyat_);
yemek_.goster();
return 0 ;
}[/CODE]
 
Çözüm
Uyarı! Bu konu 5 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.

Technopat Haberler

Yeni konular

Geri
Yukarı