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

Подсчитать количество нулей в массиве - C++

Восстановить пароль Регистрация
 
Kellerman
 Аватар для Kellerman
0 / 0 / 0
Регистрация: 20.10.2011
Сообщений: 34
08.12.2011, 23:12     Подсчитать количество нулей в массиве #1
Дан массив заполненный случайным образом нулями и единицами.
определить номер последнего нуля в массиве.
подсчитать количество нулей в массиве.
задачу решить с использование функций.

вот что написал но есть пара проблем.
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 "stdafx.h"
#include <iostream>
using namespace std;
const int N=10;
int M[N];
int x1,x2;
 
void rd(int*T);
void rd2(int*T2);
int work(const int *K);
int work1(const int *Z);
int main ()
{
    rd(M);
    rd2(M);
    x1=work (M);
    x2=work1 (M);
    return 0;
}
void rd(int*T)
{
    for (int i=0; i<N;i++)
        {M[i]=rand()%2;}
}
void rd2(int*T2)
    {cout<<"masiv 4isel: ";
        for (int i=0; i<N;i++)
        {cout<<M[i];}
        cout<<endl;
    }
int work(const int *K)
    {
        int k;
        for (  int i=N; i>0; i--)       
        if (M[i]==0) {k=i; break;}
        
 
        cout<<"posledniy 0 pod nomerom =  "<<k<<endl;
        return x1;
}
 
int work1(const int *Z)
    {int z=0;
    for (int i=0;i<N;i++)
        if (M[i]==0) z++;
            cout<<"kol-vo nuley =   "<<z<<endl;
    return x2;
    }
первая проблема :
как каждый раз заполнять массив другими комбинациями ибо когда заполняю
C++
1
2
for (int i=0; i<N;i++)
{M[i]=rand()%2;}
постоянно одна комбинация.

2.
как определить номер последнего нуля.

когда делаю так
C++
1
2
3
4
5
6
7
8
9
10
int work(const int *K)
    {
        int k;
        for (  int i=N; i>0; i--)       
        if (M[i]==0) {k=i; break;}
        
 
        cout<<"posledniy 0 pod nomerom =  "<<k<<endl;
        return x1;
}
постоянно получаю ответ 10, даже если под 10 номером будет стоять не 0.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.12.2011, 23:12     Подсчитать количество нулей в массиве
Посмотрите здесь:

Подсчитать количество нулей в массиве C++
C++ Подсчитать в массиве количество положительных, отрицательных чисел и нулей
В последовательности из N произвольных чисел подсчитать количество нулей C++
Найти количество нулей в одномерном массиве C++
C++ В последовательности из n произвольных чисел подсчитать количество нулей
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Avrus2011
0 / 0 / 0
Регистрация: 08.12.2011
Сообщений: 16
08.12.2011, 23:21     Подсчитать количество нулей в массиве #2
Насчет второй проблемы))
Без выхода попробуй))
Переменной к присваивай каждый номер нуля, тогда номер останется только от последнего))
И break не нужен тогда)))
amor1k
Студент
 Аватар для amor1k
147 / 147 / 24
Регистрация: 18.01.2011
Сообщений: 469
08.12.2011, 23:22     Подсчитать количество нулей в массиве #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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <iostream>
using namespace std;
const int N=10;
int M[N];
int x1,x2;
 
void rd(int*T);
void rd2(int*T2);
int work(const int *K);
int work1(const int *Z);
int main ()
{
    rd(M);
    rd2(M);
    x1=work (M);
    x2=work1 (M);
    return 0;
}
void rd(int*T)
{
    for (int i=0; i<N;i++)
    {M[i]=rand()%2;}
}
void rd2(int*T2)
{cout<<"masiv 4isel: ";
for (int i=0; i<N;i++)
{cout<<M[i];}
cout<<endl;
}
int work(const int *K)
{
    int k;
    for (  int i=N; i>0; i--)               
        if (M[i]==0) {k=i; break;}
 
 
        cout<<"posledniy 0 pod nomerom =  "<<k<<endl;
        return x1;
}
 
