C++ kodundaki hata nerede?

The chosenone

Hectopat
Katılım
7 Aralık 2020
Mesajlar
99
Daha fazla  
Cinsiyet
Erkek
Kod:
#include <stdio.h>

int main()
{
    int endusuk,macsayisi,basarilipas,basarisizpas;
    int oyuncusayisi =3
    int skor[oyuncusayisi];
 
    for(int i=0;i<oyuncusayisi;itt)
    {
        printf("oyuncu%d\n",i+1);
        printf("macsayisi:");
        scanf("%d,&macsayisi");
        printf("basarilipassayisi:");
        scanf("%d,&basarilipas");
        printf("basarisizpassayisi");
        scanf("%d,&basarisizpas");
        skor[I]=macsayisi*(basarilipas-basarisizpas);
    }
    endusuk=0;
    for(int i=1;i<oyuncusayisi;i++)
    {
        if(skor[I]<skor[endusuk])
        {
            endusuk=i
        }
    }
}
printf("en dusuk puanli oyuncu; %dpuani:%d",endusuk+1,skor[endusuk]);
return 0;[/I][/I]


Bir futbol takımında teknik direktör, üç oyuncu içerisinden bir tanesini kadro dışında bırakmak istiyor.
Her bir oyuncunun oynadığı maç sayısı, isabetli pas sayısı ve hatalı pas sayıları klavyeden girilmektedir.
Yukarıdaki kriterlere göre her oyuncunun puan değerini hesaplayarak en düşük puanlı oyuncuyu kadro dışı bırakan programı yazınız.
Oyuncu Puanı=oynadığı maç sayısılisabetli pas sayısı — hatalı pas sayısı)
Yanlışım nerede acaba?
 
Son düzenleyen: Moderatör:
Tarif ettiğiniz şekilde şöyle olmalı:
Kod:
#include <iostream>

int main() {
int numOfPlayers = 3;
int scores[numOfPlayers];
int gamesPlayed, successfulPasses, unsuccessfulPasses;

for (int i = 0; i < numOfPlayers; i++) {
std::cout << "Enter the number of games played by player " << i + 1 << ": ";
std::cin >> gamesPlayed;
std::cout << "Enter the number of successful passes by player " << i + 1 << ": ";
std::cin >> successfulPasses;
std::cout << "Enter the number of unsuccessful passes by player " << i + 1 << ": ";
std::cin >> unsuccessfulPasses;
scores[i] = gamesPlayed * (successfulPasses - unsuccessfulPasses);
}

int minScoreIndex = 0;
for (int i = 1; i < numOfPlayers; i++) {
if (scores[i] < scores[minScoreIndex]) {
minScoreIndex = i;
}
}

std::cout << "The player with the lowest score is player " << minScoreIndex + 1 << " with a score of " << scores[minScoreIndex] << std::endl;

return 0;
}

Chat GPT tarafından yazıldı.

Ayrıca kendi yazdığınız koddaki hataların düzeltilmiş hali;
Kod:
#include <stdio.h>

int main()
{
    int endusuk,macsayisi,basarilipas,basarisizpas;
    int oyuncusayisi = 3;
    int skor[oyuncusayisi];
 
    for(int i=0; i<oyuncusayisi; i++)
    {
        printf("oyuncu%d\n",i+1);
        printf("macsayisi:");
        scanf("%d", &macsayisi);
        printf("basarilipassayisi:");
        scanf("%d", &basarilipas);
        printf("basarisizpassayisi:");
        scanf("%d", &basarisizpas);
        skor[i]=macsayisi*(basarilipas-basarisizpas);
    }
    endusuk=0;
    for(int i=1; i<oyuncusayisi; i++)
    {
        if(skor[i]<skor[endusuk])
        {
            endusuk=i;
        }
    }
    printf("en dusuk puanli oyuncu: %d puani:%d\n", endusuk+1, skor[endusuk]);
    return 0;
}
 
