Итак, я готовлюсь к конкурсу, и я, похоже, не понял одну из проблем практики. Я дошел до импорта всех данных. Я понимаю, как решить проблему в моей голове, а не как ее перевести в код. PS Я отчасти новичок в программировании.
Вопрос: Сколько раз собака лает через определенный промежуток времени?
EDIT: программа должна иметь возможность работать для нескольких собак
Вещи, данные мне:
Общее количество собак. int numofdog = q.nextInt();
Время для первой коры.
int b = 0;
Время между каждой корой.
int d = 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 или более собак, тогда ваш код не будет работать, поэтому массивы - это решение этой проблемы.
Каждая собака имеет собственные переменные 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);
}
}