Консультация № 138599
29.05.2008, 23:22
0.00 руб.
0 3 1
Дан одномерный массив А, состоящий из N элементов. Найти первый и последний положительные элементы массива и подсчитать количество элементов, заключенных между ними

Обсуждение

Неизвестный
29.05.2008, 23:28
общий
Массив – это группа элементов одинакового типа. Форма объявления массива на языке Си следующая:тип_данных имя_массива[размер];«Тип_данных» задает тип элементов массива, «размер» — коли-чество элементов в нем. Элементы массива в Си нумеруются на-чиная с нуля! Обращение к элементам массивов происходит по индексу, который записывается после имени массива в квадратных скобках – page[l]— обращение ко второму элементу массива, bigmas[0][0] – обращение к элементу двумерного массива. При задании массива возможна и его инициализация. В этом случае присваиваемые значения указываются в виде списка в фигурных скобках. Размер списка начальных значений не должен превышать размерность объявляемого массива. Если размер массива не указан, то он определяется по числу начальных значений:intday[]={31,28,31,30,31,30,31,31,30,31,30,31};Для работы с массивами удобно использовать указатели –объекты, предназначенные для хранения адресов других объектов. Указатель объявляется следующим образом:тип_данных * имя указателя;Если имеется целочисленный массив, объявленный как int a[10] и указатель на целое значение, объявленный как int * pa , то в ре-зультате операции pa=&a[0] указатель будет содержать значение адреса начального элемента массива. Эквивалентной будет сле-дующая форма записи: pa=a. Для обращения к элементам массива через имя указателя могут использоваться еще две формы записи: pa[i] или *(p+i).
Неизвестный
30.05.2008, 20:29
общий
это ответ

<i>Здравствуйте, <b>Савчук Павел</b>!</i>

Пример решения задачи с комментариями находится в приложении (для С++).

<em>Удачи!</em>

Приложение:
#include <iostream>#include <cstdlib>#include <ctime>using namespace std;int main(){ // Размер массива const int N = 10; int A[N]; int i; // Инициализируем генератор // случайных чисел srand(time(NULL)); // Заполняем массив случайным образом for (i = 0; i < N; i++) { // Диапазон -200..200 A[i] = (rand() % 401) - 200; cout << A[i] << " "; } cout << endl << endl; // Начало массива int *iStart = &A[0]; // Конец массива int *iEnd = &A[N-1]; // Ищем первый положительный элемент for ( ; (iStart != iEnd) && (*iStart <= 0); ++iStart); // Ищем последний положительный элемент for ( ; (iEnd != iStart) && (*iEnd <= 0); --iEnd); // Если найденное число не положительное if (*iStart <= 0) cout << "В массиве нет положительных элементов\n"; // Если первое положит. число == последнему else if (iStart == iEnd) cout << "В массиве только один положительный элемент\n"; else { cout << "Между первым и последним положительными элементами "; // Расчитываем количество элементов между первым // и последним положительными элементами массива // Сами элементы не учитываются cout << (iEnd - iStart - 1) << " элементов\n"; // Можно еще вывести эти самые элементы: // for (iStart++; iStart != iEnd; ++iStart) cout << (*iStart) << " "; } cout << endl; return 0;}
Неизвестный
30.05.2008, 21:28
общий
Огромное спасибо
Форма ответа