Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
24 / 24 / 2
Регистрация: 26.07.2009
Сообщений: 414
1

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

07.08.2009, 19:52. Просмотров 795. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.08.2009, 19:52
Ответы с готовыми решениями:

Определить кол-во убывающих последовательностей в массиве из 20 целых неотрицательных элементов
Не могу отладить прогу, пишет что ошибка в строке 71,77,106 никак не могу разобраться. Вот код: N...

Сформировать новый массив из неотрицательных элементов массива В, найти среднее арифметическое элементов нового массива
всем здарсте ребят, сижу на зачете... такая задачка - задан массив В(20). Сформировать новый...

Посчитать кол-во отрицательных и кол-во положительных элементов массива. Вывести массив на экран
Дан массив 5x5, заполнен случайными числами от -10 до 10. Посчитать кол-во отрицательных и кол-во...

Сумма неотрицательных элементов массива
помогите пожалуйста написать программу на java! Задан массив размерности 10,найти сумму...

8
Эксперт JavaЭксперт С++
8365 / 3586 / 419
Регистрация: 03.07.2009
Сообщений: 10,708
07.08.2009, 20:13 2
во первых, 1(как и 2, и 3) - это тоже неотрицательное число.
во вторых, чтобы применять инкремент, необходимо снаала присвоить некоторое начальное значение(строка 41 int gsnch = 0
и наконец обьясни мне смысл приведения к float в 33 строке
0
24 / 24 / 2
Регистрация: 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
Maniac
Эксперт С++
1453 / 954 / 159
Регистрация: 02.01.2009
Сообщений: 2,815
Записей в блоге: 1
07.08.2009, 20:26 4
Цитата Сообщение от crashc Посмотреть сообщение
C++
1
cout << *(q[i]+v)
нахрена такие мансы...
так ведь красивее
C++
1
cout << q[i][v]
0
24 / 24 / 2
Регистрация: 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
Эксперт JavaЭксперт С++
8365 / 3586 / 419
Регистрация: 03.07.2009
Сообщений: 10,708
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
Maniac
Эксперт С++
1453 / 954 / 159
Регистрация: 02.01.2009
Сообщений: 2,815
Записей в блоге: 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
Эксперт JavaЭксперт С++
8365 / 3586 / 419
Регистрация: 03.07.2009
Сообщений: 10,708
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
Maniac
Эксперт С++
1453 / 954 / 159
Регистрация: 02.01.2009
Сообщений: 2,815
Записей в блоге: 1
08.08.2009, 04:49 9
Цитата Сообщение от M128K145 Посмотреть сообщение
ISergey, забей пока,
еще рано до удаления
Главное чтобы не поздно..
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.08.2009, 04:49

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Найти сумму,и кол-во элементов массива>1,найти кол-во элементов массива,равных == 3 и 5
Найти сумму,и кол-во элементов массива &gt;1 (используя for) Найти кол-во элементов массива,равных ==...

Найти сумму,и кол-во элементов массива >1.Найти кол-во элементов массива,равных == 3 и 5
Найти сумму,и кол-во элементов массива &gt;1 (используя for) Найти кол-во элементов массива,равных ==...

Вычисление суммы неотрицательных элементов массива
Доброго времени суток! Помогите написать программу, вычисления суммы неотрицательных элементов...

Определить количество неотрицательных элементов массива
Дан массив целых чисел.Определить количество неотрицательных элементов.


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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