C++ Öğrenci Vize-Final Not Ortalaması Hesaplama Ödev

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Onaylı Üye
Katılım
6 Nis 2020
Mesajlar
73
Tepki puanı
3
Ödüller
2
6 HİZMET YILI
Elektrik-Elektronik Mühendisliği öğrencisiyim. Algoritma ve Programlamaya Giriş dersi alıyorum ama dersi Corona muhabbetinden dolayı işlemediğimiz için hocanın vermiş olduğu ödevleri yapamıyorum. Bana bu konuda yardımcı olabilecek bir arkadaş varsa eğer dilediği bir konuda bende ona yardımcı olmak isterim. Şimdiden teşekkür ediyorum.
4.png
4-2.png
 
Moderatörün son düzenlenenleri:
Słyszę, słyszę letni powiew.
Kurucu
Katılım
20 Haz 2015
Mesajlar
7,666
Çözümler
136
Tepki puanı
20,724
Ödüller
25
10 HİZMET YILI
Sınıf ortalaması öğrencilerin vize-final ortalaması üzerinden hesaplanılacak değil mi ?
 
Onaylı Üye
Katılım
6 Nis 2020
Mesajlar
73
Tepki puanı
3
Ödüller
2
6 HİZMET YILI
Evet öyle hesaplanacak. Finali 50 olmayan ortalama tutsa bile geçemeyecek. Vize sınavının %40'ı Final Sınavının %60'ı alınıp sınıf ortalaması hesaplanacak.
 
Słyszę, słyszę letni powiew.
Kurucu
Katılım
20 Haz 2015
Mesajlar
7,666
Çözümler
136
Tepki puanı
20,724
Ödüller
25
10 HİZMET YILI
Dev++ da denemedim, yarım saat işim var sonra deneyeceğim. Ama visual studio ile sıkıntısız çalışıyor :)
Hocanın verdiği isimleri ve değerleri kullandım, ortalamayı vb doğru hesaplamış mı diye debug etmekle uğraşmak istemedim. Buyrun:
C++:
#include <iostream>
#include <string>
using namespace std;
struct veriler
{
    string name;
    string surname;
    double vize_grade;
    double final_grade;
    double ortalama;
    string status;

}ogrenci[255];

double sinif_ortalamasi = 0;
int main()
{

    for (int i = 1; i <6; i++)
    {
   
        printf("%d. siradaki ogrenci bilgilerini giriniz: \n",i);
        cout << "Isim : ";
        getline(cin, ogrenci[i].name);
        cout << "Soyisim : ";
        getline(cin, ogrenci[i].surname);
        cout << "Vize notu : ";
        cin >> ogrenci[i].vize_grade;
        cout << "Final notu : ";
        cin >> ogrenci[i].final_grade;
        cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); //getline bug fix xd

        ogrenci[i].ortalama = ((ogrenci[i].vize_grade / 100) * 40) + ((ogrenci[i].final_grade / 100) * 60);
   
        cout << &endl;
    }

   
    for (int  i = 1; i < 6; i++) //sinif ortalaması hesaplaması
    {
        sinif_ortalamasi = sinif_ortalamasi + ogrenci[i].ortalama;
    }
    sinif_ortalamasi = sinif_ortalamasi / 5;

    for (int i = 1; i < 6; i++) //ögrenciler geçti mi kaldı mı ?
    {
        if (ogrenci[i].final_grade >= 50.0f && (ogrenci[i].ortalama > sinif_ortalamasi))
            ogrenci[i].status = "GECTI";
        else
            ogrenci[i].status = "KALDI";

       
    }

    printf("Sinif ortalamasi = %f, buna gore herbir ogrencinin gecti-kaldi durumu asagida verilmektedir. \n",sinif_ortalamasi);
   
    for (int i = 1; i < 6; i++)
    {
        printf("%s %s : Ortalamasi = %f, Durumu = %s \n", ogrenci[i].name.c_str(), ogrenci[i].surname.c_str(), ogrenci[i].ortalama, ogrenci[i].status.c_str());
    }
    system("pause");
}
1592838172496.png