İlk hata C++ kodu değil, C kodu olması. Daha ilk kod satırından ilklendirilmemiş değişkenleri görmek hataya bile bakmadan hatanın potansiyen sebebi.
İlklendirilmiş bir değişken var, onda da noktalı virgül yok.
Sonrasında ise for döngüsünde itt görülüyor. i++ nasıl o hale geldi çok meral ediyorum.
scanf kullanımı hatalı.
Hesap kısmının nasıl yapıldığı belli değil. İtalik, anlamsız bir metin paylaşmışsınız. İtalik şekilde "Oyuncu Puanı=oynadığı maç sayısılisabetli pas sayısı — hatalı pas sayısı" yazmak anlamlı değil. Koddaki formülün doğru olduğunu varsayıyorum ki hocanıza söyleyin, çok saçma bir kıyaslama yöntemi.
Index hatası var.
Başka noktalı virgül hatası var.
Bu şekilde gidiyor, yoruldum.

Asıl hata kodu paylaşamamanız. Başına ne getiriyorsunuz bilmiyorum ama forumda bu şekilde kod paylaşan sayısı düzgün paylaşan sayısından fazla. i harfine ne oluyor da I oluyor? i++ ifadesine ne oluyor da itt oluyor? Metin kopyalamak yerine görüntü işleme mi kullanıyorsunuz?

C kodunun düzeltilmiş hali. Stringleri kendiniz istediğiniz hale getirirsiniz.
Sabitleri bu şekilde tanımlayın. Amacınız bir değişkenin değerini artırmaksa ++i kulanın, çünkü ++i onu yapar, i++'ya ihtiyacınız varsa o zaman onu kullanın. C/C++ isimlendirme standardını öğrenmenizde fayda var, çok daha okunur kodlar yazarsınız. Bunlar dışındakiler fazla estetiğe kaçıyor.
Kod:
#define OYUNCU_SAYISI 3

int main() {
    int enDusuk = 0;
    int macSayisi = 0;
    int basariliPas = 0;
    int basarisizPas = 0;
   
    int skor[OYUNCU_SAYISI];
 
    for (int i = 0; i < OYUNCU_SAYISI; ++i) {
        printf("oyuncu: %d\n", i + 1);
        printf("mac sayisi: ");
        scanf("%d", &macSayisi);
        printf("basarili pas sayisi: ");
        scanf("%d", &basariliPas);
        printf("basarisiz pas sayisi: ");
        scanf("%d", &basarisizPas);
       
        skor[i] = macSayisi * (basariliPas - basarisizPas);
       
        if (skor[i] < skor[enDusuk]) {
            enDusuk = i;
        }
    }
   
    printf("en dusuk puanli oyuncu: %d, puani: %d.\n", enDusuk + 1, skor[enDusuk]);
   
    return 0;
}
 
Son düzenleme:
İlk hata C++ kodu değil, C kodu olması. Daha ilk kod satırından ilklendirilmemiş değişkenleri görmek hataya bile bakmadan hatanın potansiyen sebebi.
İlklendirilmiş bir değişken var, onda da noktalı virgül yok.
Sonrasında ise for döngüsünde itt görülüyor. i++ nasıl o hale geldi çok meral ediyorum.
scanf kullanımı hatalı.
Hesap kısmının nasıl yapıldığı belli değil. İtalik, anlamsız bir metin paylaşmışsınız. İtalik şekilde "Oyuncu Puanı=oynadığı maç sayısılisabetli pas sayısı — hatalı pas sayısı" yazmak anlamlı değil. Koddaki formülün doğru olduğunu varsayıyorum ki hocanıza söyleyin, çok saçma bir kıyaslama yöntemi.
Index hatası var.
Başka noktalı virgül hatası var.
Bu şekilde gidiyor, yoruldum.

