Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Последовательный поиск элемента массива ⇐ ПредыдущаяСтр 6 из 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; просмотров: 365; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.117.196.217 (0.395 с.) |