Масивный масив на с++

  • Автор темы Vovann
  • Дата начала
Статус
Закрыто для дальнейших ответов.
V

Vovann

#1
Задание: В одномерном массиве, состоящем из n вещественых эл-тов, вычислить:
1 Сумму отрицательных элементов массива
2 Произведение эл-тов массива, расположеных между максимальным и минимальными эл-тами

есть код, он он нихрена не работает... прошу извенить за ошибки, т.к клава глючит + писал я из тетради, небыло возможности праверить орфографию

Код:
int mas[100]
int n=0; int k=o; int max; =0; l,li;
cout<<"Введите кол-во элемент"<< end;
for (int i=0; i<n; i++ cin>>n;)
{
cin>>mas[i]
if (mas[i] <0)
k=k +mas [i];
max;=mas [0]; L'=mas [0];
}
for(int i=0; i<n; i++)
{m=max(maxi, mas[i]);
maxi=m;
li =min(l,mas[i]);
maxi=m;
li=min(l,mas[i]);
}
int x=l, y=m, xy=1; c=0;
if (x>y)
for (int i = y; i=x; i++)
{xy*=mas[i], c++)
else
for (int i=x; i<y; i++)
(xy*=mas [i]; c++)
int<<"
cout <<"Ответ сумма отрицательных элементов равна"<<n<<end l;
if (c>0)
cout<<" Произведение...равно"<<xy<<end;
else
cout <<"Таких нет" <<end;
return o;
}
:D
 

Senset

Well-known member
11.09.2006
136
0
#2
Код:
#include <conio.h>
#include <stdio.h>
#include <iostream.h>

float get_sum(float *x,int n)
{
float *p=x,rezult=0;
for(int i=0;i<n;i++,p++) if (*p<0) rezult+=*p;
return rezult;
}

int min_position(float *x,int n)
{
float *p=x,min=*p;
int rez=0;
p++;
for(int i=1;i<n;i++,p++) if (min>*p) {
min=*p;
rez=i;
}
return rez;
}

void input_array(float *x,int n)
{
float *p=x;
for (int i=0;i<n;i++,p++) cin>>*p;
}

void output_array(float *x,int n)
{
float *p=x;
for (int i=0;i<n;i++,p++) cout<<*p<<"\t";
puts("");
}



int max_position(float *x,int n)
{
float *p=x,max=*p;
int rez=0;
p++;
for(int i=1;i<n;i++,p++) if (max<*p) {
max=*p;
rez=i;
}
return rez;
}

void make_quest(float *x,int n)
{
int sum=get_sum(x,n),
min=min_position(x,n),
max=max_position(x,n);
float task;
printf("Сумма отрицательных элементов вектора: %d\n",sum);
printf("Позиция минимального элемента: 		  %d\n",min);
printf("Позиция максимального элемента:		%d\n",max);
int i,d;
if (min<max) {i=min+1;d=max-1;}
else {i=max+1;d=min-1;};
for(task=1;i<=d;i++) task*=x[i];
printf("Произведение элементов между min и max == %.2f",task);
}

int main()
{
clrscr();
puts("Введите количество элементов в массиве");
int n;
cin>>n;
puts("Введите массив:");
float *a=new float [n];
input_array(a,n);
clrscr();
puts("Введенный массив:");
output_array(a,n);
make_quest(a,n);
}
 
V

Vovann

#3
спасибо, ет схема на работоспособность проверена ?
 

Senset

Well-known member
11.09.2006
136
0
#8
1) я спрашивал не это =)
2) раз уж речь зашла о компиляторах - то попробую запустить в Borland Cpp - ибо я писал на нем и всё пашет
3) единственное место где не работает прога - это когда максимальный и минимальный элемент стоят рядом (произведение цифр между ними по моему алгоритму равно 1, а должно быть 0... это можно исправить добавив всего лишь одно условие, где и будет присваиваться значение task...
4) а спрашивал, что конктретно ты вводишь... ибо если задашь слишком большой размер массива - ясен пень вылетит программа, с ошибкой переполнения буфера памяти
 
V

Vovann

#9
ааа... просто понимаеш для меня С++ как андройный колайдер... он вроде есть
 
Статус
Закрыто для дальнейших ответов.