Asıl hata kodu paylaşamamanız. Başına ne getiriyorsunuz bilmiyorum ama forumda bu şekilde kod paylaşan sayısı düzgün paylaşan sayısından fazla. i harfine ne oluyor da I oluyor? i++ ifadesine ne oluyor da itt oluyor? Metin kopyalamak yerine görüntü işleme mi kullanıyorsunuz?

C kodunun düzeltilmiş hali. Stringleri kendiniz istediğiniz hale getirirsiniz.
Sabitleri bu şekilde tanımlayın. Amacınız bir değişkenin değerini artırmaksa ++i kulanın, çünkü ++i onu yapar, i++'ya ihtiyacınız varsa o zaman onu kullanın. C/C++ isimlendirme standardını öğrenmenizde fayda var, çok daha okunur kodlar yazarsınız. Bunlar dışındakiler fazla estetiğe kaçıyor.
Kod:
#define OYUNCU_SAYISI 3

int main() {
    int enDusuk = 0;
    int macSayisi = 0;
    int basariliPas = 0;
    int basarisizPas = 0;
 
    int skor[OYUNCU_SAYISI];
 
    for (int i = 0; i < OYUNCU_SAYISI; ++i) {
        printf("oyuncu: %d\n", i + 1);
        printf("mac sayisi: ");
        scanf("%d", &macSayisi);
        printf("basarili pas sayisi: ");
        scanf("%d", &basariliPas);
        printf("basarisiz pas sayisi: ");
        scanf("%d", &basarisizPas);
     
        skor[i] = macSayisi * (basariliPas - basarisizPas);
     
        if (skor[i] < skor[enDusuk]) {
            enDusuk = i;
        }
    }
 
    printf("en dusuk puanli oyuncu: %d, puani: %d.\n", enDusuk + 1, skor[enDusuk]);
 
    return 0;
}
Hocam bi sakin olun. Hatalarım var elbet fakat sinirli konuşmanızın ikimiz içinde bir faydası yok. Burası bir forum lütfen güzel dille ifade edin. Alınıyorum. Ben şimdi sizin yüzünüzden programlamayı bıraksam çok mu iyi olacak? Bu ay başladım dil öğrenmeye. Bunu bilmiyorsunuz o yüzden benim hatam da var. Kusura bakmayın.

Bu arada haklısınız notu image to txt sitesinden metne çevirmiştim. Gerçek soru bu şekilde olmalı;

Bir futbol takımında teknik direktör 3 oyuncu içerisinden bir tanesini kadro dışında bırakmak istiyor. Her bir oyuncunun oynadığı maç sayısı, isabetli pas sayısı ve hatalı pas sayıları klavyeden girilmektedir. Yukarıdaki kriterlere göre Her oyuncunun puan değerini hesaplayarak en düşük puanlı oyuncuyu Kadro dışı bırakan programı hazırlayınız.
Oyuncu Puanı= Oynadığı Maç Sayısı*(İsabetli pas sayısı - hatalı pas sayısı)
 
Son düzenleme:
Kızdığın noktalar programlama dan bağımsız. Biri IBAN isteyince görsel paylaşmak gibi bir şey. Yazdığınız metni kopyalamak o kadar zor olmamalı.

Soru metni için teşekkürler. Ama kodunuzdaki kopyalama hatalarını açıklamıyor.

Bu mesaj yüzünden programlamayı bırakacaksınız programlamada karşınıza çıkacak en ufak gerçek problemde bırakırsınız zaten. Azminiz yeterli değil demektir.
 
Kızdığın noktalar programlama dan bağımsız. Biri IBAN isteyince görsel paylaşmak gibi bir şey. Yazdığınız metni kopyalamak o kadar zor olmamalı.

Soru metni için teşekkürler. Ama kodunuzdaki kopyalama hatalarını açıklamıyor.

