Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.75/16: Рейтинг темы: голосов - 16, средняя оценка - 4.75
5 / 5 / 1
Регистрация: 05.11.2011
Сообщений: 190
1

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

24.06.2012, 20:07. Показов 3063. Ответов 24
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
и снова я мучаюсь с функциями

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

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;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.06.2012, 20:07
Ответы с готовыми решениями:

оформить в виде функции одномерный массив
Необходимо выполнить задание, каждый пункт задания оформить в виде функции. В одномерном...

Матрица.Переписать в одномерный массив эл-ты четных столбцов значения которых меньше 1. Оформить в виде Функции
Дана матрица( любого размера. в пределах разумного=)).Переписать в одномерный массив элементы...

Оформить в виде функций
Помогите, пожалуйста, оформить пункты задания в виде функций. В одномерном массиве, состоящем из n...

Оформить программу в виде функций
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; int main(){ int size,i; ...

24
Мастер кустарных методов
232 / 227 / 17
Регистрация: 09.11.2010
Сообщений: 680
24.06.2012, 20:14 2
Цитата Сообщение от Julia9311 Посмотреть сообщение
нужно ли последний пункт int main() оформить в виде void vvod?
main даже без возвращения чего-либо может быть int.

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

Добавлено через 1 минуту
Цитата Сообщение от Julia9311 Посмотреть сообщение
1.) вычислить номер максимального по модулю элемента массива
вам дали задание так заумно это делать или это вы сами намудрили?
0
5 / 5 / 1
Регистрация: 05.11.2011
Сообщений: 190
24.06.2012, 20:17  [ТС] 3
LEQADA, в принципе, динамическое выделение памяти здесь не обязательно, просто мне нужно было раньше сделать это задание с выделением памяти, а теперь надо оформить его в виде функций
0
Мастер кустарных методов
232 / 227 / 17
Регистрация: 09.11.2010
Сообщений: 680
24.06.2012, 20:18 4
Цитата Сообщение от Julia9311 Посмотреть сообщение
здесь, наверное, нужно отдельно сделать функцию поиска первого положительного элемента и функцию суммы элементов?
можно
0
5 / 5 / 1
Регистрация: 05.11.2011
Сообщений: 190
24.06.2012, 20:20  [ТС] 5
1.) вычислить номер максимального по модулю элемента массива
сама)
0
Мастер кустарных методов
232 / 227 / 17
Регистрация: 09.11.2010
Сообщений: 680
24.06.2012, 20:22 6
Цитата Сообщение от Julia9311 Посмотреть сообщение
1.) вычислить номер максимального по модулю элемента массива
напрашивается вопрос: что, если максимальных несколько?
0
5 / 5 / 1
Регистрация: 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;
}
0
Мастер кустарных методов
232 / 227 / 17
Регистрация: 09.11.2010
Сообщений: 680
24.06.2012, 20:33 8
Цитата Сообщение от Julia9311 Посмотреть сообщение
вот как выглядит эта программа без функций
Где вы ищете максимальный по модулю элемент? -_-
0
5 / 5 / 1
Регистрация: 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];
}

подразумевалось, что эта часть должна искать максимальный по модулю элемент
0
Мастер кустарных методов
232 / 227 / 17
Регистрация: 09.11.2010
Сообщений: 680
24.06.2012, 20:58 10
Цитата Сообщение от Julia9311 Посмотреть сообщение
подразумевалось, что эта часть должна искать максимальный по модулю элемент
эта часть заполняет массив псевдослучайными числами. Вы хоть проверяли сами этот код?
0
5 / 5 / 1
Регистрация: 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;
}
по-моему, эта часть и должна искать номер максимального по модулю элемента
0
Мастер кустарных методов
232 / 227 / 17
Регистрация: 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))
если будет... не знаю будет ли... проверяйте...
0
5 / 5 / 1
Регистрация: 05.11.2011
Сообщений: 190
24.06.2012, 21:13  [ТС] 13
программа-то работает, только как ее оформить в виде функций?
0
Мастер кустарных методов
232 / 227 / 17
Регистрация: 09.11.2010
Сообщений: 680
24.06.2012, 21:18 14
Цитата Сообщение от Julia9311 Посмотреть сообщение
программа-то работает, только как ее оформить в виде функций?
Так она оформлена уже в виде функций
Вот ваши функции:
modcmp
distance
max_element
main

Дело в том, что если преподаватель задаст вопрос по коду, вы не ответите на него.
0
5 / 5 / 1
Регистрация: 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;
}
0
Мастер кустарных методов
232 / 227 / 17
Регистрация: 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, например?
0
70 / 64 / 5
Регистрация: 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;
}
0
5 / 5 / 1
Регистрация: 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;
    
}
0
70 / 64 / 5
Регистрация: 09.06.2012
Сообщений: 291
24.06.2012, 22:23 19
Я так понимаю вам надо написать 2 функции 1 запрашивает значения,затем записываем в масив размер size_t = 5; затем пишем еще 1 функцию котораю определяет максимальное значение в массиве и выводит его индекс ?
0
5 / 5 / 1
Регистрация: 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.

по-моему, должно быть так: первая функция находит максимальный элемент в массиве, а вторая - его номер.
0
24.06.2012, 22:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.06.2012, 22:27
Помогаю со студенческими работами здесь

Оформить в виде функций программу
Всем привет! Помогите пожалуйста оформить задачу в виде функций. /*В одномерном массиве,...

Оформить программу в виде функций
Недавно столкнулся с такой вот задачей: Дана матрица размером M на N, нужно сформировать одномерный...

Оформить простейшие задачи в виде функций
Ребят помогите пожалуйста с задачками для CodeBlocks. Реализовать задачи 1 и 2 в виде функций...

Программу оформить в виде функций законченные последовательности действий
Нужно переделать программу под это задание: Программу оформить в виде функций законченные...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru