Arama butonu
Bu konudaki kullanıcılar: 1 misafir
1
Cevap
1013
Tıklama
0
Öne Çıkarma
C hatayı çözemedim
M
11 yıl (410 mesaj)
Yüzbaşı
Konu Sahibi

Hata nerde arkadaşlar. Modu 19 tekrarla 1 bulması gerekirken 13 tekrarla 7 olarak buluyo.

for(i=1; i<9; i++){ 
if(freq[i]<freq[i+1])
mod=i+1;
}


Bu döngü ile alakalı problem var diye düşünüyorum ama çözemedim işte

#include <stdio.h> 
#define SIZE 99

void mean(const unsigned int answer[]);
void median(unsigned int answer[]);
void mode(unsigned int freq[], unsigned const int answer[]);
void bubbleSort(int a[]);
void printArray(unsigned const int a[]);

int main(void){

unsigned int frequency[10]={0};

unsigned int response[SIZE]={
5, 5, 7 ,1 ,6 ,4, 4, 4, 1, 7,
4, 8, 1, 8, 2, 5, 1, 3, 1, 5,
4, 9, 8, 1, 6, 5, 7, 1, 4, 3,
1, 5, 8, 4, 7, 9, 9, 1, 2, 3,
8, 7, 8, 4, 2, 2, 1, 7, 7, 1,
8, 9, 1, 5, 4, 7, 6, 1, 3, 5,
7, 9, 1, 5, 6, 7, 6, 4, 1, 5,
8, 9, 7, 2, 9, 4, 8, 1, 9, 4,
8, 9, 8, 8, 8, 9, 9, 1, 4, 7,
5, 4, 4, 7, 3, 1, 2, 1, 2
};

printArray(response);
mean(response);
median(response);
mode(frequency, response);
printArray(response);

}

void mean(const unsigned int answer[]){//gönderilen dizinin ortalamasını bulur ve yazdırır

int toplam=0;
int i;

for(i=0; i<SIZE; i++)
toplam+=answer[i];

printf("Dizinin ortalamasi = %.2f\n", (float)toplam/SIZE);

}

void median(unsigned int answer[]){//dizinin ara degerini bulur ve yazdırır

unsigned int med;

bubbleSort(answer);

med=answer[SIZE/2];

printf("Dizinin aradegeri=%u\n", med);
}

void mode(unsigned int freq[], unsigned const int answer[]){//En cok verilen puanı bulur ve yazdırır.

unsigned int mod=1;
int i;

for(i=0; i<SIZE; i++){
switch(answer[i]){
case 1:
freq[1]++;break;
case 2:
freq[2]++;break;
case 3:
freq[3]++;break;
case 4:
freq[4]++;break;
case 5:
freq[5]++;break;
case 6:
freq[6]++;break;
case 7:
freq[7]++;break;
case 8:
freq[8]++;break;
case 9:
freq[9]++;break;
}
}

for(i=1; i<9; i++){
if(freq[i]<freq[i+1])
mod=i+1;
}

printf("Dizinin modu %u tekrarla %u\n", freq[mod], mod);

}

void bubbleSort(int a[]){//diziyi küçükten büyüğe sıralar

int i;
int j;
unsigned int hold;

for(i=1; i<SIZE; i++){

for(j=0; j<SIZE-1; j++){

if(a[j]>a[j+1]){

hold=a[j+1];
a[j+1]=a[j];
a[j]=hold;

}

}

}

}

void printArray(unsigned const int a[]){//Diziyi yazdırır

int i;

for(i=0; i<SIZE; i++){

if(i%10==0)
printf("\n");

printf("%u ", a[i]);
}

printf("\n");
}

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil





< Bu mesaj bu kişi tarafından değiştirildi maslan92 -- 20 Temmuz 2014; 4:06:08 >

B
11 yıl (76 mesaj)
Çavuş

 
if(freq[mod]<freq[i])
mod=i;






< Bu mesaj bu kişi tarafından değiştirildi brk0001 -- 20 Temmuz 2014; 12:53:55 >

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.