Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 1
Регистрация: 20.10.2011
Сообщений: 34
1

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

08.12.2011, 23:12. Просмотров 2224. Ответов 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
#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.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.12.2011, 23:12
Ответы с готовыми решениями:

Подсчитать количество нулей в массиве
Хайль, пипль!Снова прошу помощи. Заранее спасибо, кто поможет. мне необходимо подсчитать кол-во...

Подсчитать количество положительных и отрицательных чисел и количество нулей в массиве
Имеется массив А из N произвольных чисел. Используя, операторы цикла составить программу.Подсчитать...

Подсчитать количество нулей в заданном массиве
Всем привет! Недавно только начал кодить на c++ и на такой простейшей задачке застрял. Попытался...

Подсчитать в массиве количество положительных, отрицательных чисел и нулей
Задан массив С из 8 вещественных элементов. Подсчитать в нем количество положительных,...

8
0 / 0 / 0
Регистрация: 08.12.2011
Сообщений: 16
08.12.2011, 23:21 2
Насчет второй проблемы))
Без выхода попробуй))
Переменной к присваивай каждый номер нуля, тогда номер останется только от последнего))
И break не нужен тогда)))
0
Студент
148 / 148 / 64
Регистрация: 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;
}
0
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;
{
Так попробуй))
0
0 / 0 / 1
Регистрация: 20.10.2011
Сообщений: 34
08.12.2011, 23:40  [ТС] 5


заполнил массив вручную вот что пишет даже когда изменил по твоему совету
0
Студент
148 / 148 / 64
Регистрация: 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;
}
1
0 / 0 / 1
Регистрация: 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;}
и стало правельно считать (раньше на единицу меншье результат выдавало)
0
Студент
148 / 148 / 64
Регистрация: 18.01.2011
Сообщений: 469
09.12.2011, 00:01 8
ну так нумерация в массиве начинается с 0.
0
Эксперт С++
4255 / 2229 / 203
Регистрация: 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;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.12.2011, 10:43

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

Массив состоит из нулей и единиц. Сформировать массив,состоящий из нулей и подсчитать их количество
Массив А состоит из 0-й и 1-ц.сформировать одномерный массив В(К),состоящий из нулей,и подсчитать...

Подсчитать количество введенных нулей
С клавиатуры вводятся 12 чисел, все нечетные и нулевые подсчитываются

Подсчитать количество нулей и единиц в строке
С клавиатуры вводится строка. Строка содержит символы нуля и единицы, так же и другие, нужно...

Подсчитать количество нулей и единиц в матрице
2. Задана матрица А, состоящая из нулей и единиц. Подсчитать количество нулей и единиц в этой...


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

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

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