Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Последовательный поиск элемента массиваСодержание книги Поиск на нашем сайте
#include <conio.h> #include <stdio.h> #include <stdlib.h> #define n 5 void main () { int a[n], i, k, num=-1; clrscr (); randomize (); for (i=0; i<n; i++); { a[i]=random (10); printf (“%3i”, a[i];) } Printf (“\nk=”); Scanf (“%i, &k”); for (i=0; i<n; i++); if (a[i]==k) { printf (“a[%i]=%i\n”, i, a[i]); num=i; } If(num<0) Printf (“Not”); Getch(); } Лабораторная работа №10 «Составление программ с использованием случайных чисел» Вариант 3: Найти минимальное число из 10 случайных чисел. Диапазон генерации случайного числа задается пользователем в начале работы программы.
#include <stdio.h> #include <stdlib.h>
Void main () { int a[n], i,s, min; 6 [3209]" strokeweight="2pt">
Randomize();
Scanf (“%i”,&s); Scanf (“%i”,&k)
{
If(a[i]<min) min=a[i]; Printf(“%3i”,a[i]);
Getch (); { Getch();
Лабораторная работа №11 Вариант 3: Массив A из 10 элементов заполняется случайными числами от 0 до 9. Сформировать новый массив B, заполенный элементами массива A в обратном порядке (Пример: A:0,1,2,3,4,5,6,7,8,9; B:9,8,7,6,5,4,3,2,1,0) Вывести на экран массивы A и B.
#include <conio.h> #include <stdio.h> #include <stdlib.h> void main () { int a[10],b[10],i,n=9; clrscr(); randomize (); for (i=0;i<10;i++) { a[i]=random (10); printf ("%3i",a[i]); for (i=0;i<10;i++) { b[i]=a[n]; n--; printf ("%3i",b[i]); } getch(); }
Сортировка массивов Сортировка массива методом прямого массива (методом пузырька). Сущность метода заключается в том, что соседние элементы массива сравниваются между собой и в случае неправильного расположения они меняются местами (первый со вторым, второй с третьим и т.д.). Последовательное сравнение всех для сортировки массива из n элементов, требуется n-1 проходов.
Сортировка массива методом прямого обмена (метод пузырька)
#include <stdio.h> #include <conio.h> #include <stdlib.h> # define n 5 Void main () { Int a[n],i,k,p,temp; Clrscr(); Randomize(); For (i=0;i<n;i++) { A[i]=random(10); Printf (“%3i”,a[i]); } Printf (“\n”); For (i=0;i<n;i++) { P=0; For (k=0;k<n-i-1;k++) If (a[k]>a[k+1]) { Temp=a[k]; a[k]=a[k+1]; a[k+1]=temp; P++; } If (p==0) break; } For (i=0;i<n;i++) Printf (“%3i”,a[i]); Getch (); }
Оптимизация алгоритма сортировки осуществляется двумя методами: 1. Сокращением длины прохода (т.к. один элемент за проход встает на свое место); 2. За счет сокращения количества проходов (вводится счетчик количества перестановок за проход, и если после очередного прохода он равен нулю, то массив считается отсортированным и сортировка прекращается);
Сортировка прямым выбором Суть метода заключается в том, что в массиве ищется минимальный элемент и ставится на первое место, затем в оставшейся части массива снова ищется минимальный элемент и ставится на второе место и т.д. Поиск минимального элемента и перестановка составляют проход.
Сортировка массива методом прямого выбора.
Метод пузырька лучше использовать с массивом из 10 элементов так как на это уйдет меньше времени, чем методом прямого выбора потому что пузырек сделает 9 проходов, в то время как прямой выбор будет производить 100 проходов.
Метод прямого выбора лучше использовать с массивом из 10000 потому что в пузырьковой сортировке потребуется 9999 проходов.
Сортировка методом прямого выбора
#include <stdio.h> #include <conio.h> #include <stdlib.h> # define n 10 void main () { int a[n],i,k,min,n_min,temp; clrscr(); randomize(); for (i=0;i<n;i++) { a[i]=random(10); printf (“%3i”,a[i]); } for (i=0;i<n-1;i++); { min=a[i]; n_min=i; for (k=i+1;k<n;k++) if (a[k]<min) { min=a[k]; n_min=k; } temp=a[i] a[i]=a[n_min]; a[n_min]=temp } printf (“\n”); for (i=0;i<n;i++) printf (“%3i”,a[i]); getch (); }
Бинарный поиск в массиве Бинарный поиск производится в предварительно отсортированном, по возрастанию массиве. Сущность бинарного поиска состоит в том, что в исходном массиве выбирается элемент, с индексом «C» и его значение сравнивается с искомым. Если значения совпали, то поиск заканчивается. Если значение элемента больше чем элемента с индексом «С», то поиск производится в части массива с индексами меньшими C. Т.е. в процессе поиска сдвигается граница интервала в котором ищется требуемое значение, причем сдвигается либо верхняя, либо нижняя граница, поиск заканчивается, когда верхняя и нижняя границы совпадут.
#include <stdio.h> #include <conio.h> #define n 10 Void main() { Int a[n],I,b,c; Int low =0; high=n-1; For (i=0;i<n;i++) { A[i]=I; Printf (“%3i”,a[i]); } Printf (“\n”); Scanf (“%i”,&b); While (low<high) { C=(high+low)/2; If (a[c]<b) Low=c+1; Else High=c; } If (a[low]==b) Printf (“a[%i]=%i,low,a[low]); Else Printf (“NO”); getch (); }
Многомерные массивы
Float a[5][10] – пример описания двумерного массива.
Двумерный массив трактуется как одномерный массив, элементами которого является массив с указанным в описании типом элементов.
Данная запись объявляет массив из 5-ти элементов каждый из которых есть массив из 10-ти вещественных чисел. Отдельные величины этого массива обозначаются именами с двумя индексами. Порядок расположения элементов в памяти такой что прежде всего меняется последний индекс, затем предпоследний и так далее и лишь один раз пробегает свои значения первый индекс. В двумерном массиве первый индекс – это индекс строки, второй – индекс столбца. Таким образом массив располагается в памяти по строкам. При описании многомерных массивов их можно инициализировать. Инициализация – это задание начальных значений.
int B[3][3]={11,12,13,21,22,23,31,32,33};
Лабораторная работа № 13 Вариант №3
#include <stdio.h> #include <stdlib.h> #include <conio.h> void main () { int a[1][1],i,n,m,k; clrscr(); randomize(); \\printf ("Enter the number of lines "); scanf ("%i",&m); \\printf ("Enter the number of column "); scanf ("%i",&n); for (i=0;i<n;i++) { for(k=0;k<m;k++) { a[i][k]=random(6+6+1)-6; if (a[i][k]<0) a[i][k]=0; printf ("%3i",a[i][k]); } printf ("\n"); } getch();
Указатель
Указатель – это адрес поля памяти занимаемого программным объектом. Формат описания указателя: Тип *имя_указателя; Операция взятия адреса переменной – &; Применение этой операции к имени переменной дает в результате её адрес в памяти.
Int a=5; Char c=”G”; Float r=1.2;
Int *pti; pti=&a; pti=>FFC0 Char *ptc; ptc=&a; ptc=>FFFC2 Float *ptf; ptf=&a; ptf=>FFC3
Указателем могут присваиваться значения адресов объектов только того типа, с которым они описаны.
В заголовочном файле <stdio.h> определена константа – нулевой указатель с именем NULL, после её присвоения к указателю в нем будет отсутствовать какой либо адрес. Операция разадоресации – *. С её помощью можно сослаться через указатель на соответствующую переменную.
Int a=5; Int *pti=&a; Int b; B=a+5; => b=*pti+5;
Указатели и массивы
Имя массива трактуется как указатель – константа на массив. Int x[10] X=&X[0] X[0] => *(X+0) => FF00 X[1] => *(X+1) => FF02 X[N] *(X+N);
Доступ к элементам массивов, кроме индексированных имен, можно организовать через указатели по принципу ИМЯ [индекс]ó*(имя+индекс); Для указателей работают свои правила сложения: 1. Если к указателю добавить число, то значение адреса хранимого указателем изменится не на это число а на величину равную (число*размер типа указателя);
Int x[10] Int y[10] X=Y – неправильная запись, так как нельзя изменять константу;
X[i][k] i*10+k; *(x+i*10+k); X+I – сложение адресов; I*10 – длинна строки; *(*(k+i)+k);
В языке Си, символ «[]» играет роль, знака операции сложения адреса массива с индексом элемента массива.
Символы и символьные строки
Char – символьный тип данных; Тип записи: Char= a’5’; Размер типа char 1байт, каждому символу присваивается свой код. Функции ввода с клавиатуры: a=getch(); scanf(“%c”,&); putch(a); printf (“%c”,a); printf (“%i”,a); Заголовочный файл <ctype.h> объявляет функции для проверок символов. Функции возвращают не нулевое значение (истинна), когда аргумент удовлетворяет описанному условию или принадлежит указанному классу символов и нуль в противном случае.
Tolower(c) – переводит с на нижний регистр; Toupper(c) – переводит с на верхний регистр;
В языке «Си» нет специально определенного строкового типа данных. Символьные строки организуются как массивы символов, последний из которых \0, внутренний код которого равен нулю. Char a[20]=”word”; Char a[]=”word”; Char a[]={‘w’,’o’,’r’,’d’,’\0’}; <string.h> Gets(str); -ввод Puts(str); -вывод Аргументами функций является имя строки. #include <stdio.h> #include <string.h> #include <conio.h> void main () { char C,S[10]; int i; clrscr(); printf ("vvod stroki"); gets (S); for (i=0; i<=(strlen(S)-1)/2;i++) { C=S[i]; S[i]=S[streln(s)-i-1]; S[strlen(S)-i-1]=C; } printf ("\n perevernutaya stroka"); puts(S); }
Char a[20]={‘a’,’B’,’c’,’D’,’e’,’F’,’\0’}; Char b[20]=”fedcba”
Strcat Strcat(a,b); Объединяет Строка 1 и Строка 2 и записывает результат в Строка2 Printf (“String 1:%s\n”,a); Printf (“String 2:%s\n”,b); Результат: String 1: aBcDeFfedcba String 2: fedcba
Strcpt Strcpy(a,b); Printf (“String 1:%s\n”,a); Printf (“String 2:%s\n”,b); Результат: String 1: fedcba String 2: fedcba Strlen Strlen(строка) Int l; l=strlen(a); Printf (“String 1: %i\n”,l); Результат: String 1: 6;
Strcmp Strcmp (Строка1, Строка2) l=strcmp(a,b); printf (“String 1<String 2: l=%i\n”,l); l=strcmp(b,a); printf (“String 1>String 2: l=%i\n”,l); l=strcmp(a,a); printf (“String 1=String 2: l=%i\n”,l); Результат: String 1< String 2: l=-5 String 1> String 2: l=5 String 1= String 2: l=0 Strlwr Strlwr (Строка) Scrlw(a); Printf (“String 1: %s\n”,a); Результат: String 1: abcdef
Strupr Strupr (Строка) Strupr(a); Printf(“String 1:%s\n”,a); Результат: String 1: ABCDFEF
Strset Strset (Строка, Символ) Strset(a,’*’); Результат: String 1:*****
120 дней суддома
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Последнее изменение этой страницы: 2017-01-25; просмотров: 455; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.10 (0.007 с.) |