Edit: @fazilcan muhtemelen dev ++ da şu satırda hata alacağından derleyemeyeceksin:
Kod:
 cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); //getline bug fix xd

Eğer bu satırda hata veriyorsa kodların en üstüne gidip şunu yazarsan problem çözülür:
Kod:
#include <limits>
 
Son düzenleme:
Onaylı Üye
Katılım
6 Nis 2020
Mesajlar
73
Tepki puanı
3
Ödüller
2
6 HİZMET YILI
Böyle bir hata aldım :)

İsim-Soy isim-Vize-Final notlarını benim kendim yazabileceğim şekilde olması gerekiyordu sanırım ama bir sorun yaşanacağını düşünmüyorum. Çok teşekkür ederim
Adsız.png
 
Onaylı Üye
Katılım
11 Mar 2018
Mesajlar
111
Çözümler
2
Tepki puanı
8
Ödüller
8
8 HİZMET YILI
Dev++ da denemedim, yarım saat işim var sonra deneyeceğim. Ama visual studio ile sıkıntısız çalışıyor :)
Hocanın verdiği isimleri ve değerleri kullandım, ortalamayı vb doğru hesaplamış mı diye debug etmekle uğraşmak istemedim. Buyrun:
C++:
#include <iostream>
#include <string>
using namespace std;
struct veriler
{
    string name;
    string surname;
    double vize_grade;
    double final_grade;
    double ortalama;
    string status;

}ogrenci[255];

double sinif_ortalamasi = 0;
int main()
{

    for (int i = 1; i <6; i++)
    {
  
        printf("%d. siradaki ogrenci bilgilerini giriniz: \n",i);
        cout << "Isim : ";
        getline(cin, ogrenci[i].name);
        cout << "Soyisim : ";
        getline(cin, ogrenci[i].surname);
        cout << "Vize notu : ";
        cin >> ogrenci[i].vize_grade;
        cout << "Final notu : ";
        cin >> ogrenci[i].final_grade;
        cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); //getline bug fix xd

        ogrenci[i].ortalama = ((ogrenci[i].vize_grade / 100) * 40) + ((ogrenci[i].final_grade / 100) * 60);
  
        cout << &endl;
    }

  
    for (int  i = 1; i < 6; i++) //sinif ortalaması hesaplaması
    {
        sinif_ortalamasi = sinif_ortalamasi + ogrenci[i].ortalama;
    }
    sinif_ortalamasi = sinif_ortalamasi / 5;

    for (int i = 1; i < 6; i++) //ögrenciler geçti mi kaldı mı ?
    {
        if (ogrenci[i].final_grade >= 50.0f && (ogrenci[i].ortalama > sinif_ortalamasi))
            ogrenci[i].status = "GECTI";
        else
            ogrenci[i].status = "KALDI";

      
    }

    printf("Sinif ortalamasi = %f, buna gore herbir ogrencinin gecti-kaldi durumu asagida verilmektedir. \n",sinif_ortalamasi);
  
    for (int i = 1; i < 6; i++)
    {
        printf("%s %s : Ortalamasi = %f, Durumu = %s \n", ogrenci[i].name.c_str(), ogrenci[i].surname.c_str(), ogrenci[i].ortalama, ogrenci[i].status.c_str());
    }
    system("pause");
}
Ekli dosyayı görüntüle 46787

Edit: @fazilcan muhtemelen dev ++ da şu satırda hata alacağından derleyemeyeceksin:
Kod:
 cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); //getline bug fix xd

Eğer bu satırda hata veriyorsa kodların en üstüne gidip şunu yazarsan problem çözülür:
Kod:
#include <limits>
Dev++ da denemedim, yarım saat işim var sonra deneyeceğim. Ama visual studio ile sıkıntısız çalışıyor :)
Hocanın verdiği isimleri ve değerleri kullandım, ortalamayı vb doğru hesaplamış mı diye debug etmekle uğraşmak istemedim. Buyrun:
C++:
#include <iostream>
#include <string>
using namespace std;
struct veriler
{
    string name;
    string surname;
    double vize_grade;
    double final_grade;
    double ortalama;
    string status;

}ogrenci[255];

