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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Love-Love
6 / 6 / 0
Регистрация: 27.10.2012
Сообщений: 94
#1

Используя собственную функцию, определить количество элементов - C++

08.01.2013, 00:27. Просмотров 537. Ответов 12
Метки нет (Все метки)

Есть задача
Определить два одномерных массива А(19) и В(26); первый ввести с клавиатуры, а второй задать начальной инициализацией.
Используя собственную функцию, определить количество элементов, больших 5 в первом массиве и больших 3 во втором.


я сделала маленькую её часть...НЕ работает функция...и то ее половина....
пожалуйста,помогите понять,где ошибка
И еще вопрос: как красиво вывести массив на экран?

ВСЕМ заранее спасибо!!
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
#include "stdafx.h"
#include "iostream"
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    const int n = 5;
    
    int A [n];
    int B [6] = {1,3,4,6,7,8};
    for ( int i = 0; i < n; i++ )
        cin>> A [i];
    for ( int i = 0; i < n; i++ )
        cout << A [i]<< endl;
    for ( int i = 0; i < 6; i++)
    cout << B[i] << endl;
    cout << kol (k, sum) << endl;
 
        return 0;
}
 
int kol ( int k = 5, int sum = 0)
{
    for (int i=0; i<n; i++)
    {
        if (A[i]>k)
            sum++;
    }
 
    cout << "Kol-vo el-tov bolshe 5:" << sum << endl;
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.01.2013, 00:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Используя собственную функцию, определить количество элементов (C++):

Массивы. Используя сортировку массива, определить количество элементов, совпадающих по значению с максимальным - C++
имеется вот такой код программы) нужно сделать так чтобы вызывалась функция /*Задан неупорядоченный числовой массив, состоящий из n...

Определить максимальное количество одинаковых элементов массива, использовать функцию и указатели - C++
Помогите, пожалуйста, ОЧЕНЬ срочно нужно! Дано целочисленный массив размера N. Определить максимальное количество его одинаковых...

Написать собственную функцию isalnum - C++
Подскажите, как можно написать самому функцию iswalnum?

Создать собственную функцию для расчёта выражения - C++
Даны действительные числа S, T, A0, …, A12. Создать собственную функцию для расчёта выражения:P(X ) = A12X12 + A11 X11 + ... + A0 . ...

Создать собственную функцию для расчёта выражения - C++
Задачу и формулы надо переписывать! Редактор формул внизу страницы. Уважаемые, выручайте. Не знаком и никогда не работал c C++...

Дан массив целых чисел. Определить количество четных элементов и количество элементов, оканчивающихся на цифру 5 - C++
Дан массив целых чисел. Определить количество четных элементов и количество элементов, оканчивающихся на цифру 5 с++

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Nixy
ComfyMobile
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
08.01.2013, 00:40 #2
а вас компилятор не ругает? на то что n объявлена внутри main() и в вашей функции она не доступна

Добавлено через 2 минуты
C++
1
2
3
for ( int i = 0; i < n; i++ )
        cout << A [i]<< " ";
cout<<endl;
вот так будет лучше выводить одномерный массив

Добавлено через 1 минуту
и да в main() у вас не объявлены k, sum за них тоже вас ругать должен компилятор
1
Love-Love
6 / 6 / 0
Регистрация: 27.10.2012
Сообщений: 94
08.01.2013, 00:43  [ТС] #3
на что только компилятор у меня не ругается!
поможете разобраться толком?
n надо объявить вне тела??
0
Nixy
ComfyMobile
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
08.01.2013, 00:49 #4
ну начнем с определения функции, туда нужно передать что, условие сам масив, и размер его, возврашать будем мы количество
C++
1
2
3
4
5
6
7
8
9
int countOfGreater(int* array,int size,int flag){// массив передаем как указатель
    int count = 0;
    for (int i = 0; i < size; i++) {
        if (array[i] > flag) {
            count++;
        }
    }
    return count;
}
1
Love-Love
6 / 6 / 0
Регистрация: 27.10.2012
Сообщений: 94
08.01.2013, 00:53  [ТС] #5
хорошо,это я поняла...сейчас переделаю под свое...
0
Nixy
ComfyMobile
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
08.01.2013, 00:54 #6
теперь перейдем к основной программе там мы должны вызвать нашу функцию с нужными параметрами
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
int main()
{
    SetConsoleCP(1251); //для русского языка в консоле
    SetConsoleOutputCP(1251);
    const int n = 5;
 
    int A [n];
    int B [6] = {1,3,4,6,7,8};
    for ( int i = 0; i < n; i++ ){
        cout << "Введите " << i << " Элемент " ;
        cin>> A [i];
    }
    for ( int i = 0; i < n; i++ )
        cout << A [i]<< " ";
    cout << endl;
    for ( int i = 0; i < 6; i++)
        cout << B[i] << " ";
    cout <<endl;
    cout << "Больше 5 = " <<countOfGreater(A,n,5) << endl;
    cout << "Больше 3 = " <<countOfGreater(B,6,3) << endl;
 
 
    system("pause");
    return 0;
}
1
Love-Love
6 / 6 / 0
Регистрация: 27.10.2012
Сообщений: 94
08.01.2013, 01:09  [ТС] #7
а со вторым массивом так же дописывать в функции?

Добавлено через 5 минут
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
#include "stdafx.h"
#include "iostream"
 
using namespace std;
int kol ( int* A, int n, int k);
int _tmain(int argc, _TCHAR* argv[])
{
    const int n = 5;
    int k=5,sum=0;
    int A [n];
    int B [6] = {1,3,4,6,7,8};
    for ( int i = 0; i < n; i++ ){
        cout << "Введите " << i << " Элемент " ;
        cin>> A [i];
    }
    for ( int i = 0; i < n; i++ )
        cout << A [i]<< " ";
        cout << endl; 
    for ( int i = 0; i < 6; i++)
        cout << B[i] << " ";
        cout << endl;
    cout << "Bolshe 5 = " kol (A, n, 5) << endl;
    
        return 0;
}
 
int kol ( int* A, int n, int k)
{
    int sum = 0;
    for (int i=0; i<n; i++)
    {
        if (A[i] > k)
            sum++;
    }
    return sum;
}

ругается мой компилятор....
0
Nixy
ComfyMobile
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
08.01.2013, 09:55 #8
что пишет,на что ругается
0
Schizorb
509 / 461 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
08.01.2013, 10:04 #9
22 строка:
C++
1
cout << "Bolshe 5 = " << kol (A, n, 5) << endl;
Одну операцию << пропустили
1
Nixy
ComfyMobile
400 / 281 / 8
Регистрация: 24.07.2012
Сообщений: 916
08.01.2013, 11:50 #10
Цитата Сообщение от Love-Love Посмотреть сообщение
а со вторым массивом так же дописывать в функции?
не нужно писать для другого масива другую функцию,
ну начнем с определения функции, туда нужно передать что, условие сам масив, и размер его, возврашать будем мы количество
мы можем передавать туда любой массив, причем можем даже передавать не всю его длину а только часть, и число больше которого мы ищем,отдельную функцию писать уже не надо
C++
1
2
cout << "Больше 5 = " <<countOfGreater(A,n,5) << endl;
    cout << "Больше 3 = " <<countOfGreater(B,6,3) << endl;
вызов происходит вначале от массива А длиной n, потом от массива B известной длины 6
1
Love-Love
6 / 6 / 0
Регистрация: 27.10.2012
Сообщений: 94
08.01.2013, 15:55  [ТС] #11
СПАСИБО!!!!
я все сделала....
поняла(что САМОЕ главное!)

и ГЛАВНОЕ : работает-таки!!!

премного благодарна,что уделили новичку свое время!!!!

Добавлено через 1 минуту
Цитата Сообщение от Schizorb Посмотреть сообщение
22 строка:
C++
1
cout << "Bolshe 5 = " << kol (A, n, 5) << endl;
Одну операцию << пропустили
да,спасибо))
Сегодня утром все-таки увидела свои ошибки....

Добавлено через 33 минуты
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
// Составить функцию, которая по трём заданным сторонам треугольника вычисляет его площадь.
 
#include "stdafx.h"
#include "cmath"
#include "iostream"
 
using namespace std;
float pl (float sum, float x, float y, float z, float p, float S);
int _tmain(int argc, _TCHAR* argv[])
{
    int x, y, z;
    float p, S, sum;
 
    cout << "Vvedite tri storony treugol'nika:" << endl;
    cin >> x;
    cin >> y;
    cin >> z;
    cout << "S treugol'nika = " << pl (sum, x, y, z, p, S) << endl;
    return 0;
}
 
float pl (float sum, float x, float y, float z, float p, float S)
{   
    sum = x + y + z;
    p = sum / 3;
    S = sqrt (p*(p-x)*(p-y)*(p-z));
    return S;
}
а вот тут не подскажете?...функция не хочет работать...
программка запускается,но не считает площадь...
0
vua72
415 / 415 / 85
Регистрация: 28.11.2010
Сообщений: 1,183
Завершенные тесты: 1
08.01.2013, 16:39 #12
C++
1
float pl (float sum, float x, float y, float z, float p, float S)
При таком объявлении во время вызова функции создаются локальные копии переменных, значения которых утериваются
1>h:\my documents\visual studio 2010\projects\tr\tr\tr.cpp(20): warning C4244: аргумент: преобразование "int" в "float", возможна потеря данных
1>h:\my documents\visual studio 2010\projects\tr\tr\tr.cpp(20): warning C4244: аргумент: преобразование "int" в "float", возможна потеря данных
1>h:\my documents\visual studio 2010\projects\tr\tr\tr.cpp(20): warning C4244: аргумент: преобразование "int" в "float", возможна потеря данных
1>h:\my documents\visual studio 2010\projects\tr\tr\tr.cpp(20): warning C4700: использована неинициализированная локальная переменная "S"
1>h:\my documents\visual studio 2010\projects\tr\tr\tr.cpp(20): warning C4700: использована неинициализированная локальная переменная "p"
1>h:\my documents\visual studio 2010\projects\tr\tr\tr.cpp(20): warning C4700: использована неинициализированная локальная переменная "sum"
1> tr.vcxproj -> h:\my documents\visual studio 2010\Projects\tr\Debug\tr.exe
========== Построение: успешно: 1, с ошибками: 0, без изменений: 0, пропущено: 0 ==========

У вас должны были быть подобные предупреждения.
Вы могли бы сделать так, чтобы ваш код заработал
C++
1
2
  float x, y, z;
    float p=0.0, S=0.0, sum=0.0;
но правильней было примерно так
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
#include "cmath"
#include "iostream"
using namespace std;
bool check(float x, float y, float z);
// или inline bool check(float x, float y, float z);
float pl (float x, float y, float z);
int _tmain(int argc, _TCHAR* argv[])
{
    float x, y, z;
    do{
        cout << "Vvedite tri storony treugol'nika:" << endl;
        cin >> x >> y >> z;
    }while (!check(x,y,z));
    cout << "S treugol'nika = " << pl (x, y, z) << endl;
    return 0;
}
 
float pl (float x, float y, float z)
{   
    float p = (x + y + z)/2.0f; 
    return sqrt (p*(p-x)*(p-y)*(p-z));
}
bool check(float x, float y, float z)
{
    return (x+y>z) && (x+z>y) && (z+y>x) && (x>0) && (y>0) && (z>0);
}
И еще, здесь есть правило - один вопрос - одна тема. Будут вопросы - спрашивайте.

Добавлено через 7 минут
или так
C++
1
2
3
4
5
6
7
8
inline bool check(float x, float y, float z){
    if (!((x+y>z) && (x+z>y) && (z+y>x) && (x>0) && (y>0) && (z>0))) 
    {
        cout << endl << "Error. It's not triangle"<<endl; 
        return false;
    }
    else return true;
};
1
Love-Love
6 / 6 / 0
Регистрация: 27.10.2012
Сообщений: 94
08.01.2013, 16:45  [ТС] #13
я поняла...уже проверила...РАБОТАЕТ!!!
Спасибо огромное!!!!!!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.01.2013, 16:45
Привет! Вот еще темы с ответами:

Определить степень числа с целочисленным показателем, не используя функцию pow - C++
Написать программу, которая определяет степень числа с целочисленным показателем, не используя функцию pow. a^k, где к может быть...

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

Используя функцию, составить программу, которая считает количество изменений знака в массиве чисел. y=f(x). В С++ - C++
Используя функцию, составить программу, которая считает количество изменений знака в массиве чисел. y=f(x). В С++.

Вычислить суммы элементов столбцов матрицы, используя функцию - C++
Есть задача, вычислить суммы элементов столбцов матрицы, используя функцию. Я написала программу, которая работает для матрицы 3х3, но мою...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
08.01.2013, 16:45
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru