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

Оформить одномерный массив в виде функций - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.92
Julia9311
3 / 3 / 0
Регистрация: 05.11.2011
Сообщений: 190
24.06.2012, 20:07     Оформить одномерный массив в виде функций #1
и снова я мучаюсь с функциями

и кажется снова они получились вложенными

1.) вычислить номер максимального по модулю элемента массива

C++ (Qt)
1
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
#include "iostream.h"
#include "stdlib.h"
#include "stdio.h"
#include "math.h"
 
int n,i,d;
float *m=new float[n];//динамическое выделение памяти
  float*& r = m;
  
int maxx()
{
 cout<<"\nSformirovanniy massiv:\n";
  for(i=0;i<n;i++)
  
  {
      m[i]=(rand()-50)*1.0/(rand()+1);//значение i
  cout<<"\nM["<<i<<"]="<<m[i];
  }
 
 
 cout<<"\nOrganizovanniy massiv s pomoschu ssilok:\n";
 for(i=0;i<n;i++)
 { 
  cout<<"\nR["<<i<<"]="<<r[i];//вывод на экран R["<<i<<"]="<<r[i]
}
}
 
int main()
{
 cout<<"\nVvedite n-kolichestvo elementov massiva:";
 cin>>n;
cout<<"\nVvedite d-elementoi massiva:";
 cin>>d;
 return 0;
}
нужно ли последний пункт int main() оформить в виде void vvod?


2.) вычислить сумму элементов массива, расположенных после первого положительного элемента

C++ (Qt)
1
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
#include "iostream.h"
#include "stdlib.h"
#include "stdio.h"
#include "math.h"
 
int n,i,a;
float *m=new float[n];//динамическое выделение памяти
float*& r = m;
float s=0;
 
int Sum()
 double max=fabs(r[0]);//возвращение значения, равного нулю
 bool fl=false;
 for(i=0;i<n;i++);
  { if(fabs(m[i])>max) max=r[i];//если i>max, то i max
    if(m[i]>0) fl=true;//если i>0, то fl=верно
    if(fl)s+=r[i];//s=i
  }
 
int main()
{
cout<<"\nVvedite n-kolichestvo elementov massiva";
 cin>>n;//ввод n
 cout<<"\nVvedite a-elementi massiva";
 cin>>a;//ввод а
 cout<<"\nOrganizovanniy massiv s pomoschu ssilok:\n";
cout<<"\nSumma elementov massiva, raspologenix posle pervogo pologitelnogo elementa:"<<s;
 return 0;
}
здесь, наверное, нужно отдельно сделать функцию поиска первого положительного элемента и функцию суммы элементов?

3.)преобразовать массив таким образом, чтобы сначала распологались все элементы, целая часть которых лежит в интервале [a,b], а потом - все остальные.
C++ (Qt)
1
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
#include "iostream.h"
#include "stdlib.h"
#include "stdio.h"
#include "math.h"
 
int n,i,d;
float *m=new float[n];
float*& r = m;
float a,b;
 
int //здесь должна быть функция преобразования?
  for(i=0;i<n;i++)
  if((r[i]>=a)&&((r[i]<=b)))//если i больше начала интервала и меньше конца интервала
   cout<<r[i]<<"  ";//вывод i
 
