C 中从 -5 到 5 的直方图
Histogram from -5 to 5 in C
所以基本上我有一个任务来更改我以前编写的代码,该代码生成并打印出来自 30 个元素板的直方图(我的是 0 到 10)。我似乎无法让它从 -5 到 5,所以我希望它在打印出来之前将它生成的每个数字都设为 -5。我已经考虑了 2 天了,但似乎找不到解决方案。我附上原始代码。我是 C 的新手。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<math.h>
#define TABLE_SIZE 30
#define HISTOGRAM_SIZE 11
int tablica[TABLE_SIZE];
int histogram[HISTOGRAM_SIZE];
void wylosuj_tablice() //generate an array
{
int i;
srand(time(0));
for(i=0;i<TABLE_SIZE;i++)
{
tablica[i]=(rand()%HISTOGRAM_SIZE);
}
}
void czysc_histogram() //clean histogram
{
int i;
for(i=0; i<HISTOGRAM_SIZE; i++) {
histogram[i] = 0;
}
}
void tworz_histogram() //basically now it does 0 to 10 but I want it to -5 to 5, so every int would be -5
{
int i;
czysc_histogram();
for(i=0; i<TABLE_SIZE; i++) {
histogram[tablica[i]]++;
}
}
void wyswietl_histogram() // print the histogram
{
{
int i;
for(i=0; i<HISTOGRAM_SIZE; i++) {
printf("Liczba %d: %d\n", i, histogram[i]);
}
}
}
void wyswietl_tablice() //Print a sorted table
{
int i;
for(i=0; i<TABLE_SIZE; i++) {
printf ("tablica[%d]=%d\n", i, tablica[i]);
}
}
int main()
{
wylosuj_tablice();
wyswietl_tablice();
tworz_histogram();
wyswietl_histogram();
return 0;
}
是您要找的吗?
void wyswietl_histogram() // print the histogram
{
int i;
for(i=0; i<HISTOGRAM_SIZE; i++) {
printf("Liczba %d: %d\n", i-5 /* <== */, histogram[i]);
}
}
void wyswietl_tablice() //Print a sorted table
{
int i;
for(i=0; i<TABLE_SIZE; i++) {
printf ("tablica[%d]=%d\n", i, tablica[i]-5 /* <== */);
}
}
输出:
tablica[0]=-5
tablica[1]=0
tablica[2]=-4
tablica[3]=-2
tablica[4]=5
tablica[5]=3
tablica[6]=-2
tablica[7]=-2
tablica[8]=-3
tablica[9]=1
tablica[10]=3
tablica[11]=4
tablica[12]=4
tablica[13]=1
tablica[14]=5
tablica[15]=2
tablica[16]=-2
tablica[17]=-3
tablica[18]=5
tablica[19]=-4
tablica[20]=2
tablica[21]=4
tablica[22]=0
tablica[23]=-2
tablica[24]=3
tablica[25]=-1
tablica[26]=2
tablica[27]=2
tablica[28]=-3
tablica[29]=1
Liczba -5: 1
Liczba -4: 2
Liczba -3: 3
Liczba -2: 5
Liczba -1: 1
Liczba 0: 2
Liczba 1: 3
Liczba 2: 4
Liczba 3: 3
Liczba 4: 3
Liczba 5: 3
所以基本上我有一个任务来更改我以前编写的代码,该代码生成并打印出来自 30 个元素板的直方图(我的是 0 到 10)。我似乎无法让它从 -5 到 5,所以我希望它在打印出来之前将它生成的每个数字都设为 -5。我已经考虑了 2 天了,但似乎找不到解决方案。我附上原始代码。我是 C 的新手。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<math.h>
#define TABLE_SIZE 30
#define HISTOGRAM_SIZE 11
int tablica[TABLE_SIZE];
int histogram[HISTOGRAM_SIZE];
void wylosuj_tablice() //generate an array
{
int i;
srand(time(0));
for(i=0;i<TABLE_SIZE;i++)
{
tablica[i]=(rand()%HISTOGRAM_SIZE);
}
}
void czysc_histogram() //clean histogram
{
int i;
for(i=0; i<HISTOGRAM_SIZE; i++) {
histogram[i] = 0;
}
}
void tworz_histogram() //basically now it does 0 to 10 but I want it to -5 to 5, so every int would be -5
{
int i;
czysc_histogram();
for(i=0; i<TABLE_SIZE; i++) {
histogram[tablica[i]]++;
}
}
void wyswietl_histogram() // print the histogram
{
{
int i;
for(i=0; i<HISTOGRAM_SIZE; i++) {
printf("Liczba %d: %d\n", i, histogram[i]);
}
}
}
void wyswietl_tablice() //Print a sorted table
{
int i;
for(i=0; i<TABLE_SIZE; i++) {
printf ("tablica[%d]=%d\n", i, tablica[i]);
}
}
int main()
{
wylosuj_tablice();
wyswietl_tablice();
tworz_histogram();
wyswietl_histogram();
return 0;
}
是您要找的吗?
void wyswietl_histogram() // print the histogram
{
int i;
for(i=0; i<HISTOGRAM_SIZE; i++) {
printf("Liczba %d: %d\n", i-5 /* <== */, histogram[i]);
}
}
void wyswietl_tablice() //Print a sorted table
{
int i;
for(i=0; i<TABLE_SIZE; i++) {
printf ("tablica[%d]=%d\n", i, tablica[i]-5 /* <== */);
}
}
输出:
tablica[0]=-5
tablica[1]=0
tablica[2]=-4
tablica[3]=-2
tablica[4]=5
tablica[5]=3
tablica[6]=-2
tablica[7]=-2
tablica[8]=-3
tablica[9]=1
tablica[10]=3
tablica[11]=4
tablica[12]=4
tablica[13]=1
tablica[14]=5
tablica[15]=2
tablica[16]=-2
tablica[17]=-3
tablica[18]=5
tablica[19]=-4
tablica[20]=2
tablica[21]=4
tablica[22]=0
tablica[23]=-2
tablica[24]=3
tablica[25]=-1
tablica[26]=2
tablica[27]=2
tablica[28]=-3
tablica[29]=1
Liczba -5: 1
Liczba -4: 2
Liczba -3: 3
Liczba -2: 5
Liczba -1: 1
Liczba 0: 2
Liczba 1: 3
Liczba 2: 4
Liczba 3: 3
Liczba 4: 3
Liczba 5: 3