Arama butonu
Bu konudaki kullanıcılar: 1 misafir
10
Cevap
223
Tıklama
0
Öne Çıkarma
[ÇÖZÜLDÜ]Ödevimi Tamamlamak Üzereyim Küçük Bi yardım Gerekiyor (Simple C)
K
9 yıl
Yüzbaşı
Konu Sahibi

Ödevimde yapmaya çalıştığım bir bisiklet yarışı için genel klasmanı belirleyen bi yazılım üretmek
Yazılımda her şey gayet açık ve yorumlarla anlatılmış biçimde
Fakat çalıştırdığımda sıralam fonksiyonum hata veriyor.
Ödevin teslimine bi hafta süre var, yardımlarınızı bekliyorum

Kodu başka bi yerden görüntülemek için >>>>http://pastie.org/10902095


 
#include <stdio.h>
void siralama(int [][2], int); //Sıralama yapmak icin olusturdugum fonksiyon
//Lab derslerinde uygulamasını baska bi kodda yapmıştım kendim
int main()
{
int yariscisayisi, etapsayisi, i, j, k; //Değişkenlerin isimleri gayet açık

printf("Bu kod bir bisiklet yarisindaki yarismacilari siralar.\n"); //Programa dair açıklamalar
printf("Bilindigi uzere bisiklet yarisinda birden fazla etap olur.\n");
printf("Her sporcunun etap basina bitirme sureleri toplanarak sporcuya ait toplam sure olusturulur.\n");
printf("Yarisma sonucunda genel klasmanda en dusuk sureye sahip yarisici yarisin galibi olur.\n"); //Açıklamaların bittiği yer

printf("Simdi lutfen yarisan bisikletci sayisini giriniz: \n"); scanf(" %d", &yariscisayisi); //Yarışcı sayısını belirleme
printf("Sirada ise yarista gecilmesi gereken toplam etap sayisini giriniz: \n"); scanf("%d", &etapsayisi); //Etap sayısını belirleme

int numara_sure[yariscisayisi][etapsayisi+1]; //İsimlerin ve sürelerin eşlendiği dizi
//Her sporcu içi bir satır. Her satırda birinci sütun sporcu numarası
//Diğer sütunla sırası ile etap süreleri

int suretoplam[yariscisayisi][2]; //Süre toplamlarının hesaplandığı dizi
//Süre toplamı matrisinin ikinci sütunu sürelere,
//birinci sütunu ise sırt numaralarına ayrılmış durumda.
for(i=1; i<=yariscisayisi; i++)
{ suretoplam[i-1][1]=0;} //Başta toplamlar sıfıra eşitlenir.

for(k=1; k<=yariscisayisi; k++) //Sporcu sirt numaralarının alındığı bölüm
{ printf("%d. sporcunun sirt numarasini giriniz: ", k); scanf("%d", &numara_sure[k-1][0]);
suretoplam[k-1][0] = numara_sure[k-1][0]; }



printf("Gerekli bilgiler alindigina gore sira sureleri almaya geldi.\n"); //Uyarılar
printf("Lutfen sureleri toplam dakika olarak giriniz. \n"); //Uyarılar

for(i=1; i<=etapsayisi; i++) //Her etap icin ayrı ayrı sure bilgilerinin alımı
{ printf("\n\n%d. ETAP SURE BILGILERI", i);
for(j=1; j<=yariscisayisi; j++)
{ printf("\n\n%d sirt numrali sporcu icin sure >>> ", numara_sure[j-1][0]);
scanf("%d", &numara_sure[j-1][i] ); //Her sporcu icin ayrı ayrı sure bilgileri alınıyor
suretoplam[j-1][1]=suretoplam[j-1][1]+numara_sure[j-1][i]; //Her etapta sporcuya önceki süre toplamı ekleniyor.
}

}
for(i=1; i<=yariscisayisi; i++) { printf("%d%d\n", suretoplam[i-1][1], suretoplam[i-1][0] );} //Sırayla süre toplmalarını görmek için kontrol kodu
siralama(suretoplam, yariscisayisi); //Toplam süreleri büyüklük sıralamasına koyan fonksiyon
printf("Su an verdiginiz bilgilere gore sureler siralandi.\n");
printf("Sureler kucukten buyuge dogru genel klasman birincisi yukarıda olacak sekilde gorunecektir.\n\n");

for(j=1; j<=yariscisayisi; j++) //Final sıralaması
{ printf("\n%d. olan %d numaralı sporcu suresi %d", j, suretoplam[j-1][0], suretoplam[j-1][1] ); }
}
void siralama(int m[][2], int n) //Süre toplamı matrisinin ikinci sütunu sürelere, birinci sütunu ise sırt numaralarına ayrılmış durumda.
{
int i, temp, j, tempnum;
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
if(m[j+1][1]<m[j][1])
{
temp = m[j][1];
m[j][1] = m[j + 1][1];
m[j + 1][1] = temp;

tempnum = m[j][0];
m[j][0] =m[j + 1][0];
m[j + 1][0] = tempnum;
}

}
}
}