int //и здесь тоже?
 for(i=0;i<n;i++)//цикл for
  if((r[i]<a)||((r[i]>b)))//если i меньше начала интервала и больше конца интервала
   cout<<r[i]<<"  ";//вывод i
 
 int main()
 {
 cout<<"\nVvedite n-kolichestvo elementov massiva";
 cin>>n;//ввод n
 cout<<"\nVvedite d-elementi massiva";
 cin>>d;//ввод d
 
 
 cout<<"\nVvedite nachalo intervala, a= :";
 cin>>a;//ввод а
 
 cout<<"\nVvedite konec intervala, b= :";
 cin>>b;//ввод b
 
  cout<<"\nOrganizovanniy massiv s pomoschu ssilok:\n";
 cout<<"\nRezultat preobrazovania: snachala raspolagayutsa te elementi, celaya chast kotorix legit v [a,b].";
 cout<<"\nZatem razmeschayutsa vse ostalnie:\n";
 
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.06.2012, 20:07     Оформить одномерный массив в виде функций
Посмотрите здесь:

Оформить программу в виде функций C++
C++ Матрица.Переписать в одномерный массив эл-ты четных столбцов значения которых меньше 1. Оформить в виде Функции
C++ Оформить в виде отдельных функций введения, просмотр и определение количества чисел масива
C++ Оформить программу в виде функций
оформить в виде функции одномерный массив C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
LEQADA
Мастер кустарных методов
 Аватар для LEQADA
227 / 222 / 9
Регистрация: 09.11.2010
Сообщений: 680
24.06.2012, 20:14     Оформить одномерный массив в виде функций #2
Цитата Сообщение от Julia9311 Посмотреть сообщение
нужно ли последний пункт int main() оформить в виде void vvod?
main даже без возвращения чего-либо может быть int.

Добавлено через 1 минуту
Цитата Сообщение от Julia9311 Посмотреть сообщение
//динамическое выделение памяти
зачем?

Добавлено через 1 минуту
Цитата Сообщение от Julia9311 Посмотреть сообщение
1.) вычислить номер максимального по модулю элемента массива
вам дали задание так заумно это делать или это вы сами намудрили?
Julia9311
3 / 3 / 0
Регистрация: 05.11.2011
Сообщений: 190
24.06.2012, 20:17  [ТС]     Оформить одномерный массив в виде функций #3
LEQADA, в принципе, динамическое выделение памяти здесь не обязательно, просто мне нужно было раньше сделать это задание с выделением памяти, а теперь надо оформить его в виде функций
LEQADA
Мастер кустарных методов
 Аватар для LEQADA
227 / 222 / 9
Регистрация: 09.11.2010
Сообщений: 680
24.06.2012, 20:18     Оформить одномерный массив в виде функций #4
Цитата Сообщение от Julia9311 Посмотреть сообщение
здесь, наверное, нужно отдельно сделать функцию поиска первого положительного элемента и функцию суммы элементов?
можно
Julia9311
3 / 3 / 0
Регистрация: 05.11.2011
Сообщений: 190
24.06.2012, 20:20  [ТС]     Оформить одномерный массив в виде функций #5
1.) вычислить номер максимального по модулю элемента массива
сама)
LEQADA
Мастер кустарных методов
 Аватар для LEQADA
227 / 222 / 9
Регистрация: 09.11.2010
Сообщений: 680
24.06.2012, 20:22     Оформить одномерный массив в виде функций #6
Цитата Сообщение от Julia9311 Посмотреть сообщение
1.) вычислить номер максимального по модулю элемента массива
напрашивается вопрос: что, если максимальных несколько?
Julia9311
3 / 3 / 0
Регистрация: 05.11.2011
Сообщений: 190
24.06.2012, 20:31  [ТС]     Оформить одномерный массив в виде функций #7
LEQADA, тогда, наверное, выводить их все
вот как выглядит эта программа без функций

C++ (Qt)
1
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
#include "iostream.h"
#include "stdlib.h"
#include "stdio.h"
#include "math.h"
 
 
int main()
{
 
int n,i,d;
 
  
 cout<<"\nVvedite n-kolichestvo elementov massiva:";
 cin>>n;//ввод n
cout<<"\nVvedite d-elementoi massiva:";
 cin>>d;//ввод d
  float *m=new float[n];
  float*& r = m;
  
 
 cout<<"\nSformirovanniy massiv:\n";
  for(i=0;i<n;i++)
 {  m[i]=(rand()-50)*1.0/(rand()+1);
  cout<<"\nM["<<i<<"]="<<m[i];
 }
 
 cout<<"\nOrganizovanniy massiv s pomoschu ssilok:\n";
 for(i=0;i<n;i++)
  
  cout<<"\nR["<<i<<"]="<<r[i];
 return 0;
}
LEQADA
Мастер кустарных методов
 Аватар для LEQADA
227 / 222 / 9
Регистрация: 09.11.2010
Сообщений: 680
24.06.2012, 20:33     Оформить одномерный массив в виде функций #8
Цитата Сообщение от Julia9311 Посмотреть сообщение
вот как выглядит эта программа без функций
Где вы ищете максимальный по модулю элемент? -_-
Julia9311
3 / 3 / 0
Регистрация: 05.11.2011
Сообщений: 190
24.06.2012, 20:56  [ТС]     Оформить одномерный массив в виде функций #9
LEQADA,

{
m[i]=(rand()-50)*1.0/(rand()+1);//значение i
cout<<"\nM["<<i<<"]="<<m[i];
}

