Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C++] Как переделать код под задачу?


Автор: username12 17.12.2015, 19:37
В вещественном массиве отнармировать все числа по максимальному элементу.Как это реализовать? заранее спасибо 
Найти максимальный по модулю элемент, потом поделить все элементы массива на него

Код


2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#include<stdlib.h>
#include<stdio.h>
#include<math.h>
#include<string.h>
#include"logotip.c"
#include"time.h"
main(int argc,char* argv[])
{
logo();
puts("Краткое изложение задачи:");
puts("После каждых 3-хотрицательных чисел вставить их сумму с плюсом");
puts("Работу выполнил Маркин Кирилл Анатольевич,ИВТ-12");
puts("Благодарность обявляется Полухину Владу, ИВТ-12");
puts("Нажмите Enter");getchar();
char buffer[20];
int mass[100];srand(time(NULL));
int mas[100];srand(time(NULL));
srand(time(NULL));
int i,n,c,k,K,a,b,y;
int razmer=0;
if(argc<3)
{ printf("Программа создает одномерным массив,размер которого не должен превышать 100.\n",argv[0]);
printf("Вы можете вводить массив 2 способами,используйте:\n",argv[0]);
printf("%s Ручной <размер массива> или %s Рандом <размер массива>(Без <>)\n",argv[0],argv[0]);
printf("Нажмите Enter!");getchar();exit(0);}
razmer=atof(argv[2]);
if(razmer>100){printf("Слишком большой размер массива(не должен превышать 100)\n");exit(0);}
if(razmer<2){printf("Размер не может быть меньше 2)\n");exit(0);}
printf("Вы задали массив с размером = %d \n",razmer);
printf("\n");puts("Работу выполнил Маркин Кирилл Анатольевич,ИВТ-12");
if(strcmp(argv[1],"Ручной")==0)
{
for(i=0;i<razmer;i++)
{
printf("Введите значение mass[%d]\n",i);
fgets(buffer,20,stdin);
mass[i]=atoi(buffer);
}
}
if(strcmp(argv[1],"Рандом")==0)
{srand(time(NULL));
mass_rand(mass,razmer);
}
printf("\n");
printf("Обработанный массив \n");
printf("\n");
K=0; y=0;
for(i=0;i<razmer;i++)
{
mas[i+y]=mass[i];
printf("%4d", mas[i+y]);
if(mass[i]>=0 )
{
K=0;
a=0;
b=0;
c=0;
}
if(mass[i]<0)
{ K=K+1;}
if (K==1)
{a=mass[i];}
if (K==2)
{b=mass[i];}
if (K==3)
{
y++;
mas[i+y]=(a+b+mass[i])*(-1);
printf("%4d", mas[i+y]);
K=0;
}
}
printf("\n");
printf("\n");
printf("Массив \n");
printf("\n");
for(i=0;i<razmer;i++)
{
printf("%4d",mass[i]);
}
printf("\n");
printf("\n");
}

Автор: Alexeis 17.12.2015, 19:45
Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 

Автор: rudolfninja 18.12.2015, 11:10
Сам спросил:

Цитата(username12 @  17.12.2015,  19:37 Найти цитируемый пост)
Как это реализовать?


Сам ответил:

Цитата(username12 @  17.12.2015,  19:37 Найти цитируемый пост)
Найти максимальный по модулю элемент, потом поделить все элементы массива на него


Только непонятно почему надо найти максимальный по модулю, а не просто максимальный.
Вот пример решения вашей задачи для заранее заданного массива:

Код

int _tmain(int argc, _TCHAR* argv[])
{
    double arr[10] = { 15.1, 109.3, -0.43, 0.21341, 93.594, 594.93, 1.0, 9.23, -12.4, 54.3 };
    double max = arr[0];
    
    // ищем максимальный элемент
    for (int i = 1; i < 10; i++)
    if (arr[i] > max)
        max = arr[i];

    // делим все элементы массива на максимальный элемент
    for (int i = 0; i < 10; i++)
        arr[i] /= max;
    return 0;
}


Вывод массива на экран добавите сами

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)