Замена текущего элемента массива переменной в целях экономии памяти
Контрольная работа - Компьютеры, программирование
Другие контрольные работы по предмету Компьютеры, программирование
°ченные для решения задач управления на основе вычислительной обработки исходной информации;- информационные, предназначенные для получения справочных данных по запросу пользователей; смешанные, в которых реализуются вычислительные и информационные функции.
По способу управления вычислительные сети делятся на:- сети с децентрализованным управлением;- централизованным управлением;- смешанным управлением.
В первом случае каждая ЭВМ, входящая в состав сети, включает полный набор программных средств для координации выполняемых сетевых операций. Сети такого типа сложны и достаточно дороги, так как операционные системы отдельных ЭВМ разрабатываются с ориентацией на коллективный доступ к общему полю памяти сети.
В условиях смешанных сетей под централизованным управлением ведется решение задач, обладающих высшим приоритетом и, как правило, связанных с обработкой больших объемов информации.
По совместимости программного обеспечения бывают сети:- однородные;- гомогенные (состоящие из программно-совместимых компьютеров)- неоднородные или гетерогенные (если компьютеры, входящие в сеть, программно несовместимы).
Раздел 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 - длинна