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

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

Войти
Регистрация
Восстановить пароль
 
crashc
23 / 23 / 4
Регистрация: 26.07.2009
Сообщений: 414
#1

Расчет кол-ва неотрицательных элементов массива - C++

07.08.2009, 19:52. Просмотров 586. Ответов 8
Метки нет (Все метки)

надо найти кол-во не отрицательных элементов массива он выводит какое-то число далеко заходящее за номера элементов
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
#pragma hdrstop
#include <iostream.h>
#include <stdlib.h>
//---------------------------------------------------------------------------
#pragma argsused
int snch( int**j,const int x,const int y);
int main(){
 int x,y; cout<<"--------------------------------------------------------------------------------"<<endl;
 cout<<"Vvedite kol-vo strok i stolbzov "<<endl;
 cin>>x>>y;
 int **q=new int*[x];
 for(int i=0;i<x;i++)
 q[i]=new int[y];
 //Ввод массива cout<<"--------------------------------------------------------------------------------"<<endl;
 cout<<"Vvedite chisla"<<endl;
 for(int i=0;i<x;i++){
 for(int v=0;v<y;v++){
 cin>>q[i][v];
 }
 }
 //Вывод массива
cout<<"--------------------------------------------------------------------------------"<<endl;
 cout<<"Ishodniy massiv"<<endl;
 for(int i=0;i<x;i++){
 for(int v=0;v<y;v++){
 cout<<*(q[i]+v)<<"\t"<<endl;
 }
 }
 //Вывод количиства не отрицательных элементов
cout<<"--------------------------------------------------------------------------------"<<endl;
 cout<<"Vivod kol-va Neotriz elementov"<<endl;
 cout<< float(snch(q,x,y));
        cin.get();
        cin.get();
        return 0;
}
//Расчет колва не отрицательных элементов
//---------------------------------------------------------------------------
 int snch(int**j,const int x,const int y){
 int gsnch;
 for(int i=0;i<x;i++){
 for(int v=0;v<y;v++){
 if((*(j[i]+v))==0){
 gsnch++;
 }
 }
 }
return gsnch;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.08.2009, 19:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Расчет кол-ва неотрицательных элементов массива (C++):

Определить кол-во элементов массива, которые больше среднеарифметического значения всех элементов массива - C++
Сделать программу, к-рая случайно заполняет массив А (n&lt;30) целыми значениями. Определить кол-во элементов массива, которые больше...

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

Найти сумму неотрицательных и произведение положительных элементов массива - C++
Мужики подскажите как написать пожалуйста!!! Составить программу, использующую для хранения значений одномерный массив: const N=10; ...

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

Функция, которая возвращает количество неотрицательных элементов массива. (через указатели) - C++
Написать функцию, которая возвращает количество неотрицательных элементов массива. Массив передается в функцию в качестве параметра через...

Посчитать кол-во элементов между максимальным и минимальным значением элементов двумерного массива( подразумевается, что эти значения уже найдены) - C++
Как посчитать? З.Ы. массив 5х2(если это важно...)

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
M128K145
Эксперт С++
8288 / 3508 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
07.08.2009, 20:13 #2
во первых, 1(как и 2, и 3) - это тоже неотрицательное число.
во вторых, чтобы применять инкремент, необходимо снаала присвоить некоторое начальное значение(строка 41 int gsnch = 0
и наконец обьясни мне смысл приведения к float в 33 строке
0
crashc
23 / 23 / 4
Регистрация: 26.07.2009
Сообщений: 414
07.08.2009, 20:19  [ТС] #3
мM128K145, потому что в этой программе вот она
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
#pragma argsused
int main(int argc, char* argv[])
{int A[4][5],sred,y=0,p=0;
 cout<<"Vvedite chislo"<<endl;
//Ввод массива
 for(int i=0; i<4;i++)
 {for(int u=0; u<5;u++)
   {cin>>A[i][u];}}
//Вывод массива
  for(int i=0; i<4;i++)
     {for(int u=0; u<5;u++)
    {cout<<*(A[i]+u)<<"\t";}
    cout<<endl;}
//Подсчет среднего арифметического
for(int i=0, u=1; i<4;i++)
    {y+=*(A[i]+u);
    }
    cout<<"Srednee arif stolbza= "<<float(y/(4*5))<<endl;;
for(int i=1, u=0; u<5;u++)
    {p+=*(A[i]+u);
    }
    cout<<"Srednee arif stroki= "<<float(p/(4*5));
        cin.get();
        cin.get();
        return 0;
мне прилось сделать потму что он печатал какой-то код из цифр не понятный, а после приведения стал выводить правильно.
здесь я решил сделать точно так же
0
ISergey
Maniac
Эксперт С++
1374 / 885 / 52
Регистрация: 02.01.2009
Сообщений: 2,658
Записей в блоге: 1
07.08.2009, 20:26 #4
Цитата Сообщение от crashc Посмотреть сообщение
C++
1
cout << *(q[i]+v)
нахрена такие мансы...
так ведь красивее
C++
1
cout << q[i][v]
0
crashc
23 / 23 / 4
Регистрация: 26.07.2009
Сообщений: 414
07.08.2009, 20:30  [ТС] #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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
//---------------------------------------------------------------------------
#pragma hdrstop
#include <iostream.h>
#include <stdlib.h>
//---------------------------------------------------------------------------
#pragma argsused
int snch( int**j,const int x,const int y);
int main(){
 int x,y;
cout<<"--------------------------------------------------------------------------------"<<endl;
 cout<<"Vvedite kol-vo strok i stolbzov "<<endl;
 cin>>x>>y;
 int **q=new int*[x];
 for(int i=0;i<x;i++)
 q[i]=new int[y];
 //Ââîä Г¬Г*Г±Г±ГЁГўГ* cout<<"--------------------------------------------------------------------------------"<<endl;
 cout<<"Vvedite chisla"<<endl;
 for(int i=0;i<x;i++){
 for(int v=0;v<y;v++){
 cin>>q[i][v];
 }
 }
 //Âûâîä Г¬Г*Г±Г±ГЁГўГ*
cout<<"--------------------------------------------------------------------------------"<<endl;
 cout<<"Ishodniy massiv"<<endl;
 for(int i=0;i<x;i++){
 for(int v=0;v<y;v++){
 cout<<*(q[i]+v)<<"\t"<<endl;
 }
 }
 //Âûâîä êîëè÷èñòâГ* Г*ГҐ îòðèöГ*òåëüГ*ûõ ýëåìåГ*òîâ
cout<<"--------------------------------------------------------------------------------"<<endl;
 cout<<"Vivod kol-va Neotriz elementov"<<endl;
 cout<< float(snch(q,x,y));
        cin.get();
        cin.get();
        return 0;
}
//ГђГ*Г±Г·ГҐГІ êîëâГ* Г*ГҐ îòðèöГ*òåëüГ*ûõ ýëåìåГ*òîâ
//---------------------------------------------------------------------------
 int snch(int**j,const int x,const int y){
 int gsnch=0;
 for(int i=0;i<x;i++){
 for(int v=0;v<y;v++){
 if((*(j[i]+v))>=0){
 gsnch++;
 }
 }
 }
return gsnch;
}
0
M128K145
Эксперт С++
8288 / 3508 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
07.08.2009, 20:32 #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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include "stdafx.h"
#include <iostream>
 
int snch(int**j,const int x,const int y);
int main()
{
    int n, m, i(0), j(0);
    std::cout<<"--------------------------------------------------------------------------------"<<std::endl;
    std::cout<<"Vvedite kol-vo strok i stolbzov "<<std::endl;
    std::cin>>n>>m;
    int **q=new int*[n];
    for(i = 0; i < n; ++i)
        q[i]=new int[m];
    //Ввод массива 
    std::cout<<"--------------------------------------------------------------------------------"<<std::endl;
    std::cout<<"Vvedite chisla"<<std::endl;
    for(i = 0; i < n; ++i)
        for(j = 0; j < m; ++j)
            std::cin>>q[i][j];
    //Вывод массива
    std::cout<<"--------------------------------------------------------------------------------"<<std::endl;
    std::cout<<"Ishodniy massiv"<<std::endl;
    for(i = 0; i < n; ++i, std::cout<<std::endl)
        for(j = 0; j < m; ++j)
            std::cout<<*(q[i] + j)<<' ';
    //Вывод количиства не отрицательных элементов
    std::cout<<"--------------------------------------------------------------------------------"<<std::endl;
    std::cout<<"Vivod kol-va Neotriz elementov"<<std::endl;
    std::cout<< snch(q, n, m)<<std::endl;
    system("pause");
    return 0;
}
//Расчет колва не отрицательных элементов
//---------------------------------------------------------------------------
int snch(int **mas, const int n,const int m)
{
    int gsnch=0;
    int z = 1;
    int j;
    for(int i = 0; i < n; ++i)
        for(j = 0;  j < m; ++j)
            if((*(mas[i] + j)) >= 0)
                gsnch++;
    return gsnch;
}
сейчас посмотрю, что там не так выводит
0
ISergey
Maniac
Эксперт С++
1374 / 885 / 52
Регистрация: 02.01.2009
Сообщений: 2,658
Записей в блоге: 1
07.08.2009, 20:43 #7
C++
1
int snch(int**j,const int x,const int y);
здесь const лишние..

C++
1
2
3
int **q=new int*[n];
        for(i = 0; i < n; ++i)
                q[i]=new int[m];
удалять кто будет в итоге..
0
M128K145
Эксперт С++
8288 / 3508 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
07.08.2009, 20:58 #8
crashc, еще пара вопросов/замечаний.
1) Желательно изучить примитивную математику перед тем как ваять подобные программы. Это к тому, что среднее арифметиеское столбца - это сумма всех элементов столбца разделенное на количество элементов в столбце(со строкой аналогично)
2) Хоть к чему не приводи такую запись y/4 - все равно у тебя будет целое число, а вот при такой записи float(y)/4 получиш уже и десятичную часть.
3) Забудь про cin.get() и юзай system("pause")
4) Вот скажи что это за шедевр???
C++
1
2
for(int i=1, u=0; u<5;u++)
    p+=*(A[i]+u);
