Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
Минобрнауки России
Федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
«Чувашский государственный университет имени И.Н. Ульянова»
Факультет дизайна и компьютерных технологий
Кафедра компьютерных технологий
КУРСОВОЙ ПРОЕКТ
Дисциплина: Информатика и программирование
Тема: Обработка массивов
Выполнил:
студент гр. зДиКТ 45-11
Теплов Д.И.
Научный руководитель:
доцент Егорова Ю.Н.
Чебоксары 2014
ТЕХНИЧЕСКОЕ ЗАДАНИЕ
на курсовое проектирование
студенту группы зДиКТ-45-11 Теплову Д.И.
1. Тема проекта (работы)
Обработка массивов_____________________________________________
2. Срок сдачи студентом законченного проекта (работы)
01.06.2013 г.____________________________________________________________
3. Исходные данные к проекту (работе)
3.1. Сайты дикт.рф, www.chuvsu.ru |
3.2. Borland Pascal 7.0, Borland C++ |
3.3. Операционная система Windows XP |
4. Консультанты по проекту (с указанием относящихся к ним разделов проекта)
__Научный руководитель - доцент Егорова Ю.Н.______________________________________
5. Дата выдачи задания
09.12.2013 г.
Руководитель_________________________________________
Задание принял к исполнению____________________________
(дата)
______________________________
(подпись студента)
Содержание Техническое задание………………………………………………………………… Листинг программ……………………………………………………………………
Список литературы……………………………………………………………………. |
1 2 9 |
Техническое задание
ОБРАБОТКА ОДНОМЕРНЫХ МАССИВОВ
1. Вычислить сумму отрицательных элементов массива, которые являются полными квадратами и индексы которых есть четные числа.
2. Из двух массивов разной длины сформировать общий массив и вычислить сумму элементов, делящихся без остатка на 3 и имеющих нечетные индексы.
3. Определить сумму элементов целочисленного массива, в записи которых есть ровно 2 одинаковые цифры и расположенных после минимального по модулю значения.
4. Указать длину начального отрезка последовательности элементов массива, для которого отношение встречающихся в нем степеней двойки и чисел Фибоначчи максимально.
СОРТИРОВКА МАССИВОВ
1. Отсортировать массив по возрастанию суммы цифр в записи его элементов
2. Выполнить сортировку массива с помощью стандартной функции быстрой сортировки qsort (сstdlib) (написать для нее функцию сравнения, передаваемую в качестве параметра, и заполнить таблицу строк).
1
Листинг программ
Программа 1:
Задание: Вычислить сумму отрицательных элементов массива, которые являются полными квадратами и индексы которых есть четные числа.
Листинг:
program one;
var a:array [1..10] of integer;
i:integer;
s:integer;
begin
s:=0;
writeln('vvedite massiv');
for i:=1 to 10 do readln(a[i]);
writeln('start');
for i:=1 to 10 do if ((a[i]<0) and ((i mod 2) =0))
and (sqrt(abs(a[i]))-round(sqrt(abs(a[i])))=0) then
s:=s+a[i];
writeln('s=', s);
readln;
end.
2
Программа 2:
Задание: Из двух массивов разной длины сформировать общий массив и вычислить сумму элементов, делящихся без остатка на 3 и имеющих нечетные индексы.
Листинг:
program two;
var a,b:array [1..100] of integer; s:array [1..200] of integer;
i,j,k,n:integer;
ss:integer;
begin
k:=0;
n:=0;
ss:=0;
writeln('hello, print N');
readln(n);
writeln('input a array');
for i:=1 to n do readln(a[i]);
writeln('print N');
readln(k);
writeln('enter b array');
for i:=1 to k do readln(b[i]);
writeln('connecting//');
for i:=1 to n do s[i]:=a[i];
for i:=1 to (k+n) do begin if i>n then s[i]:=b[i-n]; end;
writeln('a : array');
for i:=1 to n do write (a[i], ' ');
writeln;
writeln('b array');
for i:=1 to k do write (b[i], ' ');
writeln;
writeln('s array');
for k:=1 to (n+k) do write (s[k], ' ');
writeln('');
for i:=1 to (n+k) do if ((i mod 2) = 1) and ((s[i] mod 3)=0)
then ss:=ss +s[i];
writeln('s=', ' ', ss);
readln;
end.
3
Программа 3:
Задание: Определить сумму элементов целочисленного массива, в записи которых есть ровно 2 одинаковые цифры и расположенных после минимального по модулю значения.
Листинг:
program three;
{$R-}
var A,B : array[1..100] of word;
temp,nn,i,j,l,k,m, min, imin,t : integer; sum:longint;
tmp : string;
begin
writeln('ishodnyi massiv:');
writeln('vvedite kol-vo elementov');
readln(nn);
for i := 1 to nn do begin
readln(A[i]); end;
min:=abs(a[1]);
imin:=1;
for i:=2 to nn do begin if abs(a[i])<abs(min)
then begin min:=a[i]; imin:=i; end; end;
writeln('min=', min);
writeln('imin=', imin);
m:=-1;
t:=0;
for i := 1 to nn do begin
Str(A[i],tmp);
k := 0;
for l := 1 to length(tmp) do begin for j := l+1 to length(tmp) do
if (tmp[l] = tmp[j]) then k := k + 1; if k>2 then break;
end;
if k = 1 then begin m := m + 1;
if i>imin then
B[m] := A[i];
end; end;
writeln;
writeln('Polychennyi massiv:');
for i:=1 to m do write(b[i], ' ');
sum:=b[1];
for i := 2 to m do sum:=B[i]+sum;
writeln('');
writeln('sum=', sum);
readln;
end.
4
Программа 4:
Задание: Указать длину начального отрезка последовательности элементов массива, для которого отношение встречающихся в нем степеней двойки и чисел Фибоначчи максимально.
Листинг:
program four;
uses crt;
const nmax=100;
function Step2(n:integer):boolean;
var k:integer;
begin
k:=1; while k<n do k:=k*2;
Step2:=k=n;
end;
function Fib(n:integer):boolean;
var a,b,c:integer;
begin
if n=1 then Fib:=true
else
begin
a:=1; b:=1; c:=0;
while c<n do
begin
c:=a+b; a:=b; b:=c;
end;
Fib:=c=n;
end; end;
var a:array[1..nmax] of integer;
n,i,j,d,k2,kf:integer;
ot,mx:real;
begin
clrscr;
repeat
writeln('Vvedite razmer massiva ',nmax,' n=');
readln(n);
until n in [1..nmax];
writeln('Vvedite celye polozhitelnye chisla:');
for i:=1 to n do
repeat
write('a[',i,']='); read(a[i]);
until a[i]>0;
clrscr;
writeln('Massiv:');
for i:=1 to n do
5
write(a[i],' ');
writeln;
mx:=0;d:=0;
for i:=2 to n do
begin
k2:=0;
kf:=0;
for j:=1 to i do
begin
if Step2(a[j]) then inc(k2);
if Fib(a[j]) then inc(kf);
end;
if (kf>0)and(k2/kf>mx) then
begin
mx:=k2/kf;
d:=j;
end;
end;
if d=0 then writeln('net stepeney ili chisel fibonachi')
else writeln('Max otnoshenie stepenei 2 i chisel fibonachi=',mx:0:1,' na otrezke 1-', d);
readln;
readln;
end.
6
Программа 5:
Задание: Отсортировать массив по возрастанию суммы цифр в записи его элементов
Листинг:
program five;
uses crt;
const csize=20;
type tarray=array [1..csize] of integer;
function comparenumber(n:integer):integer;
begin
comparenumber:=(n mod 10)+(n div 10);
end;
procedure bubblesort(var arg:tarray);
var i,j,temp:integer;
begin for i:=1 to csize-1 do
for j:=1 to csize-i do
if comparenumber(arg[j])>comparenumber(arg[j+1]) then begin
temp:=arg[j];
arg[j]:=arg[j+1];
arg[j+1]:=temp;
end;
end;
var
a:tarray;
i:integer;
begin
clrscr;
randomize;
for i:=1 to csize do begin
a[i]:=random(90)+10;
write(a[i],' ');
end;
writeln;
bubblesort(a);
for i:=1 to csize do write(a[i],' ');
readln;
end.
7
Программа 6:
Задание: Выполнить сортировку массива с помощью стандартной функции быстрой сортировки qsort (сstdlib) (написать для нее функцию сравнения, передаваемую в качестве параметра, и заполнить таблицу строк).
Листинг:
#include <iostream>
#include <iterator>
#include <algorithm>
#include <cstdio>
int Cmp(const void* a, const void* b)
{ return *static_cast<const int*>(a) - *static_cast<const int*>(b); }
int main() {
int array[] = {3, 2, 5, 4, 7, 1, 8, 9, 6};
std::qsort(array, sizeof(array) / sizeof(*array), sizeof(*array), Cmp);
std::copy(array, array + (sizeof(array) / sizeof(*array)),
std::ostream_iterator<int>(std::cout, " "));
return 0;
}
8
Список литературы
9