
кр1 вариант 6
.docЗадание №1
Сегментом называется непрерывная последовательность элементов массива. В неупорядоченном массиве целых чисел (как положительных, так и отрицательных) найти сегмент с максимальной суммой элементов.
Блок- схема функции main():
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#define SIZE 10
#define INVALID -9999
int main()
{
int i, j, seg1, seg2, sum, currSum, mas[SIZE];
clrscr();
printf("\n\n Array is:\n\n");
srand(time(NULL));
for(i=0; i<SIZE; i++) {
j=rand()%2;
if(j)
j=1;
else
j=-1;
printf("%5d", mas[i]=(rand()%100)*j);
}
sum=INVALID;
for(i=0; i<SIZE; i++) {
currSum=0;
for(j=i; j<SIZE; j++) {
currSum+=mas[j];
if(currSum>sum) {
seg1=i;
seg2=j;
sum=currSum;
}
}
}
printf("\n\n Result is:\n sum is: %d\n segment is: [%d; %d]\n\n\n ", sum, seg1+1, seg2+1);
getch();
return 0; }
Результат работы программы:
Задание №2
Имеется массив строк. На этом же месте, не заводя других массивов, записать слова в обратном порядке, рассматривая все строки, т.е первое слово первой строки станет последним словом последней строки ( если объединить строки, будет гораздо проще. Нужно учитывать, что в строке может не хватить места для очередного слово). Стандартных функций работы со строками не использовать.
Блок-схема функции main():
Листинг программы
#include <stdio.h>
#include <conio.h>
#define LN 5
#define CL 256
int main()
{
char chr, mas[LN][CL];
int i, j, k, m;
clrscr();
printf("\n\n Input your %d strings:\n\n", LN);
for(i=0; i<LN; i++) {
printf(" %2d) ", i+1);
gets(mas[i]);
}
for(i=0; i<LN; i++) {
k=0;
while(mas[i][k])
k++;
if(k)
k--;
j=0;
while(j<k) {
chr=mas[i][j];
mas[i][j]=mas[i][k];
mas[i][k]=chr;
j++;
k--;
}
j=0;
k=0;
while(mas[i][j]) {
while((mas[i][k]!=' ') && mas[i][k])
k++;
if(k)
k--;
m=k;
while(j<m) {
chr=mas[i][j];
mas[i][j]=mas[i][m];
mas[i][m]=chr;
j++;
m--;
}
j=k+1;
while(mas[i][j]==' ')
j++;
k=j;
}
}
for(i=0; i<LN/2; i++)
for(j=0; j<CL; j++) {
chr=mas[i][j];
mas[i][j]=mas[LN-1-i][j];
mas[LN-1-i][j]=chr;
}
printf("\n\n Result is:\n\n");
for(i=0; i<LN; i++) {
printf(" ");
j=0;
while(mas[i][j]) {
putchar(mas[i][j]);
j++;
}
putchar('\n');
}
printf("\n\n ");
getch();
return 0; }
Результат работы программы: