Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays C随机排序数组中的第一个和第三个四分位数_Arrays_C_Histogram_Quartile - Fatal编程技术网

Arrays C随机排序数组中的第一个和第三个四分位数

Arrays C随机排序数组中的第一个和第三个四分位数,arrays,c,histogram,quartile,Arrays,C,Histogram,Quartile,我需要编写代码来打印排序和随机数组中的第一个和第三个四分位数。我不知道如何避开它。有什么帮助吗? 如果您需要有关代码的任何澄清,请询问。 谢谢 如果你能找到一个为什么media()函数不能工作的bug,我将不胜感激。我认为它卡在无限循环中 #include<stdio.h> #include<stdlib.h> #include<time.h> #include<math.h> #define TABLE_SIZE 20 #define HISTO

我需要编写代码来打印排序和随机数组中的第一个和第三个四分位数。我不知道如何避开它。有什么帮助吗? 如果您需要有关代码的任何澄清,请询问。 谢谢

如果你能找到一个为什么media()函数不能工作的bug,我将不胜感激。我认为它卡在无限循环中

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<math.h>
#define TABLE_SIZE 20
#define HISTOGRAM_SIZE 9

int tablica[TABLE_SIZE];
int histogram[HISTOGRAM_SIZE];


void wylosuj_tablice() //creates and randomizes the array
{
    int i;
    srand(time(0));
    for(i=0;i<TABLE_SIZE;i++)
    {
        tablica[i]=(rand()%HISTOGRAM_SIZE);
    }
}

void czysc_histogram() //cleans histogram
{
    int i;
    for(i=0; i<HISTOGRAM_SIZE; i++) {
        histogram[i] = 0;
    }
}

void tworz_histogram() //counts from 0 to 8
{
    int i;
    czysc_histogram();
    for(i=0; i<TABLE_SIZE; i++) {
        histogram[tablica[i]]++;
    }

}

void wyswietl_histogram() // shows histogram from -4 to 4
{
    int i;
    for(i=0; i<HISTOGRAM_SIZE; i++) {
        printf("Liczba %d: %d\n", i-4 /* <== */, histogram[i]);
    }
}

void wyswietl_tablice() //shows the sorted array from -4 to 4
{
    int i;
    for(i=0; i<TABLE_SIZE; i++) {
        printf ("tablica[%d]=%d\n", i, tablica[i]-4 /* <== */);
    }
}

float median() {
    int temp;
    int i, j;
    for (i=0; i<HISTOGRAM_SIZE-1; j++) {
        for(j=i+1; j<HISTOGRAM_SIZE; j++) {
            if(tablica[j] < tablica[i]) {
                //replaces elements
                temp = tablica[i];
                tablica[i] = tablica[j];
                tablica[j] = temp;
            }
        }
    }

    if (HISTOGRAM_SIZE%2==0) {
            //if there are 2 even numbers then it return mean from them
        int wynik1 = ( (tablica[HISTOGRAM_SIZE/2] + tablica[HISTOGRAM_SIZE/2 -1]) /2.0);
        printf("%d", wynik1);

    } else {
        //if there isn't then it gives the middle one
        int wynik2 =  tablica[HISTOGRAM_SIZE/2];
        printf("%d", wynik2);
    }

}

int main()
{
    wylosuj_tablice(); //executes voids
    wyswietl_tablice();
    tworz_histogram();
    wyswietl_histogram();
    median();
    return 0;
}

#包括
#包括
#包括
#包括
#定义表格大小20
#定义直方图的大小为9
int tablica[表格大小];
int直方图[直方图大小];
void wylosuj_tablice()//创建并随机化数组
{
int i;
srand(时间(0));
对于(i=0;i不确定这里的“四分位数”到底是什么…类似这样的东西

void printQuartile(int quartile)
{
    wylosuj_tablice(); // To produce the data

    int i, start, end;
    switch(quartile) {
        case 1: start = 0; end = TABLE_SIZE / 4;                  break;
        case 2: start = TABLE_SIZE / 4; end = TABLE_SIZE / 2;     break;
        case 3: start = TABLE_SIZE / 2; end = (TABLE_SIZE / 4) * 3; break;
        case 4: start = (TABLE_SIZE / 4) * 3; end = TABLE_SIZE;  break;
        default: return;
    }
    for(i= start; I<end; i++) {
        printf ("tablica[%d]=%d\n", i, tablica[i]-4);
    }
}

printQuartile(1);
printQuartile(3);

不必指定中间值()。我在第一个for循环I++中出错,而不是在j++中。我认为打印第一个和第三个四分位数应该是一个单独的函数。这些是值​​分别位于排序数组开始的1/4和3/4距离。这不意味着它将是第二个和最后一个四分位数吗?不管怎样,我调整函数以打印四个四分位数中的任何一个,以便您可以根据需要使用它。当然,您可以调整它以不同的方式打印内容。
tablica[0]=-4
tablica[1]=4
tablica[2]=2
tablica[3]=-1
tablica[4]=2

tablica[10]=-1
tablica[11]=3
tablica[12]=1
tablica[13]=1
tablica[14]=4