Главная Обратная связь

Дисциплины:






Бір өлшемді массивтерге амалдар қолдану



Мысал №19. Берілген бір өлшемді массив элементтерінің қосындысы мен орташа мәнін есептеу.

Массив элементтері x[i], i=0,1,2,…,n-1, олардың қосындысы s және орташа мәні d деп белгіленген. Осы есептің прог/ң мәтіні келесі түрде жазылады:

/*Massiv elementterinin kosyndysymen ortashasyn tabu*/

#include<stdio.h>

Void main()

/*vychislenie summy I srednego*/

{

Int n,i,j;

Float s,d,x[100];

While (1)

{

Printf(“\n Vvedite znachenie n=”);

Scanf(“%d”,&n);

If(n>0 && n<=100) break;

Printf (“\n Oshibka! Neobchodimo 0<n<101”);

} /*Konez zikla vvoda znachenij n*/

Printf(“\n Vvedite znachenij elementov:\n ”);

For(b=0.0, i=0; i<n; i++)

{

Printf(“x[%d]=”, i);

Scanf(“%f”, &x[i]);

S+= x[i]; /*Vychislenie summy */

}

D=s/n; /*Vychislenie srednego */

Printf (“\n Summa = %f, Srednego = %f”,s,d);

}

Мұндағы While (1) операторында алдын –ала 1жазылған; ол дегеніміз break операторы арқылы циклдан n ге тек дұрыс мән (0<n<101) берілгенде ғана швғуға болатынын көрсетеді.

Мысал №20. Берілген бір өлшемді массивтің ең кіші элементі мен оның номерін анықтау.

Прог/да келесі белгілеулер енгізілген a[i] - массив элементі, x-массивтің ең кіші элементінің мәні, k-ең кіші элементтің номері.

/*opredelenie naimenshego elementa massiva */

#include<stdio .h>

Void main( )

{

Int I, k, n;

Float a[100], x;

While (1)

{

Printf (“\n Vvedite znachenie n=”);

Scanf(“%d”, &n);

If (n>0 && n<100) break;

Printf(“\n Oshibka! Neobchodimo 0<n<100!”);

}

Printf(“\n Vvedite znachenie elementov : \n”);

For (i=0; o<n; i++)

{

Printf(“a[%d]=”,i);

Scanf(“%f”, & a[i]);

}

X=a[0];

For(i=0; i<n; i++)

If(x>a[i])

{

X=a[i]; k=I;

}

Printf(“Naimenshi element x=%f \ nEgo nomer k= %d\n”, x,k);

}

Мысыл№21 Енді массивті сорттау туралы есептің қарапайым түрі – массивті элементтерінің өсуі бойынша орналастыру. Берілгені келесі n элементтен тұратын массив:

a[0],a[1],a[2],….,a[n-1]

/*Uporjdochenie massiva */

#include<stdio.h>

Mai( )

{

Int n, I, j;

Double a[100], b;

While (1)

{

Printf(“\n Vvedite kolichestvo elementov n=”);

Scanf(“%d”, &n);

If(n>1 && n<100) break;

Printf(“Oshibka! Neobchodimo 1<n<100!”);

}

Printf(“\n Vvedite znachenij elementov massiva: \n”);

For(j=0; j<n; j++)



{

Printf(“a[%d]=”, j+1);

Scanf(“%lf”, &a[j] );

}

For(i=0; i<n-1; i++)

For(j=i+1; j<0; j++)

If(a[i]>a[j] )

{

b=a[i];

a[i]=a[j];

a[j]=b;

}

Printf(“\n Uporidochenni massiv:’\n”);

For(j=0; j<n; j++)

Printf(“a[%d]=%5.lf\n” , j+1, a[j]);

}

 

Массивтермен жұмыс істегенде, олардың элементтерінің алғашқы мәндерін алдын-ала беруге болады; оны инициализация жасау д/а. Ондай жағдайда массив элементтер/ң санын көрсетудің қажеті болмайды. Егер массив элементтер/ң алғашқы мәндері берілсе, компилятор алғашқы мәндерінің саны бойынша массивтің элементтерінің санын өзі анықтайды. Мысалы, float d[ ]={3.4, 4.5, 6.3, 2.1, 2.1, 7.8};

Мұндағы: d[0]=3.4; d[1]=4.5; d[2]=6.3; d[3]=2.1; d[4]7.8;

Мысал №22. Екі вектордың арасындағы бұрышты табудың прог/сы қарастырылсын. Берілген екі вектордың компоненттері алдын-ала инициализация жасау арқылы анықталған: біріншісі жоғарыда көрсетілген d[ ] массиві, ал екіншісі – c[ ] = {2.1, 7.5, 3.4, 6.2, 5.4}.

Векторлар арасындағы бұрышты табу үшін келесі формула қолданылады:

,

Мұндағы:

 

екі вектордың скалярлық көбейтіндісі;

бірінші вектордың модулі;

екінші вектордың модулі.

#include<stdio.h>

#include<math.h>

Void main()

{

Int n=5,k;

Float d[]={3.4, 4.5, 6.3, 2.1, 7.8};

Float c[]={2.1, 7.5, 3.4, 6.2, 5.4};

Double dd,cd,alfa,beta,sd,sc,s;

S=sd=sc=0;

For(k=0; k<5; k++)

{

s+=d[k]+c[k];

sd+=d[k]*d[k];

sc+=c[k]*c[k];

}

Dd=sqrt(sd);

Cdsqrt(sc);

Alfa=acos(s/(dd*cd));

Printf(“\n Ugol mejdu vektorami v radianach: alfa=%lf”,alfa);

Beta=180*alfa/PI;

Printf(“\n Ugol mejdu vektorami v gradusach: beta=%lf”, beta);

}





sdamzavas.net - 2020 год. Все права принадлежат их авторам! В случае нарушение авторского права, обращайтесь по форме обратной связи...