int work1(const int *Z)
{int z=0;
for (int i=0;i<N;i++)
    if (M[i]==0) z++;
cout<<"kol-vo nuley =   "<<z<<endl;
return x2;
}
Avrus2011
0 / 0 / 0
Регистрация: 08.12.2011
Сообщений: 16
08.12.2011, 23:27     Подсчитать количество нулей в массиве #4
C++
1
2
3
4
5
6
7
8
9
void work()
{
        int k;
        for (  int i=0; i<N; i++)       
        if (M[i]==0) 
                         k=i;
        
        cout<<"posledniy 0 pod nomerom =  "<<k<<endl;
{
Так попробуй))
Kellerman
 Аватар для Kellerman
0 / 0 / 0
Регистрация: 20.10.2011
Сообщений: 34
08.12.2011, 23:40  [ТС]     Подсчитать количество нулей в массиве #5
[img]http://*************/clip/m87613/thumb640/1323372987-clip-7kb.png[/img]

заполнил массив вручную вот что пишет даже когда изменил по твоему совету
amor1k
Студент
 Аватар для amor1k
147 / 147 / 24
Регистрация: 18.01.2011
Сообщений: 469
08.12.2011, 23:51     Подсчитать количество нулей в массиве #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
46
47
48
49
#include <iostream>
#include <ctime>
using namespace std;
const int N=10;
int M[N];
int x1,x2;
 
void rd(int*T);
void rd2(int*T2);
int work(const int *K);
int work1(const int *Z);
int main ()
{
    srand(time(NULL));
    rd(M);
    rd2(M);
    x1=work (M);
    x2=work1 (M);
    return 0;
}
void rd(int*T)
{
    for (int i=0; i<N;i++)
    {M[i]=rand()%2;}
}
void rd2(int*T2)
{cout<<"masiv 4isel: ";
for (int i=0; i<N;i++)
{cout<<M[i];}
cout<<endl;
}
int work(const int *K)
{
    int k;
    for (  int i=0; i<N; i++)               
        if (M[i]==0) {k=i;}
 
 
        cout<<"posledniy 0 pod nomerom =  "<<k<<endl;
        return x1;
}
 
int work1(const int *Z)
{int z=0;
for (int i=0;i<N;i++)
    if (M[i]==0) z++;
cout<<"kol-vo nuley =   "<<z<<endl;
return x2;
}
Kellerman
 Аватар для Kellerman
0 / 0 / 0
Регистрация: 20.10.2011
Сообщений: 34
09.12.2011, 00:00  [ТС]     Подсчитать количество нулей в массиве #7
спасибо почти помогло
изменил
C++
1
2
3
int k;
        for (  int i=0; i<N; i++)               
                if (M[i]==0) {k=i;}
на
C++
1
2
3
int k;
        for (  int i=0; i<N; i++)               
                if (M[i]==0) {k=i+1;}
и стало правельно считать (раньше на единицу меншье результат выдавало)
amor1k
Студент
 Аватар для amor1k
147 / 147 / 24
Регистрация: 18.01.2011
Сообщений: 469
09.12.2011, 00:01     Подсчитать количество нулей в массиве #8
ну так нумерация в массиве начинается с 0.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.12.2011, 10:43     Подсчитать количество нулей в массиве
Еще ссылки по теме:

Подсчитать количество введенных нулей C++
C++ Найти количество нулей в одномерном массиве
C++ Подсчитать количество нулей и единиц в матрице

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

Или воспользуйтесь поиском по форуму:
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.12.2011, 10:43     Подсчитать количество нулей в массиве #9
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 10
 
void Init(int *a, int *end)
{
   if (a < end)
   {
       *a = rand() & 1;
       Init(a+1, end);
   }
}
 
int Nomer(int *a, int i)
{
   return i >= 0 ? (*(a+i) ? Nomer(a, i-1) : i) : -1;
}
 
int Count(int *a, int *end)
{
   return a < end ? ((*a == 0) + Count(a+1, end)) : 0;
}
 
void Print(int *a, int *end)
{
   if(a < end)
   {
      printf("%d ", *a);
      Print(a+1, end);
   }
   else putchar('\n');
}
 
int main()
{
    int a[N];
    srand(time(NULL));
    Init(a, a+N);
    Print(a, a+N);
    printf("nomer = %d\n", Nomer(a, N)+1);
    printf("count = %d\n", Count(a, a+N));
    return 0;
}
Yandex
Объявления
09.12.2011, 10:43     Подсчитать количество нулей в массиве
Ответ Создать тему
Опции темы

Текущее время: 23:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru