Подсчет экземпляров в Java

1

Итак, я готовлюсь к конкурсу, и я, похоже, не понял одну из проблем практики. Я дошел до импорта всех данных. Я понимаю, как решить проблему в моей голове, а не как ее перевести в код. PS Я отчасти новичок в программировании.

Вопрос: Сколько раз собака лает через определенный промежуток времени?

EDIT: программа должна иметь возможность работать для нескольких собак

Вещи, данные мне:

  1. Общее количество собак. int numofdog = q.nextInt();

  2. Время для первой коры.

    int b = 0;
    
  3. Время между каждой корой.

    int d = 4;
    
  4. Временной интервал для подсчета количества лаков. 4 - 10

Так, например, есть только одна собака. Собака сначала лает на 0, затем на 4, затем на 8 и так далее. Временной интервал, который я считаю, - 4- 10. Так собака лает на 4 и 8. Таким образом, собака лает 2 раза в течение 4 - 10.

Я не знаю, как продолжать заниматься этим.

Оригинальный код

import java.io.*;
import java.util.*;

public class dog {

public static void main(String[] args) {

    int b = 0;
    int d = 0;
    int x = 0;
    int y = 0;
    int count = 0;
    int m =0;
Scanner q = new Scanner(System.in);

int numofdog = q.nextInt();

while (numofdog-->0) {

     b = q.nextInt();  // First Bark
     d = q.nextInt();  // Time between barks
     x = q.nextInt();  // Starting of interval
     y = q.nextInt();  // Ending of interval    





int time [] = new int[y];             // Make an array
for (int a = 0; a < time.length; a++) {
   time[a] = a + 1;

   if (time [a] % d == 0 ) {

       count ++;
        }
    }
} 


System.out. println(count);
}

}

Обновленный код (все еще работает над ним)

Я буду размещать свои проблемы словом здесь, чтобы все мы могли понять

Dog Breeder bob, хочет знать, сколько раз его собака (ов) лает в определенный промежуток времени

Ввод. В первой строке ввода будет одиночный int numofdog, количество int numofdog у собак. Следующие строки numofdog будут состоять из двух целых чисел: b и d. b - время первой коры, d - время между лаками. Следующая строка представляет собой одно целое numberofintervals. Следующее numberofintervals линия будет состоять из двух целых чисел, x и y. x - начало измеряемого интервала, а y - конец

Пример ввода

2 --- число

0 4 --- b и d для собаки 1

2 5 --- b и d для собаки 2

1 --- количество измеряемых интервалов

4 8 --- x и y для интервалов.

import java.io.*;
import java.util.*;

public class dog {

public static void main(String[] args) {

    int b1 = 0;
    int b2 = 0;
    int d1 = 0;
    int d2 = 0;
    int x1= 0;
    int y1= 0;
    int x2= 0;
    int y2= 0;
    int count = 0;


Scanner q = new Scanner(System.in);

int numofdog = q.nextInt();

while (numofdog-->0) {

     b1 = q.nextInt();  // First Bark (Dog 1)
     d1 = q.nextInt();  // Time between barks (Dog 1)
     b2 = q.nextInt();  // First Bark (Dog 2)
     d2 = q.nextInt();  // Time between barks (Dog 2)

}

    int numberofintervals = q.nextInt();

     while (numberofintervals -->0) {
     x1 = q.nextInt();  // Starting of interval
     y1 = q.nextInt();  // Ending of interval   
     x2 = q.nextInt();  // Starting of interval
     y2 = q.nextInt();  // Ending of interval   

     }

int time [] = new int[10000];             // Make an array, to represent time
for (int a = 0; a < time.length; a++) {
   time[a] = a + 1;

   if (time [a] % d1 == 0 || time [a] % d2 == 0) {

       count ++;
        }

    }
System.out.println(count);
} 



}
  • 3
    Ты почти там. Теперь вам нужно посчитать, сколько раз собака лает. Я бы предложил сначала использовать карандаш и лист бумаги для разработки алгоритма (это может также включать выполнение математических операций), а затем перенести это в код. Если ваша конкретная проблема заключается в том, как перенести алгоритм в код, предоставьте свой алгоритм, и мы поможем вам.
  • 0
    Также: en.wikipedia.org/wiki/Modulo_operation
Показать ещё 16 комментариев
Теги:
algorithm

1 ответ

1
Лучший ответ

Я сделал новый код, вы думали о двух собаках, если есть 3 или более собак, тогда ваш код не будет работать, поэтому массивы - это решение этой проблемы.

Каждая собака имеет собственные переменные b, d. Протестируйте его более чем с двумя собаками и посмотрите, что произойдет. Если какая-либо ошибка возникает, просто опубликуйте ее, и я проверю ее.

Ваш цикл for был не оптимальным, так как вы принимали 0 в качестве интервала запуска вместо ваших интервалов x и y (начало и конец).

import java.io.*;
import java.util.*;

public class NumberOfBarksTest {
    public static void main(String[] args) {
        int numOfDog = 0;
        int b[] = new int[10]; //1st bark
        int d[] = new int[10]; //time between barks
        int numberOfIntervals = 0;
        int x[] = new int[10]; //start of interval
        int y[] = new int[10]; //end of interval
        int barks[] = new int[10];
        int totalBarks = 0;
        Scanner q = new Scanner(System.in);

        for(int i = 0; i < 10; i++) {
            barks[i] = 0;
        }

        numOfDog = q.nextInt();

        for(int i = 0; i < numOfDog; i++) {
            b[i] = q.nextInt();
            d[i] = q.nextInt();
        }

        numberOfIntervals = q.nextInt();

        for(int i = 0; i < numberOfIntervals; i++) {
            x[i] = q.nextInt();
            y[i] = q.nextInt();
        }

        for(int dog = 0; dog < numOfDog; dog++) {
            for(int i = x[dog]; i <= y[dog]; i += d[dog]) {
                barks[dog]++;
            }
        }

        for(int i = 0; i < numOfDog; i++) {
            System.out.println("Barks for dog " + i + ": " + barks[i]);
            totalBarks += barks[i];
        }
        System.out.println("Total barks: " + totalBarks);
    }
}
  • 0
    СПАСИБО YOOUU !!!!!!!! Я понимаю вашу логику, и это имеет смысл.
  • 0
    Рад помочь. В следующий раз постарайтесь изложить свою проблему на бумаге, используя 3 или более примеров, поместите туда свою логику, и вам будет легче перевести вашу логику в код.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню