Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/14: Рейтинг темы: голосов - 14, средняя оценка - 4.93
7 / 7 / 2
Регистрация: 12.11.2012
Сообщений: 203
1

объявление переменных

16.12.2012, 22:15. Показов 2674. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
вообщем есть задание которое не раз тут обсуждалось решалось и тд. суть не в этом. столкнулся с маленькой проблемой при оформлении каждого пункта задания в виде отдельной функции, выводит ошибку типа идентификатор определение подскажите пожалуйста где я допускаю ошибку. коментами отключил ругающуюся часть,блок который должен быть в этой функции не удалял из main
C++
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
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
/*4. В одномерном массиве, состоящем из n вещественных элементов, вычислить:
• номер минимального элемента;
• сумму элементов массива, расположенных между первым и вторым отрицательными элементами.
• Преобразовать таким образом, чтобы сначала располагались все элементы, модуль которых не превышает 1, а потом – все остальные.
Каждый пункт задания оформить в виде отдельной функции.*/
#include <cstdlib>
#include <iostream>
#include <math.h>
#include <conio.h>
#include <windows.h>
using namespace std;
double sumEl ();
int conversion ();
 
 
int main()
{
    SetConsoleCP (1251);
    SetConsoleOutputCP (1251);
    int n;
    cout<<"Введите размер массива:  ";
    cin>>n;
    int*ptm;
    double *masS=new double[n];
    int i;
    float sum = 0;
    int min = 0;
    int a = -1, b = -1;
    cout << "Введите массив из " << n <<" чисел:\n";
    for (i=0; i<n; i++){printf("array[%d] = ",i); cin>>masS[i];
    if (masS[min] > masS[i])
                        min = i;
                    if (masS[i] < 0)
                        if (a == -1)
                            a = i;
                        else if (b == -1)
                            b = i;}
    if (a == -1 || b == -1)
                    cout<<"В массиве нет хотя бы двух отрицательных чисел: сумму не посчитать!";
                else
                {
                    float sum = 0;
                    for (int i = a + 1; i < b; i++)
                        sum += masS[i];
                    printf("Сумма между двумя отрицательными числами = [%d]", sum);
                }
 
    cout<<"\n_________________________________________\n";
    printf("Номер минимального элемента = [%d]", min);
    cout<<"\n_________________________________________\n"<<"Student GROUP: VIZ-173 Alexsey Doorman.\n";
    system("Pause");
    return 0;
}
/*int namberMin ()
{
}
double sumEl ()
{
    int a, b, sum;
    if (a == -1 || b == -1)
                    cout<<"В массиве нет хотя бы двух отрицательных чисел: сумму не посчитать!";
                else
                {
                    float sum = 0;
                    for (int i = a + 1; i < b; i++)
                        sum += masS[i];
                    printf("Сумма между двумя отрицательными числами = [%d]", sum);
                }
}
int conversion ()
{
}
*/
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.12.2012, 22:15
Ответы с готовыми решениями:

Объявление переменных в С++
Начал изучение С++ и возник такой вопрос как повторно производить действия с переменными после их...

Объявление переменных
подскажите пожалуйста, чем вот то, что выше отличается от вот этого: char ch; и в каких...

Объявление переменных
Пишу на VS2012. Перерыл кучу сайтов, но нигде не нашел, как объявить переменную в asm вставке? ...

Объявление переменных
Помогите с объявлением переменных, даны такие объявления: int m1; int *m2; int **m3; int m4;...

4
512 / 464 / 81
Регистрация: 07.04.2012
Сообщений: 869
Записей в блоге: 1
16.12.2012, 22:32 2
masS - не определен в функции sumEl. Передавайте его в функцию как параметр.
0
7 / 7 / 2
Регистрация: 12.11.2012
Сообщений: 203
16.12.2012, 22:46  [ТС] 3
то есть? указать его в объявлении функции? если я правильно понял
0
512 / 464 / 81
Регистрация: 07.04.2012
Сообщений: 869
Записей в блоге: 1
16.12.2012, 23:10 4
C++
1
int conversion(double * masS, int n);
Ну и размер n наверняка в функции понадобится.

И вообще судя по вашей функции, вам нужно будет передавать еще как минимум a и b.

C++
1
int a, b, sum;
- вот внутри функции вы их заново объявили. Но это будут совершенно другие переменные, не имеющие ничего общего (кроме имени) с переменными из ф-ции main. Собственно и лежать в них будет какой-нибудь мусор, а не то что вы вычисляли с помощью:

C++
1
2
3
4
5
if (masS[i] < 0)
if (a == -1)
 a = i;
else if (b == -1)
b = i;}
Добавлено через 2 минуты
Не смешивайте в одном коде cout<< и printf, лучше на чем нибудь одном остановиться.

Добавлено через 10 минут
Для примера, вот вызов функции, которая находит индекс минимального элемента.

C++
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
41
42
43
44
45
46
47
48
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int number_min(double * arr, int size);
 