double sinif_ortalamasi = 0;
int main()
{

    for (int i = 1; i <6; i++)
    {
  
        printf("%d. siradaki ogrenci bilgilerini giriniz: \n",i);
        cout << "Isim : ";
        getline(cin, ogrenci[i].name);
        cout << "Soyisim : ";
        getline(cin, ogrenci[i].surname);
        cout << "Vize notu : ";
        cin >> ogrenci[i].vize_grade;
        cout << "Final notu : ";
        cin >> ogrenci[i].final_grade;
        cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); //getline bug fix xd

        ogrenci[i].ortalama = ((ogrenci[i].vize_grade / 100) * 40) + ((ogrenci[i].final_grade / 100) * 60);
  
        cout << &endl;
    }

  
    for (int  i = 1; i < 6; i++) //sinif ortalaması hesaplaması
    {
        sinif_ortalamasi = sinif_ortalamasi + ogrenci[i].ortalama;
    }
    sinif_ortalamasi = sinif_ortalamasi / 5;

    for (int i = 1; i < 6; i++) //ögrenciler geçti mi kaldı mı ?
    {
        if (ogrenci[i].final_grade >= 50.0f && (ogrenci[i].ortalama > sinif_ortalamasi))
            ogrenci[i].status = "GECTI";
        else
            ogrenci[i].status = "KALDI";

      
    }

    printf("Sinif ortalamasi = %f, buna gore herbir ogrencinin gecti-kaldi durumu asagida verilmektedir. \n",sinif_ortalamasi);
  
    for (int i = 1; i < 6; i++)
    {
        printf("%s %s : Ortalamasi = %f, Durumu = %s \n", ogrenci[i].name.c_str(), ogrenci[i].surname.c_str(), ogrenci[i].ortalama, ogrenci[i].status.c_str());
    }
    system("pause");
}
Ekli dosyayı görüntüle 46787

Edit: @fazilcan muhtemelen dev ++ da şu satırda hata alacağından derleyemeyeceksin:
Kod:
 cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); //getline bug fix xd

Eğer bu satırda hata veriyorsa kodların en üstüne gidip şunu yazarsan problem çözülür:
Kod:
#include <limits>


Dev++ da denemedim, yarım saat işim var sonra deneyeceğim. Ama visual studio ile sıkıntısız çalışıyor :)
Hocanın verdiği isimleri ve değerleri kullandım, ortalamayı vb doğru hesaplamış mı diye debug etmekle uğraşmak istemedim. Buyrun:
C++:
#include <iostream>
#include <string>
using namespace std;
struct veriler
{
    string name;
    string surname;
    double vize_grade;
    double final_grade;
    double ortalama;
    string status;

}ogrenci[255];

double sinif_ortalamasi = 0;
int main()
{

    for (int i = 1; i <6; i++)
    {
  
        printf("%d. siradaki ogrenci bilgilerini giriniz: \n",i);
        cout << "Isim : ";
        getline(cin, ogrenci[i].name);
        cout << "Soyisim : ";
        getline(cin, ogrenci[i].surname);
        cout << "Vize notu : ";
        cin >> ogrenci[i].vize_grade;
        cout << "Final notu : ";
        cin >> ogrenci[i].final_grade;
        cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); //getline bug fix xd

        ogrenci[i].ortalama = ((ogrenci[i].vize_grade / 100) * 40) + ((ogrenci[i].final_grade / 100) * 60);
  
        cout << &endl;
    }

  
    for (int  i = 1; i < 6; i++) //sinif ortalaması hesaplaması
    {
        sinif_ortalamasi = sinif_ortalamasi + ogrenci[i].ortalama;
    }
    sinif_ortalamasi = sinif_ortalamasi / 5;

    for (int i = 1; i < 6; i++) //ögrenciler geçti mi kaldı mı ?
    {
        if (ogrenci[i].final_grade >= 50.0f && (ogrenci[i].ortalama > sinif_ortalamasi))
            ogrenci[i].status = "GECTI";
        else
            ogrenci[i].status = "KALDI";

      
    }

    printf("Sinif ortalamasi = %f, buna gore herbir ogrencinin gecti-kaldi durumu asagida verilmektedir. \n",sinif_ortalamasi);
  
    for (int i = 1; i < 6; i++)
    {
        printf("%s %s : Ortalamasi = %f, Durumu = %s \n", ogrenci[i].name.c_str(), ogrenci[i].surname.c_str(), ogrenci[i].ortalama, ogrenci[i].status.c_str());
    }
    system("pause");
}
Ekli dosyayı görüntüle 46787

