Автор работы: Пользователь скрыл имя, 17 Октября 2013 в 06:39, реферат
Мұндағы , өлшем – бір өлшемді массивдардың элементінің саны.
массив өлшемі константамен немесе константалық өрнекпен анықталады. массив өлшемін айнымалы етіп беруге болмайды, мұндай жағдайда жадыны динамикалық бөлу тәсілі қолданылады. а массивтың бірінші элементі а[0], екіншісі - а[1], …, бесінші элементі - а[4]. Си тілінде индекстің массивтың шегінен шығып кетуі бақыланбайды. массивтың өлшемін, индексін программист бақылайды.
Массив немесе жиым – бір типтегі элементтердің реттелген жиыны. Олар бір атаумен – идентификатормен аталады да,индексті айнымалы ұғымына сәйкес келеді.
№ 6, 7 Дәріс.
Тақырыбы: Бір өлшемді массив. Массивті өңдеу.
Массив анықтамасы.
Массив дегеніміз — реттелген біртекті елементтердің жиыны.
Массив сипаттау Тип массив аты [өлш1] [өлш2] ...[өлшМ];
Массив өлшемі const 1 немесе const өрнек арқылы беріледі. СИ - де массивтің өлшемінен шығып кетуі тексерілмейді (қателік шықпайды) бір өлшемді массив қарастырайық. СИ тіліндегі бір өлшемді массив индекстері 0-ден басталады. Программадағы бір өлшемді
Массив былай жарияланады:
<Тип> < жиымның аты >[өлшемі];
Мұндағы , өлшем – бір өлшемді массивдардың элементінің саны.
массив өлшемі константамен немесе константалық өрнекпен анықталады. массив өлшемін айнымалы етіп беруге болмайды, мұндай жағдайда жадыны динамикалық бөлу тәсілі қолданылады. а массивтың бірінші элементі а[0], екіншісі - а[1], …, бесінші элементі - а[4]. Си тілінде индекстің массивтың шегінен шығып кетуі бақыланбайды. массивтың өлшемін, индексін программист бақылайды.
Массив немесе жиым – бір типтегі элементтердің реттелген жиыны. Олар бір атаумен – идентификатормен аталады да,индексті айнымалы ұғымына сәйкес келеді.
Көп өлшемді
массив келесі ұлгі бойынша сипатталады.
Массив атының типі[1-өлшем][2-өлшем]…[n-
Екі өлшемді массивтер І
Мысалы а[3][4]. ӘВМ зердесінде 2 өлшемді массив жол бойынша сақталады.
Массивке мән беру
Си тілінде массивке мән берудің арнайы мүмкіндігі бар. Ең қарапайым түрі массивті сипаттау кезінде мәндерді фигуралық жақшалар ішінде жазу. Мысалы: Float ff[4]={7.9,8,9,5.7,7,0}
Мән берудің басқа түрі — меншіктеу операторлары түрінде жазу. Мысалы, А[0]=5; а[1]=7; а[3]=8;
Көп өлшемді массивтер үшін оларды массив ішіндегі массив түрінде жазуға болады. Мысалы: Inta[3][2]= {1,7,9,7,8,5} Немесе Inta[3][2]={{!,7},{9,7},{8,5}}
Массивті сипаттау және оған мән беру кезінде өлшемді дәл кәрсету міндетті емес. Мысалы, Int a []={!,8,0,5,8,6}
Көп өлшемді массивке мәндер беру кезінде өлшемді тек ең сол жақтағы жақшада ғана кәрсетпеуге болады.
Символдар массиві
Мысалы char str[ll];
Жолды шығару үшін не printf ( ) не puts ( ) функциялары қолданылады.
Бір өлшемді Жиын мына операторлармен сипатталады:
аттың типі [өлшемі];
Мысалы:
# include <stdio.h>
# define KO3
main ()
{ int mas[KO],i;
int mas[KO],i;
mas[0]=123
mas[1]=456
mas[2]=1990
printf(“Айнымалылардың адресі:”);
for (i=0;i<KO;i++);
printf(“\n айнымалының мәні:”);
for (i=0;i<KO; i++)
printf(“%5d”, mas[i]);
printf(“\n”); }
Жиымнің әлементтері 0-ден бастап номерленеді (индексацияланады), яғни соңғы әлемент мына форматта болады.
Массиы аты [1- өлшемі]
Жиым үшін бұлінген байттың саны, мына өрнек бойынша анықталады:
өлшемі *(size of(типі))
Жиым элементтерін енгізу немесе оларды түрлендіру үшін цикл опера торы қолданылады. Төменде 10 элементі бар жиымды 0-ден 9-ға дейінгі сандармен толтырып, сонан кейін оларды кері бағытта экранға шығару мысалы көрсетілген:
main ()
{
int ia[10];
int index;
for (index = 0; index <10; index ++)
ia[index] = index ;
for (index = 9; index >=0; index --)
printf(“ %i”, ia[index]);
Си тілінде жиымды жиымға бірден теңестіруге болмайды, мыс., а0, а1, а2, ... , а9 және с0, с1, с2, ... , с9 жиымдары үшін а=c деп_жазуға болмайды. Олардың элементтерін цикл ішінде бір-біріне біртіндеп теңестіру керек.
int a[9], c[9];
…
a=c; // қате
Мұның орнына мынадай цикл жазу керек:
int a[9], c[9];
for (int i=0; i<9; ++i)
a[i]=c[i];
Бір өлшемді жиыммен жұмыс істеу мысалы.
Бір өлшемді бүтін а жиымының ең үлкен элементін және оның индексін тауып, оны бірінші элементпен алмастырыңыз.Сонымен қатар программа берілген жиымның оң және теріс элементтерінің сандарын анықтайтындай болуы керек.
Программа былай жазылады:
#include <stdio.h>
#include <conio.h>
void main(void)
{ int a[4]={-1,-20,4,100}; // жиымды инициалдап сипаттау
// индексі 0- ден 3- ке дейін өзгереді
int i,index,max,kp,ko;
clrscr();
puts("\n БАСТАПҚЫ ЖИЫМ\n");
for (i=0; i<4; i++)
printf("%d ",a[i]); // бастапқы жиымның элем баспаға шығару max=a[0]; kp=0; ko=0;
for (i=1; i<4; i++)
{ if (a[i]>max) {
max=a[i]; index=i; }
}
a[index]=zam; a[0]=max;
for (i=0;i<4;i++)
{
if (a[i]<0) ko=ko+1;
else kp=kp+1;
}
puts("\n ПРОГРАММАНЫҢ ЖҰМЫСЫНЫҢ НӘТИЖЕЛЕРІ\n");
for (i=0; i<4; i++)
printf("%d ",a[i]); // Жиымның элементтерін ш ы ғ а р у
printf("\n Жиымның оң элементтері : %d \n",kp);
printf(" \n Жиымның теріс элементері: %d,\
\n\n Press any key...",ko);
getch();
}
Есеп. Бүтін оң және теріс сандардан тұратын a[n] массивінің жұп нөмірлі элементте рі н ің қосын дысын табу керек, мұнда n саны енгізіледі, ал жиым элементтері нің мәндері кездейсоқ бүтін сандар дан тұрады. rand() функциясы 0...32767 аралығындағы бүтін сан береді. Оны қолдану үшін stdlib.h директивасын қолдану қажет. Жиым элементтері екі разрядты оң және теріс сандардан тұруы үшін алынған кездейсоқ сан 100-ге көбейтіліп онан 50 алып тасталынған.
//сумма четных элементов массива
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
main()
{
int a[50];
int n;
printf("\nРазмерность массива : ");
scanf("%d",&n);
for(int i=0;i<n;i++)
{
a[i] = rand() % 100 - 50; // случайные числа до 32767
printf("%i ",a[i]); // далее остаток от 100 и - 50
}
int sum=0;
for(i=0;i<n;i+=2)
sum+=a[i]; //элементы с индексами 0, 2, 4...
printf("\nсумма четных элементов массива : %i",sum);
}
Есеп: Бүтін сандардан құралған А(10) бір өлшемді жиымы (массиві) берілген. Сол массивтің оң элементтерінің қосындысын табу
керек.
// Сумма положительных //элементов массива А[10]
// массив вводится
#include <conio.h>
#include<stdlib.h>
#define n 10
main ()
{int i=0,s=0;
int a[n];
textcolor(RED);
textbackground(WHITE);
clrscr();
while (i<n)
{
printf("a[%i]=",i);
scanf("%i",&a[i]);
if (a[i]>0)
s=s+a[i];
i=i+1;
}
printf("нaтиже= %d\n",s);
printf("\nаяkтау yшiн Enter");
getch();
}
Есеп: Бүтін сандардан тұратын А(n) бір өлшемді жиымы (массиві) берілген. Сол массивтің ең үлкен элементін және оның
индексін анықтау керек.
// Определение max a[n] и его индекса
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
main ()
{
int max,n,k,i,a[100];
printf("\nРазмерность массива : ");
scanf("%d",&n);
printf("Элементы массива:");
for(i=0;i<n;i++)
{a[i] = rand() % 100 - 50; // случайные числа до 32767
printf(" %i ",a[i]);} // далее остаток от 100 и - 50
// определение максимума
max=a[0];k=0;
for (i=1;i<n; i++)
if (a[i]>max)
{max=a[i]; k=i;}
printf("\nmax = %d его индекс=%d\n",max,k+1);
getch();
}
Мысал: Бүтін сандардан тұратын А[15] бірөлшемді массиві берілген. Массивтің оң элeменттерінің геометриялық ортасын
анықтау керек.
/* Дан целочисленный массив A[15], определить геом. среднее элементов > 0 */
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define n 15
main ()
{
int a[n],i;
printf("\nЭлементы массива:");
for(i=0;i<n;i++)
{a[i] = rand() % 100 - 50; // случайные числа до 32767
printf(" %i",a[i]);} // далее остаток от 100 и - 50
// определение произведения и кол-ва пол. эл-тов
i=0; // начальный индекс = 0
float p=1.0; // произведение положит. эл-тов
int k=0; // кол-во положит. эл-тов
do
{ if (a[i]>0) { k++; p*=a[i];}
i++;
}
while (i<n);
printf("\nкол-во пол эл-тов : %d\n",k);
p=pow(p,1.0/k);
printf("cp геом = %f",p);
getch();
}
Бақылау сұрақтары:
1. Массив немесе жиым дегеніміз не?
2. Массивті қалай сипаттауға болады?
3. Жиым элементтерін енгізу немесе оларды түрлендіру үшін қандай опера тор қолданылады?
4. Си тілінде жиымды жиымға бірден теңестіруге болама?
5. Жиымды жиымға қалай теңестіруге болады?
6. rand() функциясының қызметі қандай?
7. rand() функциясын қолдану үшін қандай директиваны қолдану қажет?
Информация о работе Бір өлшемді массив. Массивті өңдеу. Массив анықтамасы