KODU DEV C++ PROGRAMINDA YAZDIM BİR DE SİZ ÇALIŞTIRIP BAKIN LÜTFEN





< Bu mesaj bu kişi tarafından değiştirildi kültürlü cingen -- 12 Temmuz 2016; 15:45:32 >

N
9 yıl
Yüzbaşı

Kodu buraya değilde kod yazılan sitelere copy paste yapıp buraya link ararsan daha iyi olur burada kimse bakmaz buna anlaşılmıyor çünkü



< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 2 cevap geldi.
K
9 yıl
Yüzbaşı
Konu Sahibi

Hocam hemen halleşiyorum. Teşekkür ederim uyarınız için
Sizi de etiketleyeceğim düzelttiğimde, müsaadenizle



< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @Nicolai Tesla
P
9 yıl
Çavuş

Selamün Aleyküm;
Ben kodu denedim lakin bir hata yok, askine doğru çalışıyor. Siz ne hatası aldınız? O hatayı buraya yazmalısınız.


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @kültürlü cingen
K
9 yıl
Yüzbaşı
Konu Sahibi

Aleyküm selam. Öncelikle kodu denemeye zaman ayırdığınız için teşekkür ederim.
Hatamız program çalıştırılıp sırt numaraları ve etap süreleri yazıldıktan sonra ortaya çıkıyor. Kod aşağıda bize bi sıralama bölümü gösteriyor ama bu bölümde sırt numaraları ve süreler birbirine girmiş durumda.
Umarım anlatabilmişimdir


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @Programmer_Kanguru
P
9 yıl
Çavuş

Kodda ben sıkıntı göremedim, siz neyi kastediyorsunuz?
Örnek bir çıktı şöyle: resim, resim_devamı.


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @kültürlü cingen
K
9 yıl
Yüzbaşı
Konu Sahibi

Hocam gariptir ki aynı girdilerle aynı sonuçları alamıyoruz
Gördüğünüz üzere resimde size ait sonuçlar ve aynı girdilerle bana ait sonuçlar var. Ama girdiler aynı olasına rağmen sonuçlar farklı

< Resime gitmek için tıklayın >




Bu mesajda bahsedilenler: @Programmer_Kanguru
K
9 yıl
Yüzbaşı
Konu Sahibi

quote:

Orijinalden alıntı: Nicolai Tesla

Kodu buraya değilde kod yazılan sitelere copy paste yapıp buraya link ararsan daha iyi olur burada kimse bakmaz buna anlaşılmıyor çünkü

Hocam buyrun
Yukarıda bi arkadaş kodda sıkıntı çıkmadığını söylüyor. Mümkünse siz de bakar mısınız?
http://pastie.org/10902095


Bu mesaja 1 cevap geldi.
P
9 yıl
Çavuş

http://www.tutorialspoint.com/compile_c_online.php
Bu siteyi bir deneyin, bu da aynı şekilde bana sonuç verdi. Kullandığınız derleyici nedir (MinGW 4.9.2, Microsoft C++ Compiler ya da Embarcadero C++ Compiler olabilir)?





< Bu mesaj bu kişi tarafından değiştirildi Programmer_Kanguru -- 8 Temmuz 2016; 23:01:17 >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @kültürlü cingen
B
9 yıl
Çavuş

sorun siralama fonksiyonunun ikinci for unda. j<n ifadesi for içindeki if j+1 inci indise baktığı için m[n][2] boyutlu bir dizide m[n][..] indisine ulaşmaya çalışıyor. oysa indis 0 dan n-1 e kadar değerler alabilir.

ikinci fordaki j<n ifadesi j<n-1 yapılınca düzeliyor kod.


Bu mesaja 1 cevap geldi.
K
9 yıl
Yüzbaşı
Konu Sahibi

quote:

Orijinalden alıntı: brk0001

sorun siralama fonksiyonunun ikinci for unda. j<n ifadesi for içindeki if j+1 inci indise baktığı için m[n][2] boyutlu bir dizide m[n][..] indisine ulaşmaya çalışıyor. oysa indis 0 dan n-1 e kadar değerler alabilir.

ikinci fordaki j<n ifadesi j<n-1 yapılınca düzeliyor kod.

Hocam aynen dediğini uyguladım ve sorun çözüldü.
Teşekkür ediyorum size elinize emeğinize sağlık.
Allah razı olsun



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.