Edit: @fazilcan muhtemelen dev ++ da şu satırda hata alacağından derleyemeyeceksin:
Kod:
 cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); //getline bug fix xd

Eğer bu satırda hata veriyorsa kodların en üstüne gidip şunu yazarsan problem çözülür:
Kod:
#include <limits>
Konuşma başlattan özelden atmayı denedim ama sana atılmıyor, o yüzden buradan yazsam sıkıntı olmaz herhalde.

printf("%d. siradaki ogrenci bilgilerini giriniz: \n",i);
cout << "Isim : ";
getline(cin, ogrenci.name);
cout << "Soyisim : ";
getline(cin, ogrenci.surname);
cout << "Vize notu : ";
cin >> ogrenci.vize_grade;
cout << "Final notu : ";
cin >> ogrenci.final_grade;
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); //getline bug fix xd

cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); //getline bug fix xd Bu satır anladım kadarıyla her bir öğrenci için ayrı yazmanı engelliyor, bunu nasıl yapıyor söyler misin ?

Post automatically merged:

Böyle bir hata aldım :)

İsim-Soy isim-Vize-Final notlarını benim kendim yazabileceğim şekilde olması gerekiyordu sanırım ama bir sorun yaşanacağını düşünmüyorum. Çok teşekkür ederim
Ekli dosyayı görüntüle 46788
İsim-Soy isim-Vize-Final notlarını benim kendim yazabileceğim şekilde olması gerekiyordu zaten öyle oluyor kanka.
Hata çözümünü zaten söylemiş görmemişsin sanırım
#include <limits>
başa ekle olacak.
 
Słyszę, słyszę letni powiew.
Kurucu
Katılım
20 Haz 2015
Mesajlar
7,666
Çözümler
136
Tepki puanı
20,724
Ödüller
25
10 HİZMET YILI
Konuşma başlattan özelden atmayı denedim ama sana atılmıyor, o yüzden buradan yazsam sıkıntı olmaz herhalde.

printf("%d. siradaki ogrenci bilgilerini giriniz: \n",i);
cout << "Isim : ";
getline(cin, ogrenci.name);
cout << "Soyisim : ";
getline(cin, ogrenci.surname);
cout << "Vize notu : ";
cin >> ogrenci.vize_grade;
cout << "Final notu : ";
cin >> ogrenci.final_grade;
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); //getline bug fix xd

cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); //getline bug fix xd Bu satır anladım kadarıyla her bir öğrenci için ayrı yazmanı engelliyor, bunu nasıl yapıyor söyler misin ?

Post automatically merged:


İsim-Soy isim-Vize-Final notlarını benim kendim yazabileceğim şekilde olması gerekiyordu zaten öyle oluyor kanka.
Hata çözümünü zaten söylemiş görmemişsin sanırım
#include <limits>
başa ekle olacak.

Merhabalar, cin.ignore kodunun fonksiyonu her öğrenci için ayrı yazmanı engelliyor demişsin, tam olarak ne demek istediğini anlamadım.
Detaylı bilgi için:
Bağlantıları görmek için lütfen Giriş Yap


Ek olarak konuyu kilitliyorum, arkadaş derlemiş sorunsuz çalışıyormuş.
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst