Замена текущего элемента массива переменной в целях экономии памяти

Контрольная работа - Компьютеры, программирование

Другие контрольные работы по предмету Компьютеры, программирование

°ченные для решения задач управления на основе вычислительной обработки исходной информации;- информационные, предназначенные для получения справочных данных по запросу пользователей; смешанные, в которых реализуются вычислительные и информационные функции.

По способу управления вычислительные сети делятся на:- сети с децентрализованным управлением;- централизованным управлением;- смешанным управлением.

В первом случае каждая ЭВМ, входящая в состав сети, включает полный набор программных средств для координации выполняемых сетевых операций. Сети такого типа сложны и достаточно дороги, так как операционные системы отдельных ЭВМ разрабатываются с ориентацией на коллективный доступ к общему полю памяти сети.

В условиях смешанных сетей под централизованным управлением ведется решение задач, обладающих высшим приоритетом и, как правило, связанных с обработкой больших объемов информации.

По совместимости программного обеспечения бывают сети:- однородные;- гомогенные (состоящие из программно-совместимых компьютеров)- неоднородные или гетерогенные (если компьютеры, входящие в сеть, программно несовместимы).

 

Раздел 2. Составить программу на языке программирования С

 

Дан одномерный массив D размером 13. Сформировать массив S, путем замены нулевых элементов на среднеарифметическое массива D, а отрицательных элементов на максимальный по модулю элемент массива D.

информационный сеть массив элемент

 

Блок-схема 1.1

 

 

Переменные:

int i - для работы с индексами массивов;

double max - максимальный по модулю элемент массива;

double sum - в ходе программы роль этой переменной меняется, с суммы всех элементов массива, на его среднеарифметическое;

double d[], s[] - массивы, исходный и полученный соответственно.

 

Листинг 1.1

 

#include

#include

#include

main(){i;d[13], s[13], max=0, sum=0;

//srand(time(NULL));(i=0; i<13; i++)

{

//d[i]=rand()%(100-(-100+1))+(-100);("%lf", &d[i]);+=d[i];(i==1)=d[0];(fabs(d[i])>max)=fabs(d[i]);(".2g ", d[i]);

}/=13.;("\n");(i=0; i<13; i++)

{[i]=d[i];(d[i]==0)[i]=sum;(d[i]<0)[i]=max;(".2g ", s[i]);

}

printf("\n");

return 0;

}

 

Описание 1.1

После инициализации элементов массива, программа присваивает максимуму элемент массива с индексом 0, далее программа в ходе цикла выявляет максимальный по модулю элемент массива, параллельно этому считается сумма всех элементов массива. После завершения цикла программа считает среднеарифметическое массива, так как все данные для этого у нас есть это не составляет проблем. Далее мы запускаем ещё один цикл в ходе которого мы присваиваем все элементы массива d массиву s, за исключением тех которые меньше либо равны нуля. Для них у нас отдельное условие которое присваивает элементам равным нулю наше среднеарифметическое массива d, а отрицательным элементам мы присваиваем максимальное по модулю значение массива d. В конце мы выводим полученный массив.

 

Таблица 1

Тестовые примеры, раздел 2

Ввод:Вывод:-81 -89 -10 11 -19 -81 64 70 -36 -39 14 34 8189 89 89 11 89 89 64 70 89 89 14 34 81-5 -27 32 84 -35 -49 90 -88 92 -9 -95 90 -4495 95 32 84 95 95 90 95 92 95 95 90 9501 02 03 04 00 00 00 00 09 10 -11 -12 1301 02 03 04 1.5 1.5 1.5 1.5 09 10 13 13 1315 -15 00 13 12 -3 07 08 09 -10 00 00 1315 15 3.8 13 12 15 07 08 09 15 3.8 3.8 13

 

Раздел 3. Составить программу на языке программирования C

 

Задана строка символов, состоящая из слов. Разделителями между словами являются пробелы. Найти в строке слова равные первому и заменить их последним словом предложения.

 

Блок-схема 1.2

 

 

 

Переменные:

char* s - главная строка;

char* s1 - первое слово;

char* s2 - последнее слово;

char* s0 - главная строка без первого слова;

char* pr - указатель на первое вхождение строки s1 в строку s0;

char* buf - итерационное хранилище для строки;

n - размерность;

int len, len1, len2 - длины строк;

int i, j, k - переменные для работы с индексами строки;

 

Листинг 1.2

 

#include

#include

#include

#include

//char* str_replace(char* search, char* replace, char* resource);

#define n 1000main(){*s, *s1, *s2;=(char*) malloc(n);=(char*) malloc(n);=(char*) malloc(n);count=0, len, len1, len2, i, j, k;(s);=strlen(s);(i=0; *(s+i) != ; i++)

{(*(s+i) == ,);

*(s1+i) = *(s+i);

}(i = len; i>0;)

{(*(s+i) != || *(s+i) != ,)

-i;(*(s+i) == )

{(k=i+1, j=0; *(s+k) != \0 ;k++, j++)

{(*(s+k) == ? || *(s+k) == ! || *(s+k) == .);

*(s2+j) = *(s+k);

};

}

}=strlen(s1);=strlen(s2);* s0=strstr(s, s1);+=len1+1;("%s\n", s0);* pr = strstr(s0, s1);

(pr != NULL)

{_t i;_t pr_len = strlen(pr);_t s0_len = strlen(s0);* buf = (char*)calloc((s0_len - len1 + len2), sizeof(char));(buf, s0, s0_len - pr_len);(buf, s2);(buf, pr + len1);= buf;= strstr(s0, s1);

}(s ,"%s %s", s1, s0);("%s", s);(s);(s1);(s2);(buf);(pr);0;

}

 

/*char* str_replace(char* original, char* replacement, char* mainLine)*/

/*{*/

/* size_t original_len = strlen(original);*/

/* size_t replacement_len = strlen(replacement);*/

 

/* char* pointer = strstr(mainLine, original);*/

 

/* while (pointer != NULL)*/

/* {*/

/* size_t i;*/

/* size_t pointer_len = strlen(pointer);*/

/* size_t mainLine_len = strlen(mainLine);*/

 

/* char* buf = (char*)calloc((mainLine_len - original_len + replacement_len), sizeof(char));*/

 

/* strncpy(buf, mainLine, mainLine_len - pointer_len); */

/* strcat(buf, replacement);*/

/* strcat(buf, pointer + original_len);*/

/* printf("%s", buf);*/

/* free(mainLine);*/

/* mainLine = buf;*/

 

/* pointer = strstr(mainLine, original);*/

/* }*/

 

/* return mainLine;*/

/*}*/

 

Описание 1.2

Первый цикл do-while предназначен для поиска эталонного значения, т.е. для поиска первого слова, в котором есть три различные буквы, причём буквы а и А - считаются эквивалентными.

Во втором цикле - снова считываются слова, которые сравниваются с эталоном.

if(i>i_max && task(word,i)), где i длинна считанного слова, а i_max - длинна