C++ dizi içine kayıt etme

AliYağcı

Kilopat
Katılım
31 Mart 2018
Mesajlar
479
Çözümler
2
Daha fazla  
Cinsiyet
Erkek
Merhabalar, bir hocamız ödev olarak C++ da öğrencilerin ad, soyad, vize ve final notlarını girdi olarak alıp, ortalamasını ve öğrencinin geçme kalma durumunu dizi içine kayıt eden program yazmamızı istedi. Ben pek C++ bilmiyorum daha çok Python yazıyorum. İnternetten bir kaç ders izleyip az çok fikir sahibi oldum fakat dizi içine kayıt etme olayını tam anlayamadım. Yardımcı olursanız sevinirim.

Ödevin tam hali:

resim_2022-05-07_175004670.png
 
Son düzenleme:
Dizi içine kayıttan kastı, run-time süresince kayıtlı olmasıdır tahminen. int array[]; cin >> array[i]; i++; şeklinde yaparsan her girilen değerden sonra array[]'in üzerine ekleme yaparak gider. Kullanıcıdan alma kısmı, cin >> array[i] ile oluyor. Bunun için std::cin de yazabilirsin yada #include altına using namespace std; ekleyerek de yapabilirsin.
Yazarken [i] yazdığımı eğik yazma olarak algıladığı için düzenlemek zorunda kaldım.
 
Merhaba, bir hocamız ödev olarak C++ da öğrencilerin ad, soyad, vize ve final notlarını girdi olarak alıp, ortalamasını ve öğrencinin geçme kalma durumunu dizi içine kayıt eden program yazmamızı istedi. Ben pek C++ bilmiyorum daha çok Python yazıyorum. İnternetten birkaç ders izleyip az çok fikir sahibi oldum fakat dizi içine kayıt etme olayını tam anlayamadım. Yardımcı olursanız sevinirim.

Ödevin tam hali:

Eki Görüntüle 1381088

Eğer kodları yazdıysan burada da paylaşabilir misin?
 
Eğer kodları yazdıysan burada da paylaşabilir misin?

Yazdım fakat hata veriyor, sanırım yanlış yaptım pek bilmediğim için C++'ı.

Dizi içine kayıttan kastı, run-time süresince kayıtlı olmasıdır tahminen. int array[]; cin >> array[i]; i++; şeklinde yaparsan her girilen değerden sonra array[]'in üzerine ekleme yaparak gider. Kullanıcıdan alma kısmı, cin >> array[i] ile oluyor. Bunun için std: Cin de yazabilirsin ya da #include altına using namespace std; ekleyerek de yapabilirsin.
Yazarken [i] yazdığımı eğik yazma olarak algıladığı için düzenlemek zorunda kaldım.

Hocam yardımcı olabilir misiniz? 2 gündür uğraşıyorum fakat sürekli hata alıyorum, bu hafta son ödev teslimi. @TheAny
[CODE lang="cpp" title="odev"]#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int ortalama1(int param1, int param2){
int ort=param1*0.3+param2*0.7;
return ort;
}
int main()
{
int vize1[5];
int finalj[5];
char durum[5];
int vize, final;
for(int i=0;i<5;i++){
setlocale(LC_ALL,"Turkish");
cout<<"Vize notunu giriniz:";
cin>>vize;
cout<<"final notunu giriniz:";
cin>>final;
vize1=stoi(vize);
finalj=stoi(final);

if(ortalama1(vize1,finalj)>50){
durum='G';
printf("Geçti.");
}else{
durum='K';
printf("Kaldı.");

}
}
}[/CODE]
 
Son düzenleme:
Birincisi neden stoi() kullandın? İlk hata bu. stoi kullanmışsın ama dahil bile etmemişsin. Ek olarak bu fonksiyonun burada işi ne? Hangi stringi integer'a dönüştürmeye çalışıyorsun? Zaten vize ve final değişkenlerin integer. İkincisi kaç kişinin girileceğini daha compileda belirlemişsin. Sınıf 5 değil 10 kişi olursa? Diziyi farklı bir fonksiyonun içinde oluşturup, dizinin boyutunu ayarlayabilirsin mesela.

Örneğin;
[CODE lang="cpp" title="Kod"]#include <iostream>

using namespace std;

inline int ortalama(int v, int f) {
return v * 0.3 + f * 0.7;
}

void sinif(int n) {
int v[n], f[n];
char durum[n];

for(int i = 0; i < n; i++) {
cout << "Lütfen vize notunu giriniz: ";
cin >> v;
cout << "Lütfen final notunu giriniz: ";
cin >> f;

if(ortalama(v, f)) {
cout << "Geçti." << endl;
durum = 'G';
}
else {
cout << "Kaldı." << endl;
durum = 'K';
}
}
}

int main() {
setlocale(LC_ALL,"Turkish");
int n;
cout << "Lütfen öğrenci sayısını giriniz: ";
cin >> n;
sinif(n);
return 1;
}[/CODE]