int main()
{
    int n;
    
    cout << "Введите размер массива:  ";
    cin >> n;
 
    double *masS=new double[n];
    int i;
 
    cout << "Введите массив из " << n <<" чисел:\n"; 
    for (i = 0; i<n; i++)
    {   
        cout << "array[" << i << "] = ";
        cin >> masS[i];
    }
    
    int i_min = number_min(masS, n);
    
    cout << "\nnomer min = " << i_min << "\n";
    cout << "min = " << masS[i_min] << "\n"; 
    
    system("Pause");
    return 0;
}
 
 
int number_min(double * arr, int size)
{
    int i_min = 0, i;
    
    for(i = 0; i < size; ++i)
    {
        if(arr[i] < arr[i_min])
        {   
            i_min = i;
        }
    }
    
    return i_min;
}
Как видно, названия аргументов и формальных параметров могут не совпадать.

Вот прототип функции, из которго видно, что она принимает 1 параметр типа указатель на double и 2-ой - типа int.
C++
1
int number_min(double * arr, int size)
Это вызов для конкретных аргументов, т.е. для массива masS и его размера n.
C++
1
number_min(masS, n);
0
7 / 7 / 2
Регистрация: 12.11.2012
Сообщений: 203
16.12.2012, 23:30  [ТС] 5
по поводу a,b, .... понятно. нужно чтоб все функции работали с массивом masS[] объявленном в main, с помощью динамического выделения памяти, то есть реализовать это можно через для функции conversion:
C++
1
int conversion(double * masS, int n);
если я укажу переменные с теми же значениями то они будут нести одни и те же данные во всех функциях.
по поводу cout<< printf - я не разобрался как мне вывести на экран предложение ввести значение в формате masS[0] = "ввод значения" с помощью cout<<, можно перейти на printf-scanf но у нас препод ссылается на то что это старый формат и сейчас в С++ не применяется поэтому пишу двумя способами чтобы добится результата на экране и угодить ему показав что могу и так и так.(имхо- написал бред)

Добавлено через 5 минут
Цитата Сообщение от Schizorb Посмотреть сообщение
C++
1
int conversion(double * masS, int n);
Ну и размер n наверняка в функции понадобится.

И вообще судя по вашей функции, вам нужно будет передавать еще как минимум a и b.

C++
1
int a, b, sum;
- вот внутри функции вы их заново объявили. Но это будут совершенно другие переменные, не имеющие ничего общего (кроме имени) с переменными из ф-ции main. Собственно и лежать в них будет какой-нибудь мусор, а не то что вы вычисляли с помощью:

C++
1
2
3
4
5
if (masS[i] < 0)
if (a == -1)
 a = i;
else if (b == -1)
b = i;}
Добавлено через 2 минуты
Не смешивайте в одном коде cout<< и printf, лучше на чем нибудь одном остановиться.

Добавлено через 10 минут
Для примера, вот вызов функции, которая находит индекс минимального элемента.

C++
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
41
42
43
44
45
46
47
48
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int number_min(double * arr, int size);
 
int main()
{
    int n;
    
    cout << "Введите размер массива:  ";
    cin >> n;
 
    double *masS=new double[n];
    int i;
 
    cout << "Введите массив из " << n <<" чисел:\n"; 
    for (i = 0; i<n; i++)
    {   
        cout << "array[" << i << "] = ";
        cin >> masS[i];
    }
    
    int i_min = number_min(masS, n);
    
    cout << "\nnomer min = " << i_min << "\n";
    cout << "min = " << masS[i_min] << "\n"; 
    
    system("Pause");
    return 0;
}
 
 
int number_min(double * arr, int size)
{
    int i_min = 0, i;
    
    for(i = 0; i < size; ++i)
    {
        if(arr[i] < arr[i_min])
        {   
            i_min = i;
        }
    }
    
    return i_min;
}
Как видно, названия аргументов и формальных параметров могут не совпадать.

Вот прототип функции, из которго видно, что она принимает 1 параметр типа указатель на double и 2-ой - типа int.
C++
1
int number_min(double * arr, int size)
Это вызов для конкретных аргументов, т.е. для массива masS и его размера n.
C++
1
number_min(masS, n);
спс вроде бы разобрался но вот конструкция с выводом через cout<< показалась мене удобной
C++
1
cout << "array[" << i << "] = ";
но все равно придется привыкть а то нам с преподом еще 3 года дружить))
вообще все можно было сделать через глобальные константы но это все очень просто(
0
16.12.2012, 23:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.12.2012, 23:30
Помогаю со студенческими работами здесь

Объявление переменных.
У меня есть два юнита с формами. В одном располагается TMainMenu, где я выбираю как производится...

Объявление переменных
Добрый вечер.Подскажите,пожалуйста,не могу разобраться.Непонятно,почему в строках 14-15 значение...

Объявление и инициализация переменных
помогите исправить, пожалуйста.... Решение: #include &lt;iostream.h&gt; #include &lt;math.h&gt; double...

Объявление нескольких переменных
Не знаю почему, но компилятор выдает такие ошибки на этот код. Код конструктораTime::Time() {...


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

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