Если уже и сделал i константой, то напиши ее раньше, а не в цикле прячь, где скорее всего когда кто-то другой будет доделывать программу потеряет его(Да и зачем создавать новую переменную-то?? ведь проще написать p+=*(A[1]+u))
5) Применяй обычное выравнивание
C++
1
2
3
for(;;)
{
}
так сложнее потерять скобки и проще читать. Если после фора, ифа etc. идет всего один оператор то не надо ставить скобки
6) Вообще-то для имен переменных для матриц применяют к размерности n и m, и для индексов i и j

Не по теме:

ISergey, забей пока,
еще рано до удаления

0
ISergey
Maniac
Эксперт С++
1374 / 885 / 52
Регистрация: 02.01.2009
Сообщений: 2,658
Записей в блоге: 1
08.08.2009, 04:49 #9
Цитата Сообщение от M128K145 Посмотреть сообщение
ISergey, забей пока,
еще рано до удаления
Главное чтобы не поздно..
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.08.2009, 04:49
Привет! Вот еще темы с ответами:

Определение кол-ва нечетных элементов массива с функцией - C++
Здравствуйте,помогите пожалуйста с нахождением ошибки в коде,программа всегда выдает 0. #include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; ...

Не могу допереть до алгоритма определения суммы и кол-ва элементов массива - C++
Вот какое задание было: &quot;Элементы массива размером (310) вычисляются следующим образом: В первой строке содержатся случайные числа...

Сформировать два массива размерности 10, посчитать кол-во отрицательных элементов - C++
Цель:Закрепить базовые алгоритмы работы с одномерными массивами(C++ Builder) Ввести с клавиатуры массив,состоящий из 20...

Найти кол-во элементов двумерного массива отличающихся от среднего менее, чем на 17% - C++
Заранее спасибо.


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

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

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