Attığım kodda sınıf diye bir başka fonksiyon oluşturup, sınıfın içerisine tanımladım diziyi. Böylece ana fonksiyon içerisinde dizinin büyüklüğünü belirleyebiliyorum. Bu tarz detaylara da dikkat etmen gerek. Ek olarak ortalama için salt bir fonksiyon oluşturmak yerine inline fonksiyon oluşturabilirsin. Ne olduğunu bilmiyorsan google'dan bir araştır derim.
 
Birincisi neden stoi() kullandın? İlk hata bu. stoi kullanmışsın ama dahil bile etmemişsin. Ek olarak bu fonksiyonun burada işi ne? Hangi stringi integer'a dönüştürmeye çalışıyorsun? Zaten vize ve final değişkenlerin integer. İkincisi kaç kişinin girileceğini daha compileda belirlemişsin. Sınıf 5 değil 10 kişi olursa? Diziyi farklı bir fonksiyonun içinde oluşturup, dizinin boyutunu ayarlayabilirsin mesela.

Örneğin;
[CODE lang="cpp" title="Kod"]#include <iostream>

using namespace std;

inline int ortalama(int v, int f) {
return v * 0.3 + f * 0.7;
}

void sinif(int n) {
int v[n], f[n];
char durum[n];

for(int i = 0; i < n; i++) {
cout << "Lütfen vize notunu giriniz: ";
cin >> v;
cout << "Lütfen final notunu giriniz: ";
cin >> f;

if(ortalama(v, f)) {
cout << "Geçti." << endl;
durum = 'G';
}
else {
cout << "Kaldı." << endl;
durum = 'K';
}
}
}

int main() {
setlocale(LC_ALL,"Turkish");
int n;
cout << "Lütfen öğrenci sayısını giriniz: ";
cin >> n;
sinif(n);
return 1;
}[/CODE]

Attığım kodda sınıf diye bir başka fonksiyon oluşturup, sınıfın içerisine tanımladım diziyi. Böylece ana fonksiyon içerisinde dizinin büyüklüğünü belirleyebiliyorum. Bu tarz detaylara da dikkat etmen gerek. Ek olarak ortalama için salt bir fonksiyon oluşturmak yerine inline fonksiyon oluşturabilirsin. Ne olduğunu bilmiyorsan google'dan bir araştır derim.

Hocam kodu başlatmayı denediğimde şu hataları veriyor.
1652218658793.png

Kopyala tuşu bozuk kopyalamış hocam kusura bakmayın şimdi çalıştı kod çok teşekkürler.
Birincisi neden stoi() kullandın? İlk hata bu. stoi kullanmışsın ama dahil bile etmemişsin. Ek olarak bu fonksiyonun burada işi ne? Hangi stringi integer'a dönüştürmeye çalışıyorsun? Zaten vize ve final değişkenlerin integer. İkincisi kaç kişinin girileceğini daha compileda belirlemişsin. Sınıf 5 değil 10 kişi olursa? Diziyi farklı bir fonksiyonun içinde oluşturup, dizinin boyutunu ayarlayabilirsin mesela.

Örneğin;
[CODE lang="cpp" title="Kod"]#include <iostream>

using namespace std;

inline int ortalama(int v, int f) {
return v * 0.3 + f * 0.7;
}

void sinif(int n) {
int v[n], f[n];
char durum[n];

for(int i = 0; i < n; i++) {
cout << "Lütfen vize notunu giriniz: ";
cin >> v;
cout << "Lütfen final notunu giriniz: ";
cin >> f;

if(ortalama(v, f)) {
cout << "Geçti." << endl;
durum = 'G';
}
else {
cout << "Kaldı." << endl;
durum = 'K';
}
}
}

int main() {
setlocale(LC_ALL,"Turkish");
int n;
cout << "Lütfen öğrenci sayısını giriniz: ";
cin >> n;
sinif(n);
return 1;
}[/CODE]

Attığım kodda sınıf diye bir başka fonksiyon oluşturup, sınıfın içerisine tanımladım diziyi. Böylece ana fonksiyon içerisinde dizinin büyüklüğünü belirleyebiliyorum. Bu tarz detaylara da dikkat etmen gerek. Ek olarak ortalama için salt bir fonksiyon oluşturmak yerine inline fonksiyon oluşturabilirsin. Ne olduğunu bilmiyorsan google'dan bir araştır derim.

Hocam notu ne olursa olsun geçti oluyor kod, ortalama 50'den küçükse kalmasını nasıl sağlayabilirim? Bir de ortalamayı da ekrana yazdırmak istiyorum. Cout komutuyla oluyordu fakat denediğimde hata aldım.
 
Son düzenleme:
Hocam notu ne olursa olsun geçti oluyor kod, ortalama 50'den küçükse kalmasını nasıl sağlayabilirim?
Bir yeri eksik yazmışım. Burayı böyle düzeltince, düzelir.
C++:
if(ortalama(v[i], f[i]) > 50) {
            cout << "Geçti." << endl;
            durum[i] = 'G';
        }
        else {
            cout << "Kaldı." << endl;
            durum[i] = 'K';
        }
 

Geri
Yukarı