Форум программистов, компьютерный форум CyberForum.ru

Поиск в массиве - C++

Восстановить пароль Регистрация
 
C1keu
1 / 1 / 0
Регистрация: 19.02.2010
Сообщений: 32
19.02.2010, 11:35     Поиск в массиве #1
Найти наименьшую из нечетных компонент вектора и наибольшую из четных компонент. Если они имеют разные знаки, то вычислить сумму элементов вектора, а в противном случае определить произведение положительных элементов вектора.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<stdio.h>
 
float fun(float b[], int n)
{
int i,t=1; float min,max,r;
min=b[0]; for(i=0;i<n;i+=2)if(b[i]<min)min=b[i]; 
max=b[1]; for(i=1;i<n;i+=2)if(b[i]>max)max=b[i];
if(min*max<0){r=0; for(i=0;i<n;i++)r+=b[i];} 
else {r=1; for(i=0;i<n;i++)if(b[i]>0){r*=b[i]; t=0;}if(t)r=0;} 
return r;
}      
      
main(){
float a[100]; int i,n;
printf("n="); scanf("%d",&n);
for(i=0;i<n;i++){printf("a[%d]=",i+1); scanf("%f",&a[i]);}
printf("result=%f",fun(a,n)); getchar(); }
Подскажите правильно сделал?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.02.2010, 11:35     Поиск в массиве
Посмотрите здесь:

C++ Поиск в массиве
C++ Поиск в массиве
C++ Поиск в массиве
поиск в массиве C++
Поиск символа в массиве C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
 Аватар для Nameless One
5755 / 3404 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
19.02.2010, 12:32     Поиск в массиве #2
Неправильно определена главная функция
Надо:
C++
1
2
3
4
int main()
{
//...
}
Добавлено через 7 минут
А так вроде все правильно
Day
 Аватар для Day
1149 / 954 / 57
Регистрация: 29.10.2009
Сообщений: 1,384
19.02.2010, 12:59     Поиск в массиве #3
C1keu, все очень мило, пара мелких "улучшений" (не по сути)
Код
min[COLOR=#000080]=[/COLOR]b[COLOR=#008000][[/COLOR]0[COLOR=#008000]][/COLOR][COLOR=#008080];[/COLOR] [COLOR=#0000ff]for[/COLOR][COLOR=#008000]([/COLOR]i[COLOR=#000080]=2[/COLOR][COLOR=#008080];[/COLOR]i[COLOR=#000080]<[/COLOR]n[COLOR=#008080];[/COLOR]i[COLOR=#000040]+[/COLOR][COLOR=#000080]=[/COLOR]2[COLOR=#008000])[/COLOR][COLOR=#0000ff]if[/COLOR][COLOR=#008000]([/COLOR]b[COLOR=#008000][[/COLOR]i[COLOR=#008000]][/COLOR][COLOR=#000080]<[/COLOR]min[COLOR=#008000])[/COLOR]min[COLOR=#000080]=[/COLOR]b[COLOR=#008000][[/COLOR]i[COLOR=#008000]][/COLOR][COLOR=#008080];[/COLOR] 
max[COLOR=#000080]=[/COLOR]b[COLOR=#008000][[/COLOR]1[COLOR=#008000]][/COLOR][COLOR=#008080];[/COLOR] [COLOR=#0000ff]for[/COLOR][COLOR=#008000]([/COLOR]i[COLOR=#000080]=3[/COLOR][COLOR=#008080];[/COLOR]i[COLOR=#000080]<[/COLOR]n[COLOR=#008080];[/COLOR]i[COLOR=#000040]+[/COLOR][COLOR=#000080]=[/COLOR]2[COLOR=#008000])[/COLOR][COLOR=#0000ff]if[/COLOR][COLOR=#008000]([/COLOR]b[COLOR=#008000][[/COLOR]i[COLOR=#008000]][/COLOR][COLOR=#000080]>[/COLOR]max[COLOR=#008000])[/COLOR]max[COLOR=#000080]=[/COLOR]b[COLOR=#008000][[/COLOR]i[COLOR=#008000]][/COLOR][COLOR=#008080];[/COLOR]
[COLOR=#0000ff]if[/COLOR][COLOR=#008000]([/COLOR]min[COLOR=#000040]*[/COLOR]max[COLOR=#000080]<[/COLOR]0[COLOR=#008000]){[/COLOR]r[COLOR=#000080]=[/COLOR][COLOR=#0000dd]0[/COLOR][COLOR=#008080];[/COLOR] [COLOR=#0000ff]for[/COLOR][COLOR=#008000]([/COLOR]i[COLOR=#000080]=[/COLOR][COLOR=#0000dd]0[/COLOR][COLOR=#008080];[/COLOR]i[COLOR=#000080]<[/COLOR]n[COLOR=#008080];[/COLOR]i[COLOR=#000040]++[/COLOR][COLOR=#008000])[/COLOR]r[COLOR=#000040]+[/COLOR][COLOR=#000080]=[/COLOR]b[COLOR=#008000][[/COLOR]i[COLOR=#008000]][/COLOR][COLOR=#008080];[/COLOR][COLOR=#008000]}[/COLOR] 
[COLOR=#0000ff]else[/COLOR] [COLOR=#008000]{[/COLOR]r[COLOR=#000080]=[/COLOR][COLOR=#0000dd]1[/COLOR][COLOR=#008080];[/COLOR] [COLOR=#0000ff]for[/COLOR][COLOR=#008000]([/COLOR]i[COLOR=#000080]=[/COLOR][COLOR=#0000dd]0[/COLOR][COLOR=#008080];[/COLOR]i[COLOR=#000080]<[/COLOR]n[COLOR=#008080];[/COLOR]i[COLOR=#000040]++[/COLOR][COLOR=#008000])[/COLOR][COLOR=#0000ff]if[/COLOR][COLOR=#008000]([/COLOR]b[COLOR=#008000][[/COLOR]i[COLOR=#008000]][/COLOR][COLOR=#000080]>[/COLOR]0[COLOR=#008000]) [/COLOR]r[COLOR=#000040]*[/COLOR][COLOR=#000080]=[/COLOR]b[COLOR=#008000][[/COLOR]i[COLOR=#008000]][/COLOR][COLOR=#008080];[/COLOR]
ИМХО, если положительных элементов вовсе нет, их произведение = 1
(так же как сумма пустого множества элементов = 0)
0 и 1 являются нейтральными элементами соответственно в аддитивной и мультипликативной
полугруппах действительных чисел

Ну и еще, для полной "отлизанности" произведения, хорошо бы при вводе проверять "n<=100"
А то кто-нибудь введет 101 - и программа давай чужую память портить...
И концов не найдешь
C1keu
1 / 1 / 0
Регистрация: 19.02.2010
Сообщений: 32
19.02.2010, 20:49  [ТС]     Поиск в массиве #4
Спасибо за помощь =)
Yandex
Объявления
19.02.2010, 20:49     Поиск в массиве
Ответ Создать тему
Опции темы

Текущее время: 04:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru