Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Стандартный цикл обработки строкиСодержание книги
Похожие статьи вашей тематики
Поиск на нашем сайте
1) char str[80]; for (i=0; str[i]!=0; i=0) { алгоритм обработки str[i]/*(str+i) } 2) перебор строки, когда переменная цикла – адрес текущего символа char *pBegin=new char[80]; char *p; // адрес текущего символа for (p=pBegin;*p!=0;p++) { алгоритм обработки текущего символа *p }
Задача: дана строка, вычислить её размер
СТАТИЧЕСКИ int main(void) { char str[80]; int i, kol; cin.getline(str,80); for(kol=0,i=0;str[i]!=0;i++) kol++; cout<<kol<<endl; return 0; }
ДИНАМИЧЕСКИ int main(void) { char *p=new char[80]; int n=0; cout << "\n vvedite stroky "; cin.getline(p,80); // цикл построен таким образом, что p содержит адрес текущего символа while(*p!=0) { n++; p++; // Увеличиваем адрес для перехода к следующему символу } cout << "\n kolichestvo=" << n << endl; return 0; } + 24.Одномерные числовые массивы в языке С++: объявление (статически), инициализация, доступ к элементам массива, стандартный цикл обработки. Одномерные числовые массивы Особенность – любая обработка численного массива – цикл. Под числовой массив выделяем памяти столько, сколько необходимо. Статические массивы 1) Как объявить? Размерность задается только константным данным(или целым) #define SIZE 7 или const int SIZE=7; int mas[SIZE]; или int mas1[SIZE]={1,2,3,4,5,6,7}; // с инициализацией После выделения памяти в элементах массива находится «мусор». При объявлении массива возможна инициализация. Если количество инициализирующих меньше, чем необходимо, остальные обнуляются. Если больше – ошибка компиляции.
2) Как определить адрес и значение элемента массива? Имя массива – константный адрес первого элемента массива. mas+i – адрес элемента с индексом i *(mas+i) или mas[i]– значение элемента с индексом i
Динамические массивы Размер может задаваться константным или переменной, значение которой должно быть определено присваиванием или вводом. Память выделяется в процессе выполнения программы. const int SIZE=7; // или #define SIZE 7 int *p=new int[SIZE];
Указатель инициализируется адресом первого байта
p+i – адрес элемента с индексом i *(p+i) или p[i] – значение элемента с индексом i Перебор элементов for (i=0;i<n;i++)
//Обращение к элементам массива по имени осуществляется по индексу, значение которого начинается с нуля. mas[0]=1 mas[1]=2; mas[2]=3;
ð for(i=0;i<SIZE;i++) { алгоритм обработки i-го элемента; cin>>* (a+i) или cin>>a[i]; } + 25.Двумерные числовые массивы в языке С++: объявление (статически), инициализация, доступ к элементам массива, стандартные циклы обработки. Многомерные массивы на примере матриц #define RAZ1 2 #define RAZ2 4 … #define RAZN 7 // объявление многомерного массива
int MAS[RAZ1][RAZ2]…RAZ[N];
Элементы массива лежат в памяти последовательно – друг за другом, так, что быстрее всего изменяется самый правый индекс. // Двумерный массив располагается построчно. a [0] [0], a [0] [1], a [0] [2] a [1][0], a [1] [1], a [1] [2]
Матрицы Матрицы имеют два набора. Элементы матрицы лежат в памяти по одному, друг за другом, построчно. Статические матрицы Как объявить матрицу? Размер – константное данное #define STR 3 #define STLB 4 или const int STR=3, STLB=4; int A[STR][STLB]; int B[STR][STLB]={ ,5,6,7,8,9,10,11,12}; // с инициализацией, где 1,2,3,4 – первая строка, 5,6,7,8 – вторая строка, 9,10,11,12 – третья строка. int C[STR][STLB]={{1,2,3},{5,6,7,8},{9,10,11,12};
2) Адрес элемента матрицы A[i] – адрес i-ой строки, т.е. адрес 1-го элемента в i-ой строке 0<=i<STR A[i]+j – адрес элемента матрицы 0<=i<STR 0<=j<STLB 3) Значение элемента матрицы *(A[i]+j) или A[i][j]
Динамические матрицы Работаем как с одномерным массивом. Как объявить матрицу? Размер – константное данное или переменная int STR, STLB; cin>>STR>>STLB; int *p; p=new int[STR*STLB] … delete []p;
2) Адрес элемента массива p+i*STLB – количество в полных строках p+i*STLB+j – смещение по неполной строке
3) Значение элемента массива *(p+i*STLB+j) или p[i*STLB+j]
Циклы перебора матрицы Пусть есть матрица A, STR=3 и STLB=4 a00 a01 a02 a03 a10 a11 a12 a13 a20 a21 a22 a23
Способ: перебор конкретной строки с номером N N--; // номер превратился в индекс строки for (j=0; j<STLB; j++) { алгоритм обработки a[n][j] }
Способ: перебор всей матрицы построчно for (i=0; i<STR;i++) { for(j=0;j<STLB;j++) { алгоритм обработки } //конец i-ой строки }
Способ: перебор конкретного столбца с номером M
M--; // номер превратился в индекс столбца for (i=0;i<STR;i++) { алгоритм обработки }
|
||||
Последнее изменение этой страницы: 2016-06-06; просмотров: 568; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.133.117.107 (0.011 с.) |