Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Копия Си лекция каз.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
3.05 Mб
Скачать

Void main()

{

int a[100];

int n;

printf("\nEnter the size of array:", n);

scanf("%i",&n);

for(int I=0;I<n;I++)

{ a[I]=rand()%100-50;

printf(" %i ", a[I]);

}

int max=a[0];

for(I=1;I<n;I++)

if (a[I]>max) max=a[I];

printf("\nMax= %i", max);

getch();

}

2 есеп. Жиымның жұп индексті элементтері қосындысын анықтау.

/* 0, 2, 4... индексті элементтер қосындысын табу */

#include<conio.h>

#include<stdio.h>

#include<stdlib.h>

Void main()

{

int a[100];

int n;

printf("\nEnter the size of array:", n);

scanf("%i",&n);

for(int I=0;I<n;I++)

{a[I]=rand()%100-50;

printf(" %i ", a[I]);

}

int Sum=0;

for(I=0;I<n;I+=2)

Sum+=a[I];

printf("\nSum= %i ", Sum);

getch();

}

Соңғы циклді басқаша да құрастыруға болады:

//Екінші тәсіл

for(I=0;I<n;I++)

if(I%2==0) Sum+=a[I];

printf("\nSum= %i ", Sum);

2-түрдегі есептер

Жиым ішіндегі екі элементтің бір-бірімен орнын ауыстыру үшін қосымша тағы бір айнымалы керек болады. Мысалы, a[I] және a[J] элементтерінің орнын ауыстыру үшін қосымша R айнымалысы керек: R=a[I]; a[I]=a[J]; a[J]:=R;

3-есеп. Жиым элементтерін кері бағытта орналастыру.

for(int i=0, j=n-1; i<j; i++, j--)

{int r=a[i];

a[i]=a[j];

a[j]=r;}

4-есеп. Жиымның қатар тұрған екі элементін: 1 және 2, 3 және 4, 5 және 6, т.с.с. элементтерін бір-бірімен орын ауыстыру

for(int i=0;i<n-1;i+=2)

{int r=a[i];

a[i]=a[i+1];

a[i+1]=r;}

5 есеп. Жиым элементтерін k орынға солға (оңға) ығыстыру, яғни жылжыту.

int k,i,t,r;

printf(“k = “);

skanf(“%d”,&k);

for(t=0;t<k;t++)

{

r=a[0];

for(int i=0; i<n-1; i++)

a[i]=a[i+1];

a[n-1]=r;

}

3-класс есептері

Жиымдарды синхронды түрде өңдеуде жиымдар элементін қарас­тыру кезінде индекстер бірдей қадамға өзгереді. Мысалы, бүтін сан­дар­дан құралған n элементтерден тұратын 2 жиым берілген делік. Жаңа c жиымы мынадай формула арқылы алынады: c[I]=a[I]+b[I].

for (int I=0; I<n; I++) c[I]=a[I]+b[I];

Жиымдарды асинхрондық өңдеу кезінде әр жиым индексі өз ретті­лі­гімен өзгеріп отырады.

6-есеп. Бүтін сандардан құралған жиымдағы теріс элементтер­дің барлығын оның бас жағына орналастыру керек.

Int b[10]; //қосымша массив

int i,j=0;

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

if(a[i]<0){b[j]=a[i];j++;}

// а-дан b-ға теріс элементтерді көшіріп жазу

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

if(a[i]>=0){b[j]=a[i];j++;}

// а-дан b-ға оң элементтерді көшіріп жазу

for(i=0;i<n;i++) printf (“ %d ”, b[I]);

7 есеп. Жиымның барлық жұп элементтерін жою керек.

int b[10];

int i,j=0;

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

if(a[i]%2!=0){b[j]=a[i];j++;}

for(i=0;i<j;i++) printf (“ %d ”, b[I]);

printf ("\n");

4-класс есептері

Іздеу есептерінде берілген шартқа сәйкес келетін элементті іздеп табу керек. Ол үшін жиым элементтерін біртіндеп тізбектей қарасты­рып отырып шартты тексеріп шығу қажет. Осылай ету барысында цикл­­ден шығудың екі жолы бар:

  • керекті элемент табылғаннан кейін;

  • жиым элементтері тегіс қаралып шықты, керекті элемент табыл­мады.

8- есеп. Берілген k санына тең жиымның алғашқы элементін табу.

int k;

printf("\nK=");

scanf(“%i”,&k);

int ok=0;//элемент табылғаны/табылмағаны белгісі

int i,nom;

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

if(a[i]==k){ok=1;nom=i;break;}

if(ok==1) printf("\nnom=",nom);

else printf("\nk-ға тең элемент жоқ!");

Бақылау сұрақтары

  1. Жиым дегенімз не?

  2. Жиымдарға бастапқы мәндер қал­ай тағайындалады?

  3. Жиымды сипаттау тәсілдері.

  4. Жиым элементтерін енгізу және экранға шығару жолдары.

  5. Кездейсоқ сандарды қалай шығаруға болады?

  6. Жиымға кездейсоқ сандарды мен­шік­теу қалай орындалады?

  7. Жиымды өңдеу есептерінің түр­ле­рі (кластары).

  8. Жиымның ең үлкен (ең кіші) эле­мен­тін анықтау.

  9. Жиым элементтері қосындысын табу.

  10. Жиым ішіндегі екі элемент­тің бір-бірімен орнын алмастыру.

  11. Жиым элементтерін кері бағ­ыт­та орналастыру.

  12. Жиымның көрсетілген элемент­терін өңдеу тәсілдері.

Дәріс№8