Bu mesaj yüzünden programlamayı bırakacaksınız programlamada karşınıza çıkacak en ufak gerçek problemde bırakırsınız zaten. Azminiz yeterli değil demektir.
Yok orada sadece örnek verdim. Başladığım işi bırakamıyorum. Neyse yorumunuz için teşekkürler

C++:
#include <stdio.h>

struct oyuncu {
  int oynadigi_mac_sayisi;
  int isabetli_pas_sayisi;
  int hatali_pas_sayisi;
  int skor;
};

void skor_hesaplama(struct oyuncu *p) {
  p->skor = p->oynadigi_mac_sayisi * (p->isabetli_pas_sayisi - p->hatali_pas_sayisi);
}

int main() {
  struct oyuncu oyuncular[3];
  int i;

  for (i = 0; i < 3; i++) {
    printf("Lutfen %d. Oyuncunun Oynadigi mac sayisini, isabetli pas sayisini ve hatali pas sayisini giriniz: \n", i + 1);
    scanf("%d%d%d", &oyuncular[i].oynadigi_mac_sayisi, &oyuncular[i].isabetli_pas_sayisi, &oyuncular[i].hatali_pas_sayisi);
    skor_hesaplama(&oyuncular[i]);
  }

  int lowest_index = 0;
  for (i = 1; i < 3; i++) {
    if (oyuncular[i].skor < oyuncular[lowest_index].skor) {
      lowest_index = i;
    }
  }

  printf("En dusuk puana sahip olan oyuncu %d ve puanı= %d.\n", lowest_index + 1, oyuncular[lowest_index].skor);
  return 0;
}

Arkadaşlar kodu tamamlayabildim. İşlerine yarayacak olanlar alsın. Değiştirsin. Kurcalasın. vs. Herkese Hayırlı Günler.

Tarif ettiğiniz şekilde şöyle olmalı:
Kod:
#include <iostream>

int main() {
int numOfPlayers = 3;
int scores[numOfPlayers];
int gamesPlayed, successfulPasses, unsuccessfulPasses;

for (int i = 0; i < numOfPlayers; i++) {
std::cout << "Enter the number of games played by player " << i + 1 << ": ";
std::cin >> gamesPlayed;
std::cout << "Enter the number of successful passes by player " << i + 1 << ": ";
std::cin >> successfulPasses;
std::cout << "Enter the number of unsuccessful passes by player " << i + 1 << ": ";
std::cin >> unsuccessfulPasses;
scores[i] = gamesPlayed * (successfulPasses - unsuccessfulPasses);
}

int minScoreIndex = 0;
for (int i = 1; i < numOfPlayers; i++) {
if (scores[i] < scores[minScoreIndex]) {
minScoreIndex = i;
}
}

std::cout << "The player with the lowest score is player " << minScoreIndex + 1 << " with a score of " << scores[minScoreIndex] << std::endl;

return 0;
}

Chat GPT tarafından yazıldı.

Ayrıca kendi yazdığınız koddaki hataların düzeltilmiş hali;
Kod:
#include <stdio.h>

int main()
{
    int endusuk,macsayisi,basarilipas,basarisizpas;
    int oyuncusayisi = 3;
    int skor[oyuncusayisi];
 
    for(int i=0; i<oyuncusayisi; i++)
    {
        printf("oyuncu%d\n",i+1);
        printf("macsayisi:");
        scanf("%d", &macsayisi);
        printf("basarilipassayisi:");
        scanf("%d", &basarilipas);
        printf("basarisizpassayisi:");
        scanf("%d", &basarisizpas);
        skor[i]=macsayisi*(basarilipas-basarisizpas);
    }
    endusuk=0;
    for(int i=1; i<oyuncusayisi; i++)
    {
        if(skor[i]<skor[endusuk])
        {
            endusuk=i;
        }
    }
    printf("en dusuk puanli oyuncu: %d puani:%d\n", endusuk+1, skor[endusuk]);
    return 0;
}
Cevabın için teşekkürler
 

Geri
Yukarı