подразумевалось, что эта часть должна искать максимальный по модулю элемент
LEQADA
Мастер кустарных методов
 Аватар для LEQADA
227 / 222 / 9
Регистрация: 09.11.2010
Сообщений: 680
24.06.2012, 20:58     Оформить одномерный массив в виде функций #10
Цитата Сообщение от Julia9311 Посмотреть сообщение
подразумевалось, что эта часть должна искать максимальный по модулю элемент
эта часть заполняет массив псевдослучайными числами. Вы хоть проверяли сами этот код?
Julia9311
3 / 3 / 0
Регистрация: 05.11.2011
Сообщений: 190
24.06.2012, 21:08  [ТС]     Оформить одномерный массив в виде функций #11
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
#include <algorithm>
#include <iterator>
#include <cmath>
 
bool modcmp(const double & a, const double & b) { return fabs(a) < fabs(b); }
 
int main(){
    double * arr;
    size_t cnt;
    
    std::cout << "Number of elements: ";
    std::cin >> cnt;
    arr = new double [ cnt ];
    
    for ( size_t i = 0; i < cnt; ++i ){
        std::cout << "ARRAY[" << i << "] = ";
        std::cin >> arr[i];
    }
    
    std::cout << "Index of max element by absolute value: " << std::distance(arr, std::max_element(arr, arr + cnt, modcmp)) << std::endl;
    
    delete [] arr;
    return 0;
}
вот другой код

Добавлено через 2 минуты
for ( size_t i = 0; i < cnt; ++i ){
std::cout << "ARRAY[" << i << "] = ";
std::cin >> arr[i];
}

std::cout << "Index of max element by absolute value: " << std::distance(arr, std::max_element(arr, arr + cnt, modcmp)) << std::endl;

delete [] arr;
return 0;
}
по-моему, эта часть и должна искать номер максимального по модулю элемента
LEQADA
Мастер кустарных методов
 Аватар для LEQADA
227 / 222 / 9
Регистрация: 09.11.2010
Сообщений: 680
24.06.2012, 21:11     Оформить одномерный массив в виде функций #12
Цитата Сообщение от Julia9311 Посмотреть сообщение
вот другой код
Круто. Название некоторых функций вижу впервые. Компилируйте и запускайте. Если работает, то в чём вопрос? Если не работает, то в чём вопрос?

Добавлено через 1 минуту
Цитата Сообщение от Julia9311 Посмотреть сообщение
по-моему, эта часть и должна искать номер максимального по модулю элемента
Нет. Это будет делать отрывок
C++
1
std::distance(arr, std::max_element(arr, arr + cnt, modcmp))
если будет... не знаю будет ли... проверяйте...
Julia9311
3 / 3 / 0
Регистрация: 05.11.2011
Сообщений: 190
24.06.2012, 21:13  [ТС]     Оформить одномерный массив в виде функций #13
программа-то работает, только как ее оформить в виде функций?
LEQADA
Мастер кустарных методов
 Аватар для LEQADA
227 / 222 / 9
Регистрация: 09.11.2010
Сообщений: 680
24.06.2012, 21:18     Оформить одномерный массив в виде функций #14
Цитата Сообщение от Julia9311 Посмотреть сообщение
программа-то работает, только как ее оформить в виде функций?
Так она оформлена уже в виде функций
Вот ваши функции:
modcmp
distance
max_element
main

Дело в том, что если преподаватель задаст вопрос по коду, вы не ответите на него.
Julia9311
3 / 3 / 0
Регистрация: 05.11.2011
Сообщений: 190
24.06.2012, 21:47  [ТС]     Оформить одномерный массив в виде функций #15
сейчас попытаюсь оформить попроще)

