Şimdi Ara

Proje Ödevi Yardım

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
2
Cevap
0
Favori
144
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Selamlar arkadaşlar proje ödevim için kalan tek şey elimdeki kodu istenen şekile uyarlamam lazım.Bizden istenen şey;
    a) Sıralama tekniğinin algoritmasını ya da akış şemasını hazırlayınız.
    b) Algoritmanın çalışma mantığını örnek bir dizi üzerinde açıklayınız.
    c) b şıkkındaki algoritmayı C programlama dilinde sırala adlı bir fonksiyon olarak kodlayınız.
    d) Daha sonra main(Ana) fonksiyonda sırala fonksiyonunu 3 farklı tipte (int, float, string) ve karışık sırada diziyi sıralatmak için çağırınız. Ana (main) fonksiyon dizilerin hem sırasız, hem de sıralı hallerini ekrana yazdırmalıdır.
    e) Raporunuz hazırlarken kullandığınız KAYNAKLAR LİSTESİ raporunuza eklenmelidir.

    Her şey tamam sadece d şıkkı kaldı.Onu da yaptım ama sadece int değerleri yazdırıyor =(

    Benden istenen şey; main(Ana) fonksiyonda sırala fonksiyonunu 3 farklı tipte (int, float, string) ve karışık sırada diziyi sıralatmak için çağırınız. Ana (main) fonksiyon dizilerin hem sırasız, hem de sıralı hallerini ekrana yazdırmalıdır.


    Arkadaşlar kod tamam ama benim kod sadece int değerleri yazdırıyor.İstenen şekilde nasıl yapabilirim.Bir türlü yapamadım =( kodum bu şekilde.


    #include <stdio.h>
    #include <stdlib.h>

    void sirala(int *,int, int);

    int main(){
    int *array,i,size;
    printf("Dizinin boyutunu giriniz: "); scanf("%d",&size);
    array=(int *)malloc(size*sizeof(int));
    for(i=0;i<size;i++){
    printf("Dizinin %d. elemani :",i+1); scanf("%d",&array*i*);
    }
    printf("Dizinin baslangic durumu: ");
    for(i=0;i<size;i++){
    printf("%d ",array*i*);
    }
    sirala(array,0,size-1);
    printf("

    Dizinin son durumu: ");
    for(i=0;i<size;i++){
    printf("%d ",array*i*);
    }
    return 0;
    }

    void sirala(int *array,int first,int last){
    int i; // İlk elemanı tutacak sayaç değişkeni
    int j; // Son elemanı tutacak sayaç değişkeni
    int pivot; // Pivot elemanı tutacak sayaç değişkeni
    int tmp; // Yer değiştirme işlemi için kullanılacak değişken
    pivot=first; // Pivot ilk eleman seçilir

    // Burada yapılan işlem son eleman ilk elemandan büyükse, son eleman ilk elemandan büyük olduğu sürece baştan ve sondan pivottan büyük olan ve
    // pivottan küçük olan bir eleman seçilip yer değiştirilir.
    if(last>first){
    pivot=first;
    i=first;
    j=last;
    while (i<j){
    while (array*i*<=array[pivot] && i<last && j>i){ // Baştan pivottan büyük olan bir eleman bulunur
    i++;
    }
    while (array[j]>=array[pivot] && j>=first && j>=i){ // Sondan pivottan küçük olan bir eleman bulunur
    j--;
    }
    if (j>i){ // Swap işlemi yapılır
    tmp=array*i*;
    array*i*=array[j];
    array[j]=tmp;
    }
    }
    // Yeniden pivot seçilir ve bölünen bağlı listenin diğer parçaları tekrar quick sort fonksiyonuna gönderilir
    tmp=array[j];
    array[j]=array[pivot];
    array[pivot]=tmp;
    sirala(array,first,j-1);
    sirala(array,j+1,last);
    }
    }

    NOT:****Bu arada nedense forumda köşeli parantez yazılmıyor anlamadım. Kodumun içindeki köşeli parantezleri forumdan dolayı yazmadığı için sizde hata verebilir. Ben o hata yerlerini su sekılde yapayım. *i* siz yıldız yerine köşeli parantez yazacaksınız.Bahsettiğim satırlar 11-15-20-39-46-47 ***

    Şimdiden teşekkürler...



    < Bu mesaj bu kişi tarafından değiştirildi YalnızBen -- 8 Mayıs 2018; 17:51:41 >







  • tamplate fonk ile kolay bir şekilde hallediliyor. C++ ın özelliği, c de yer almıyor.

    #include <stdio.h>
    #include <stdlib.h>
    #include<conio.h>

    template <typename T>
    void sirala(T * array, int first, int last){// T tipi diziyi tutacaktir.
    int i;
    int j;
    int pivot;
    T tmp;
    pivot=first;


    if(last>first){;
    pivot=first;
    i=first;
    j=last;
    while (i<j){
    while (array[i]<=array[pivot] && i<last && j>i){
    i++;
    }
    while (array[j]>=array[pivot] && j>=first && j>=i){
    j--;
    }
    if (j>i){
    tmp=array[i];
    array[i]=array[j];
    array[j]=tmp;
    }
    }

    tmp=array[j];
    array[j]=array[pivot];
    array[pivot]=tmp;
    sirala(array,first,j-1);
    sirala(array,j+1,last);
    }
    }

    int main(){
    int *iarray,i,size, secim;
    float *farray;
    char *carray;
    printf("Dizinin boyutunu giriniz: "); scanf("%d",&size);
    do{
    printf("
    [1] Tamsayi
    [2]ondalikli sayi
    [3]Karakter
    Siralamak istediginiz veri tipini secin:");
    scanf("%d", &secim);
    switch (secim){//kullanicidan hangi veri tipi icin islem yapacagi alinir
    case 1 :{// tamsayi degiskeni için
    iarray=(int *)malloc(size*sizeof(int));
    for(i=0;i<size;i++){
    printf("Dizinin %d. elemani :",i+1); scanf("%d",&iarray[i]); }//kullanıcıdan veri alinir
    printf("Dizinin baslangic durumu: ");
    for(i=0;i<size;i++){//dizinin sirasiz hali yazdirilir.
    printf("%d ",iarray[i]);}
    sirala(iarray,0,size-1);//Siralama icin fonk cagirilir
    printf("

    Dizinin son durumu: ");
    for(i=0;i<size;i++){//dizinin sirali hali yazdirilir.
    printf("%d ",iarray[i]);}
    free(iarray);//Bellek serbest birakilir
    break;
    }
    case 2:{//ondakil sayi degiskeni icin
    farray=(float *)malloc(size*sizeof(float));
    for(i=0;i<size;i++){
    printf("Dizinin %d. elemani :",i+1); scanf("%f",&farray[i]);}//kullanıcıdan veri alinir
    printf("Dizinin baslangic durumu: ");
    for(i=0;i<size;i++){//dizinin sirasiz hali yazdirilir.
    printf("%f ",farray[i]);}
    sirala(farray,0,size-1);//Siralama icin fonk cagirilir
    printf("

    Dizinin son durumu: ");
    for(i=0;i<size;i++){//dizinin sirali hali yazdirilir.
    printf("%f ",farray[i]);
    }
    free(farray);//Bellek serbest birakilir
    break;}

    case 3:{//string degiskeni icin
    carray=(char *)malloc((size)*sizeof(char));
    printf("Karekter Dizisini Giriniz:"); getchar(); gets(carray);//kullanıcıdan veri alinir
    printf("Dizinin baslangic durumu: %s", carray);//dizinin sirasiz hali yazdirilir.
    sirala(carray,0,size-1);//Siralama icin fonk cagirilir
    printf("

    Dizinin son durumu: %s", carray);//dizinin sirali hali yazdirilir.
    free(carray);//Bellek serbest birakilir
    break;
    }
    }}while(secim!=1 || secim!=2 || secim!=3 );
    return 0;
    }








    < Bu mesaj bu kişi tarafından değiştirildi silliusblack -- 12 Mayıs 2018; 0:36:41 >




  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.