temperatures
problem sayfasi
// temperatures
// yasin tasan - may 2018
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
void print_temperatures(int sicaklik[], int n);
void sifirdan_farklari_bul(int std_sapma[],int sicaklik[], int eksi_ptr[], int n);
void eksi_ptr_leri_ekrana_bas(int n, int eksi_ptr[]);
void sifirdan_farklari_ekrana_bas(int n, int std_sapma[]);
int std_sapma_min_bul(int n, int std_sapma[]);
int std_sapma_min_index_bul(int n, int min, int std_sapma[]);
_Bool birbirinin_tersi_var_mi(int n, int sicaklik[]);
int gerekenleri_tersle(_Bool flag, int min, int sicaklik[], int min_index);
void sonucu_yazdir(int min);
int main()
{
int n; // the number of temperatures to analyse
scanf("%d", &n);
fprintf(stderr, "n = %d\n",n);
int *sicaklik;
sicaklik = (int *)calloc(n, sizeof(int));
int *std_sapma;
std_sapma = (int *)calloc(n, sizeof(int));
int *eksi_ptr;
eksi_ptr= (int *)calloc(n, sizeof(int));
for (int i = 0; i < n; i++)
{
int t; // a temperature expressed as an integer ranging from -273 to 5526
scanf("%d", &t);
sicaklik[i] = t;
eksi_ptr[i] = 0;
}
print_temperatures(sicaklik,n);
fprintf(stderr, "---\n");
sifirdan_farklari_bul(std_sapma, sicaklik, eksi_ptr, n);
eksi_ptr_leri_ekrana_bas(n, eksi_ptr);
fprintf(stderr, "---\n");
sifirdan_farklari_ekrana_bas(n, std_sapma);
int min = std_sapma_min_bul(n, std_sapma);
int min_index = std_sapma_min_index_bul(n, min, std_sapma);
fprintf(stderr, "---\n");
_Bool flag = birbirinin_tersi_var_mi(n, sicaklik);
fprintf(stderr, "---\n");
min = gerekenleri_tersle(flag, min, sicaklik, min_index);
sonucu_yazdir(min);
return 0;
}
void print_temperatures(int sicaklik[], int n)
{
for(int i=0; i< n; i++)
fprintf(stderr, "sicaklik[%d] = %d\n",i,sicaklik[i]);
}
void sifirdan_farklari_bul(int std_sapma[],int sicaklik[], int eksi_ptr[], int n)
{
for (int i=0; i < n; i++)
{
if(sicaklik[i] > 0)
{
std_sapma[i] = sicaklik[i];
eksi_ptr[i] = 0;
}
else
{
std_sapma[i] = -sicaklik[i];
eksi_ptr[i] = 1;
}
}
}
void eksi_ptr_leri_ekrana_bas(int n, int eksi_ptr[])
{
for (int i=0; i < n; i++)
{
fprintf(stderr, "eksi_ptr[%d] = %d\n",i,eksi_ptr[i]);
}
}
void sifirdan_farklari_ekrana_bas(int n, int std_sapma[])
{
for(int i=0; i< n; i++)
fprintf(stderr, "std_sapma[%d] = %d\n",i,std_sapma[i]);
}
int std_sapma_min_bul(int n, int std_sapma[])
{
int min = std_sapma[0];
for (int i=0; i < n; i++)
{
if( std_sapma[i] < min)
{
min = std_sapma[i];
}
}
fprintf(stderr, "min = %d\n",min);
return min;
}
int std_sapma_min_index_bul(int n, int min, int std_sapma[])
{
int min_index;
for(int i=0; i<n ; i++)
{
if(min == std_sapma[i])
{
min_index = i;
}
}
fprintf(stderr, "min_index = %d\n",min_index);
return min_index;
}
_Bool birbirinin_tersi_var_mi(int n, int sicaklik[])
{
_Bool flag = 0;
for(int i=0; i<n; i++)
{
for(int j=0; j<i; j++)
{
if(sicaklik[i] == -sicaklik[j])
{
flag = 1;
}
}
}
if(flag == 1)
fprintf(stderr, "ters var\n");
else
fprintf(stderr, "ters yok\n");
return flag;
}
int gerekenleri_tersle(_Bool flag, int min, int sicaklik[], int min_index)
{
if(flag == 1 && min<0)
{
min = -min; fprintf(stderr, "birinci\n");
}
if(flag==0 && min>0 && sicaklik[min_index] <0)
{
min = -min; fprintf(stderr, "ikinci\n");
}
return min;
}
void sonucu_yazdir(int min)
{
printf("%d\n",min);
}