Добавлено через 16 минут
что-то ничего не получается и выдает кучу ошибок(

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <algorithm>
#include <iterator>
#include <cmath>
using namespace std;
 
bool modcmp(int i=0, int n, int imax=i) { return fabs(a[i])<fabs(a[imax]);}
 
int main()
{
double * a;
size_t n 
cout << "\n Vvedite kol-vo elementov massiva: "; cin >> n;
a = new double[n];
 
for (size_t i=0; i<n; i++){
cout<<"a["<<i<<"]=";
cin>>a[i];
cout<<"Index maximalnogo elementa: "<< distance(a, max_element(a, a + n, modcmp))<<endl;
delete [] a;
return 0;
}
LEQADA
Мастер кустарных методов
 Аватар для LEQADA
227 / 222 / 9
Регистрация: 09.11.2010
Сообщений: 680
24.06.2012, 21:55     Оформить одномерный массив в виде функций #16
Цитата Сообщение от Julia9311 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <algorithm>
#include <iterator>
#include <cmath>
using namespace std;
bool modcmp(int i=0, int n, int imax=i) { return fabs(a[i])<fabs(a[imax]);}
int main()
{
double * a;
size_t n 
cout << "\n Vvedite kol-vo elementov massiva: "; cin >> n;
a = new double[n];
for (size_t i=0; i<n; i++){
cout<<"a["<<i<<"]=";
cin>>a[i];
cout<<"Index maximalnogo elementa: "<< distance(a, max_element(a, a + n, modcmp))<<endl;
delete [] a;
return 0;
}
это ужас...
Зачем вам менять типы переменных? Зачем менять их названия? Зачем переделывать вход функции (причём бессмысленным образом)? По-вашему это поможет вам объяснить алгоритм работы функции distance, например?
xADMIRALx
 Аватар для xADMIRALx
66 / 60 / 1
Регистрация: 09.06.2012
Сообщений: 291
24.06.2012, 22:04     Оформить одномерный массив в виде функций #17
2 задание вроде так )) не проверял но должно быть так )

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void maxmass(int *p);
 
void maxmass(int *p)
{
   for (int i = 0; i < sizeof(p) / sizeof(p[0]);++i)
{
    if (*p < 0)
p++;
   continue;
   }
else
{
   cout << p[i] + p[i+1] << " " ;
}
}
int main()
{
   int mas[] = {1,4,6,4,8,346,845,-2,-634,-123};
maxmass(mas[0]);
system("PAUSE");
return 0;
}
Julia9311
3 / 3 / 0
Регистрация: 05.11.2011
Сообщений: 190
24.06.2012, 22:16  [ТС]     Оформить одномерный массив в виде функций #18
xADMIRALx, спасибо, сейчас попробую)

так... вот, кажется, 2 пункта первого задания... но последний явно нужно переделывать

C++ (Qt)
1
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
#include <iostream> 
 
using namespace std; 
 
void Input(double *x, int n)
{
    cout<<"Enter elements: ";
    for(int i = 0; i < n; i++)
        cin>>x[i];
}
 
double Max(double *x, int n)//максимальный элемент
{
    double max = x[0];
    for(int i = 1; i < n; i++)
        if(max < x[i]) max = x[i];
 
    return max;
}
 
int main()
{
    const size_t SIZE = 5;
    int m[SIZE] = {3, 4, 3, 5, 4}, index = 0;
    for(int i = 0; i < SIZE; ++i)
    {
        if(m[i] == 5)
        {
            index = i;
        }
    }
    std::cout << index;
    system ("pause");
   return 0;
    
}
xADMIRALx
 Аватар для xADMIRALx
66 / 60 / 1
Регистрация: 09.06.2012
Сообщений: 291
24.06.2012, 22:23     Оформить одномерный массив в виде функций #19
Я так понимаю вам надо написать 2 функции 1 запрашивает значения,затем записываем в масив размер size_t = 5; затем пишем еще 1 функцию котораю определяет максимальное значение в массиве и выводит его индекс ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.06.2012, 22:27     Оформить одномерный массив в виде функций
Еще ссылки по теме:

Оформить в виде функций C++
C++ Оформить в виде функций программу
Оформить простейшие задачи в виде функций C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Julia9311
3 / 3 / 0
Регистрация: 05.11.2011
Сообщений: 190
24.06.2012, 22:27  [ТС]     Оформить одномерный массив в виде функций #20
xADMIRALx, выдает
C:\Program Files\Microsoft Visual Studio\MyProjects\функция 12\функция 12.cpp(12) : error C2181: illegal else without matching if
C:\Program Files\Microsoft Visual Studio\MyProjects\функция 12\функция 12.cpp(20) : error C2664: 'maxmass' : cannot convert parameter 1 from 'int' to 'int *'
Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
Error executing cl.exe.

по-моему, должно быть так: первая функция находит максимальный элемент в массиве, а вторая - его номер.
Yandex
Объявления
24.06.2012, 22:27     Оформить одномерный массив в виде функций
Ответ Создать тему
Опции темы

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