Федеральное агентство связи
БФ ФГОБУ ВПО «СибГУТИ»
Практическая работа №6
По дисциплине: Основы программирования.
Тема: Организация ввода и вывода одномерных массивов в среде Builder C++ и компонентой StringGrid, Memo.
Выполнил: Проверил:
Студент группы Преподаватель
Повт-241 Гусев.И.С Эрдэнеева.Л.И
Улан-Удэ.2015
Цель работы: Приобрести навыки использования операторов ввода-вывода при обработке одномерных массивов.
Задание к лабораторной работе:6. Дана последовательность целых чисел a1,a2,a3,…,an..Выяснить какое число встречается раньше – положительное или отрицательное.
Блок схема:
|
Ответы на контрольные вопросы:
1.Понятие одномерного массива и способы его описания:
Массив —набор однотипных компонентов,расположенных в памяти непосредственно друг за другом, доступ к которым осуществляется по индексу. В отличие от списка, массив является структурой с произвольным доступом
Описание массива имеет следующий вид:
тип элементов <имя массива > [n1 ];
где n1- число элементов массива. Индексы при описании массива задаются константами обычно целого или символьного типа (вещественный тип для индексов массива недопустим).Тип элементов массива может быть любой.
2. Организация ввода одномерных массивов на языке Builder C++:
Пример1:
Ввод элементов одномерного массива с клавиатуры, может иметь следующий вид:
for (i=0; i<n; i++)
{
printf ("A[%d]=",i); scanf ("%d",&A[i]);
}
Пример2:
Заполнение массива случайными числами:
int random (int n);
{
return rand()%n;
}
#include <stdio.h>
------------------------------
randomizer ();
for (i=0;i<n;i++)
{
A[i]=random(100);
}
Пример 3:
Описание и определение:
int A[5]={-1,-2,2,0}
3. Вывод массивов на языке Builder C++:
Вывод одномерного массива из n элементов через пробел:
for (i=0; i<n; i++)
cout >> a[i] >> " ";
Вывод двумерного массива размером (n ´ m) построчно:
for (i=0; i<n; i++) // Для каждой строки
{
for (j=0; j<m; j++) // вывод m чисел через 2 пробела
printf("%5.1f ",a[i][j]); // число в 5 позициях
cout << ' \n '; // переход на след.строку экрана
Алгоритм нахождения суммы и произведение элементов одномерного массива.
Сумма:
s=0;
for(i=0; i<n, i++)
{
s=s+A[i];
}
Произведение:
p=1;
for (i=0; i<n; i++)
{
p=p*A[i];
}
Алгоритм нахождения наибольшего значения элемента одномерного массива и его порядкового номера.
max=A[0];
nmax=0;
for (i=0; i<n; i++)
{
if (A[i]>max)
{
max=A[i];
nmax=i;
}
}
Алгоритм нахождения наименьшего значения элемента одномерного массива.
min=A[0];
for (i=0; i<n; i++)
{
if (min>A[i])
min=A[i];
}
Окно программы:
Текст программы:
#include <vcl.h> |
#pragma hdrstop |
#include "Unit1.h" |
#pragma package(smart_init) |
#pragma resource "*.dfm" |
TForm1 *Form1; |
int n; |
__fastcall TForm1::TForm1(TComponent* Owner) |
: TForm(Owner) |
{ |
} |
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key) |
{ |
if (Key== VK_RETURN) |
StringGrid1->Visible=true; |
} |
void __fastcall TForm1::Edit1Change(TObject *Sender) |
{ |
StringGrid1->Visible=true; |
n=StrToInt(Edit1->Text); |
StringGrid1->ColCount=n; |
} |
void __fastcall TForm1::Button1Click(TObject *Sender) |
{ |
randomize(); |
int a[100],i; |
for (i=0;i<n; i++) |
{ |
a[i]=random(100)-50; |
StringGrid1->Cells[i][0]=IntToStr(a[i]); |
} |
} |
void __fastcall TForm1::Button2Click(TObject *Sender) |
{ |
int a[100],i; |
int sum=0; |
for (i=0;i<n; i++) |
{ |
a[i]=StrToInt(StringGrid1->Cells[i][0]); |
if(a[0]>0) |
Lebel2->Caption="Ответ:"+IntToStr(a[0])+"Положительное" |
else |
Lebel2->Caption="Ответ:"+IntToStr(a[0])+"Отрицательное " |
} |
} |