|
nazsal 2 / 2 / 0 Регистрация: 27.11.2011 Сообщений: 60 |
||||
|
1 |
||||
Как найти количество нулевых елементов в массиве?27.11.2011, 21:40. Показов 6052. Ответов 7 Метки нет (Все метки)
Помогите пожалуйста. Нужно найти количество нулевых елементов в одмомерном массиве. Вот тот что есть:
0 |
|
2554 / 1319 / 178 Регистрация: 09.05.2011 Сообщений: 3,086 Записей в блоге: 1 |
|
|
27.11.2011, 21:44 |
2 |
|
Цикл неверен. Во-первых, i не увеличиватся, во-вторых, даже если бы увеличивалась, то выходила бы за пределы массива.
0 |
|
go 3646 / 1378 / 243 Регистрация: 16.04.2009 Сообщений: 4,526 |
||||
|
27.11.2011, 21:47 |
3 |
|||
0 |
|
2 / 2 / 0 Регистрация: 27.11.2011 Сообщений: 60 |
|
|
27.11.2011, 21:53 [ТС] |
4 |
|
Программа написана на Borland C++ 3.1
0 |
|
BumerangSP 4299 / 1421 / 463 Регистрация: 16.12.2010 Сообщений: 2,939 Записей в блоге: 3 |
||||
|
27.11.2011, 22:11 |
5 |
|||
|
Самый простой:
0 |
|
nazsal 2 / 2 / 0 Регистрация: 27.11.2011 Сообщений: 60 |
||||
|
02.12.2011, 16:16 [ТС] |
6 |
|||
|
Сам разобрался.
0 |
|
Петррр 6261 / 3562 / 898 Регистрация: 28.10.2010 Сообщений: 5,926 |
||||
|
02.12.2011, 17:14 |
7 |
|||
0 |
|
easybudda Модератор 11885 / 7258 / 1720 Регистрация: 25.07.2009 Сообщений: 13,276 |
||||
|
02.12.2011, 17:17 |
8 |
|||
1 |
Improve Article
Save Article
Like Article
Improve Article
Save Article
Like Article
Given an array of 1s and 0s which has all 1s first followed by all 0s. Find the number of 0s. Count the number of zeroes in the given array.
Examples :
Input: arr[] = {1, 1, 1, 1, 0, 0}
Output: 2
Input: arr[] = {1, 0, 0, 0, 0}
Output: 4
Input: arr[] = {0, 0, 0}
Output: 3
Input: arr[] = {1, 1, 1, 1}
Output: 0
Approach 1: A simple solution is to traverse the input array. As soon as we find a 0, we return n – index of first 0. Here n is number of elements in input array. Time complexity of this solution would be O(n).
Implementation of above approach is below:
C++
#include <bits/stdc++.h>
using namespace std;
int firstzeroindex(int arr[], int n)
{
for (int i = 0; i < n; i++) {
if (arr[i] == 0) {
return i;
}
}
return -1;
}
int main()
{
int arr[] = { 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 };
int n = sizeof(arr) / sizeof(arr[0]);
int x = firstzeroindex(arr, n);
if (x == -1) {
cout << "Count of zero is 0" << endl;
}
else {
cout << "count of zero is " << n - x << endl;
}
return 0;
}
Java
import java.io.*;
class GFG {
static int firstzeroindex(int arr[], int n)
{
for (int i = 0; i < n; i++) {
if (arr[i] == 0) {
return i;
}
}
return -1;
}
public static void main(String[] args)
{
int arr[] = { 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 };
int n = arr.length;
int x = firstzeroindex(arr, n);
if (x == -1) {
System.out.println("Count of zero is 0");
}
else {
System.out.print("count of zero is ");
System.out.println(n-x);
}
}
}
Python3
class GFG :
@staticmethod
def firstzeroindex( arr, n) :
i = 0
while (i < n) :
if (arr[i] == 0) :
return i
i += 1
return -1
@staticmethod
def main( args) :
arr = [1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0]
n = len(arr)
x = GFG.firstzeroindex(arr, n)
if (x == -1) :
print("Count of zero is 0")
else :
print("count of zero is ", end ="")
print(n - x)
if __name__=="__main__":
GFG.main([])
C#
using System;
public class GFG{
static int firstzeroindex(int[] arr, int n)
{
for (int i = 0; i < n; i++) {
if (arr[i] == 0) {
return i;
}
}
return -1;
}
public static void Main()
{
int[] arr = { 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 };
int n = arr.Length;
int x = firstzeroindex(arr, n);
if (x == -1) {
Console.WriteLine("Count of zero is 0");
}
else {
Console.Write("count of zero is ");
Console.WriteLine(n-x);
}
}
}
Javascript
<script>
function firstzeroindex(arr, n)
{
for (let i = 0; i < n; i++) {
if (arr[i] == 0) {
return i;
}
}
return -1;
}
let arr = [ 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 ];
let n = arr.length;
let x = firstzeroindex(arr, n);
if (x == -1) {
document.write("Count of zero is 0");
}
else {
document.write("count of zero is " + (n-x));
}
</script>
Time complexity: O(n) where n is size of arr.
Space Complexity: O(1) as we are not using any extra space.
Approach 2: Since the input array is sorted, we can use Binary Search to find the first occurrence of 0. Once we have index of first element, we can return count as n – index of first zero.
Implementation:
C
#include <stdio.h>
int firstZero(int arr[], int low, int high)
{
if (high >= low)
{
int mid = low + (high - low)/2;
if (( mid == 0 || arr[mid-1] == 1) && arr[mid] == 0)
return mid;
if (arr[mid] == 1)
return firstZero(arr, (mid + 1), high);
else
return firstZero(arr, low, (mid -1));
}
return -1;
}
int countZeroes(int arr[], int n)
{
int first = firstZero(arr, 0, n-1);
if (first == -1)
return 0;
return (n - first);
}
int main()
{
int arr[] = {1, 1, 1, 0, 0, 0, 0, 0};
int n = sizeof(arr)/sizeof(arr[0]);
printf("Count of zeroes is %d", countZeroes(arr, n));
return 0;
}
C++
#include <bits/stdc++.h>
using namespace std;
int firstZero(int arr[], int low, int high)
{
if (high >= low)
{
int mid = low + (high - low) / 2;
if ((mid == 0 || arr[mid - 1] == 1) &&
arr[mid] == 0)
return mid;
if (arr[mid] == 1)
return firstZero(arr, (mid + 1), high);
else
return firstZero(arr, low, (mid -1));
}
return -1;
}
int countZeroes(int arr[], int n)
{
int first = firstZero(arr, 0, n - 1);
if (first == -1)
return 0;
return (n - first);
}
int main()
{
int arr[] = {1, 1, 1, 0, 0, 0, 0, 0};
int n = sizeof(arr) / sizeof(arr[0]);
cout << "Count of zeroes is "
<< countZeroes(arr, n);
return 0;
}
Java
class CountZeros
{
int firstZero(int arr[], int low, int high)
{
if (high >= low)
{
int mid = low + (high - low) / 2;
if ((mid == 0 || arr[mid - 1] == 1) && arr[mid] == 0)
return mid;
if (arr[mid] == 1)
return firstZero(arr, (mid + 1), high);
else
return firstZero(arr, low, (mid - 1));
}
return -1;
}
int countZeroes(int arr[], int n)
{
int first = firstZero(arr, 0, n - 1);
if (first == -1)
return 0;
return (n - first);
}
public static void main(String[] args)
{
CountZeros count = new CountZeros();
int arr[] = {1, 1, 1, 0, 0, 0, 0, 0};
int n = arr.length;
System.out.println("Count of zeroes is " + count.countZeroes(arr, n));
}
}
Python3
def firstZero(arr, low, high):
if (high >= low):
mid = low + int((high - low) / 2)
if (( mid == 0 or arr[mid-1] == 1)
and arr[mid] == 0):
return mid
if (arr[mid] == 1):
return firstZero(arr, (mid + 1), high)
else:
return firstZero(arr, low, (mid - 1))
return -1
def countZeroes(arr, n):
first = firstZero(arr, 0, n - 1)
if (first == -1):
return 0
return (n - first)
arr = [1, 1, 1, 0, 0, 0, 0, 0]
n = len(arr)
print("Count of zeroes is",
countZeroes(arr, n))
C#
using System;
class CountZeros
{
int firstZero(int []arr, int low, int high)
{
if (high >= low)
{
int mid = low + (high - low) / 2;
if ((mid == 0 || arr[mid - 1] == 1) &&
arr[mid] == 0)
return mid;
if (arr[mid] == 1)
return firstZero(arr, (mid + 1), high);
else
return firstZero(arr, low, (mid - 1));
}
return -1;
}
int countZeroes(int []arr, int n)
{
int first = firstZero(arr, 0, n - 1);
if (first == -1)
return 0;
return (n - first);
}
public static void Main()
{
CountZeros count = new CountZeros();
int []arr = {1, 1, 1, 0, 0, 0, 0, 0};
int n = arr.Length;
Console.Write("Count of zeroes is " +
count.countZeroes(arr, n));
}
}
PHP
<?php
function firstZero($arr, $low, $high)
{
if ($high >= $low)
{
$mid = $low + floor(($high - $low)/2);
if (( $mid == 0 || $arr[$mid-1] == 1) &&
$arr[$mid] == 0)
return $mid;
if ($arr[$mid] == 1)
return firstZero($arr, ($mid + 1), $high);
else
return firstZero($arr, $low,
($mid - 1));
}
return -1;
}
function countZeroes($arr, $n)
{
$first = firstZero($arr, 0, $n - 1);
if ($first == -1)
return 0;
return ($n - $first);
}
$arr = array(1, 1, 1, 0, 0, 0, 0, 0);
$n = sizeof($arr);
echo("Count of zeroes is ");
echo(countZeroes($arr, $n));
?>
Javascript
<script>
function firstZero(arr , low , high) {
if (high >= low) {
var mid = low + parseInt((high - low) / 2);
if ((mid == 0 || arr[mid - 1] == 1) && arr[mid] == 0)
return mid;
if (arr[mid] == 1)
return firstZero(arr, (mid + 1), high);
else
return firstZero(arr, low, (mid - 1));
}
return -1;
}
function countZeroes(arr , n)
{
var first = firstZero(arr, 0, n - 1);
if (first == -1)
return 0;
return (n - first);
}
var arr = [ 1, 1, 1, 0, 0, 0, 0, 0 ];
var n = arr.length;
document.write("Count of zeroes is " + countZeroes(arr, n));
</script>
Output
Count of zeroes is 5
Time Complexity: O(Logn) where n is number of elements in arr[].
Auxiliary Space: O(logn)
Last Updated :
20 Feb, 2023
Like Article
Save Article
Дано файл действительных чисел a.txt Найти количество нулевых элементов и сумму
элементов меньших 1 и больших 0.
#include <iostream>
#include <windows.h>
#include <fstream>
using namespace std;
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
ifstream file("a.txt");
int num = 0;
while(file)
{
string str;
getline(file, str);
for(int i = 0; i < str.length(); i++)
{
if(str[i] != '')
{
if(str[i] == '0') num++;
}
}
}
cout << "Количество '0' в строке = " << num << "." << endl;
file.close();
return 0;
}
Всё что смог написать, а дальше не получается сделать поиск элементов меньших 1 и больших 0.
P.S. Пользователь сам вводит числа в файл «a.txt».
uses crt;
var
i, m, k, num, numm, nn: integer;
x: array [1 .. 10000] of integer;
y: array [1 .. 10000] of integer;
begin;
clrscr;
writeln('Введите размер массива x(m)');
readln(m);
writeln('Введите размер массива y(k)');
readln(k);
writeln('Введите элементы массива x(m)');
FOR i := 1 TO m do
begin
readln(x[i]);
end;
writeln('Введите элементы массива y(k)');
FOR i := 1 TO k do
begin
readln(y[i]);
end;
FOR i := 1 TO m do
begin
IF x[i] = 0 THEN
num := num + 1;
end;
FOR i := 1 TO k do
begin
IF y[i] = 0 THEN
numm := numm + 1;
end;
if num > numm then
nn := numm
else
nn := num;
writeln('Общее количество нулевых элементов в двух массиваx ', nn);
end.
const
n=100; { размер массива }
var
a:array[1..n] of integer;
i,k:integer;
begin
{ заполняем массив случайными значениями }
Randomize;
k:=0;
Writeln(‘Элементы массива’);
for i:=1 to n do
begin
a[i]:=Random(41)-20;
Write(a[i],’ ‘);
if a[i]=0 then Inc(k)
end;
Writeln;
Writeln(‘Нулевых элементов: ‘,k)
end.

