دوست عزیز از طریق کد زیر می تونید میانه رو پیدا کنید .
کد:
#include <conio.h>
#include<iostream>
#include<math.h>
#include <string.h>
using namespace std;
//متغیر ها و آرایه هایی که به شکل سراسری تعریف شده است
int m[100],nm[100],t[100],st[100],n,r, k;
float avr,sum,ss,var;
//******************
//این تابع وظیفه دارد اعداد وارد شده را به صورت صعودی مرتب کند
//m[]این ارایه اعداد اولیه ی هستن که وارد شدن
void sortarray()
{
int k1;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
{
if(m[i]<m[j])
{
k1=m[i];
m[i]=m[j];
m[j]=k1;
}
}
}
//*********************
//این تابع وظیفه دارد ارایه تعداد تکرار اعداد ورودی را مرتب کند
//st[] ارایه تعداد تکرار اعداد ورودی
void sorttekrar()
{
int k1;
for(int i=0;i<=k;i++)
for(int j=0;j<=k;j++)
{
if(st[i]<st[j])
{
k1=st[i];
st[i]=st[j];
st[j]=k1;
}
}
}
//******************
//nm[]همان ارایه اعداد ورودی است ولی بدون تکرار
//ارایه فوق در این تابع پر میشود
//t[]این ارایه متناسب با ارایه بالا تعداد تکرار هر عدد را نشان می دهد
//این ارایه نیز در این تابع پرمیشود
void funmod()
{
nm[0]=m[0];
for(int i=0;i<n;i++)
{
if(nm[0]==m[i])
{
t[0]+=1;
}
}
for(int i=1;i<n;i++)
{
if(m[i]!=nm[k])
{k+=1;
nm[k]=m[i];
for(int i=k;i<n;i++)
{
if(nm[k]==m[i])
{
t[k]+=1;
}
}
}
}
}
//********************
//تابع زیر چک میکند که اگر تعداد تکرار برای همه اعداد ورودی یکسان باشد
//پیغام می دهد که مد ندارد
int modmessage()
{
int a=t[0],b=1;
for(int i=1;i<=k;i++)
{
if(a==t[i])
{
b+=1;
}
}
if(b==k+1)
{
return 0;
}
return 1;
}
//********************
//این تابع ماکسیمم را در ارایه تکرار برمیگرداند تا با استفاده
// از ان مد تعیین شود
int maxtekrar()
{
for(int i=0;i<=k;i++)
{
st[i]=t[i];
}
sorttekrar();
return st[k];
}
//******************
//برنامه ی اصلی
int main()
{
float min;
printf("Enter n...\n\nn=");
scanf("%d",&n);
//عدد اگر از 100 بیشتر باشه دوباره باید وارد کنی
while(n > 100){
printf("Enter N <= 100! :");
scanf("%d",&n);
}
for(int i=0;i<n;i++)
{
scanf("%d",&m[i]);
sum+=m[i];
}
//محاسبه میانگین
avr=sum/n;
for(int i=0;i<n;i++)
{
ss+=(m[i]-avr)*(m[i]-avr);
}
printf("\nmiangin=%f",avr);
//محاسبه واریانس
var=(float)ss/(n-1);
printf("\nvar=%f",var);
sortarray();
//محاسبه میانه
if((n%2)==1)
{
min=(float)m[(n+1)/2];
}
else
{
r=n/2;
min=(float)(m[r-1]+m[r])/2;
}
printf("\nmine=%f",min);
funmod();
if(modmessage()==0)
{
printf("\nMod ndard.");
}
else
{
printf("\nMod =");
int w=maxtekrar();
//با استفاده ماکسیمم ارایه تکرار داده ها
//w
//میتوانیم مد یا مد ها را بدست بیاوریم
for(int i=0;i<=k;i++)
{
if(t[i]==w)
{
printf("%d ",nm[i]);
}
}
}
getch();
return 0;
}