IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> [Java] Пулеметчицы против кавалеристок, игра в футбол
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Мужской

Репутация: -  0  +


Добрый Вечер!!!
Помогите Пожалуйста переписать код с Паскаля на Ява:
program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;

Var
i: Integer;
ch: Char;
Home: Boolean;
scored, conceded, goal1, goal2, t, j: Integer;
s: String;

begin
Read(t);
for j := 1 to t do
Begin
for i := 1 to 27 do Read(ch);
if ch = 'h' then Home := True;
for i := 1 to 17 do Read(ch);
read(scored);
for i := 1 to 21 do Read(ch);
read(conceded);
Readln;
if Home then
Begin
if scored > conceded then
Begin
goal1 := 0;
goal2 := conceded + 30 - scored;
End
else //goal > Accept
Begin
goal1 := conceded - scored + 1;
goal2 := conceded + 29 - scored;
End
End
else //if not home
Begin
if scored > conceded then
Begin
goal1 := 0;
goal2 := conceded + 29 - scored;
End
else //goal > Accept
Begin
goal1 := conceded - scored;
goal2 := conceded + 30 - scored;
End;
End;
Write(IntToStr(goal1) + ' ' + IntToStr(goal2));
End;
end.


У меня что-то не получается:
import java.util.Scanner;

public class Main {

public static void main(String[] args) {

Scanner con=new Scanner (System.in);
char [] a;
boolean Home = false;
String s;
s = con.nextLine();
a = new char[s.length()];
a = s.toCharArray();
int i, scored, conceded, goal1 = 0, goal2 = 0, t, j;
t = con.nextInt();
for( j = 1; j< t; j++){
for (i = 1; i < 27; i++){
if (a[i] = 'h'){Home = true;}}
for (i = 1; i< 17; i++ ) Read(ch);
read(scored);
for i := 1 to 21 do Read(ch);
read(conceded);

if (Home){
if( scored > conceded )
{ goal1 = 0;
goal2 = conceded + 30 - scored;}
else //goal > Accept
{goal1 = conceded - scored + 1;
goal2 = conceded + 29 - scored;}
}
else //if not home

{
if (scored > conceded)
{goal1 = 0;
goal2 = conceded + 29 - scored;}
else //goal > Accept
{goal1 = conceded - scored;
goal2 = conceded + 30 - scored;}
}
}
System.out.println(String.valueOf(goal1) + " " + String.valueOf(goal2));

}
}


Особенно не получается перевести :
for i := 1 to 27 do Read(ch);
if ch = 'h' then Home := True;
for i := 1 to 17 do Read(ch);
read(scored);
for i := 1 to 21 do Read(ch);
read(conceded);
Readln;


Добавлено через 10 мин.
Раньше изучал Паскаль, сейчас изучаю Яву... задачу нужно сдавать на Яве, но на ней плохо программирую(
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

Репутация: -  627  +


Прежде чем переводить - добейся правильного функционирования программы. У тебя как минимум одна строка результата не совпадает...

А вообще - кому оно надо, читать посимвольно и таким образом вытягивать числа из строки? Особенно в Java, где есть много других средств для этого. Например, регулярные выражения:

import java.io.Console;
import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class Main {

public static void main(String[] args) {

Console console = System.console();
Pattern p = Pattern.compile("[0-9]+");

int t = Integer.parseInt(console.readLine());
for(int i = 0; i < t; i++)
{
String s = console.readLine();
Matcher m = p.matcher(s);
m.find();
int scored = Integer.parseInt(m.group());
m.find();
int conceded = Integer.parseInt(m.group());

Boolean Home = s.substring(26, 30).equals("home");
int goal1, goal2;

if(Home)
{
if(scored > conceded)
{
goal1 = 0; goal2 = conceded + 30 - scored;
}
else
{
goal1 = conceded - scored + 1; goal2 = conceded + 29 - scored;
}
}
else
{
if(scored > conceded)
{
goal1 = 0; goal2 = conceded + 29 - scored;
}
else
{
goal1 = conceded - scored; goal2 = conceded + 30 - scored;
}
}
System.out.println(goal1 + " " + goal2);
}
}
}
Правильность работы не проверял.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Мужской

Репутация: -  0  +


Цитата(IUnknown @ 29.05.2011 1:26) *

Прежде чем переводить - добейся правильного функционирования программы. У тебя как минимум одна строка результата не совпадает...

А вообще - кому оно надо, читать посимвольно и таким образом вытягивать числа из строки? Особенно в Java, где есть много других средств для этого. Например, регулярные выражения:

import java.io.Console;
import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class Main {

public static void main(String[] args) {

Console console = System.console();
Pattern p = Pattern.compile("[0-9]+");

int t = Integer.parseInt(console.readLine());
for(int i = 0; i < t; i++)
{
String s = console.readLine();
Matcher m = p.matcher(s);
m.find();
int scored = Integer.parseInt(m.group());
m.find();
int conceded = Integer.parseInt(m.group());

Boolean Home = s.substring(26, 30).equals("home");
int goal1, goal2;

if(Home)
{
if(scored > conceded)
{
goal1 = 0; goal2 = conceded + 30 - scored;
}
else
{
goal1 = conceded - scored + 1; goal2 = conceded + 29 - scored;
}
}
else
{
if(scored > conceded)
{
goal1 = 0; goal2 = conceded + 29 - scored;
}
else
{
goal1 = conceded - scored; goal2 = conceded + 30 - scored;
}
}
System.out.println(goal1 + " " + goal2);
}
}
}
Правильность работы не проверял.


Спасибо Вам Большое за помощь!!!
Объясните Пожалуйста вот эту строчку: Pattern p = Pattern.compile("[0-9]+");
почему там от 0 до 9 ?
Как можно переделать код, чтобы можно было тестировать в НетБинсе...
у меня выдаёт:
Exception in thread "main" java.lang.NullPointerException
at timus1804.Main.main(Main.java:15)
Java Result: 1

я хочу проверить на тесте приведённом в http://acm.timus.ru/problem.aspx?space=1&num=1804
Заранее Благодарен! give_rose.gif

Сообщение отредактировано: Shashlyk -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

Репутация: -  627  +


Цитата
Объясните Пожалуйста вот эту строчку: Pattern p = Pattern.compile("[0-9]+");
почему там от 0 до 9 ?
Потому что числа состоят из цифр от 0 до 9.

Цитата
Как можно переделать код, чтобы можно было тестировать в НетБинсе...
Без понятия. Я НетБинс не держу, и почему там возникает исключение - не знаю. Консоль - наше всё smile.gif Из консоли тестовый пример прекрасно работает (ну, в смысле, данные читает. А вот результат - неправильный выдает. Но логику уже сам исправляй, у тебя и в Паскалевской программе тоже результат неверный).
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Мужской

Репутация: -  0  +


Цитата(IUnknown @ 29.05.2011 11:12) *

Потому что числа состоят из цифр от 0 до 9.

Без понятия. Я НетБинс не держу, и почему там возникает исключение - не знаю. Консоль - наше всё smile.gif Из консоли тестовый пример прекрасно работает (ну, в смысле, данные читает. А вот результат - неправильный выдает. Но логику уже сам исправляй, у тебя и в Паскалевской программе тоже результат неверный).

Если Вам не сложно, напишите Пожалуйста код без консоли smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

Репутация: -  627  +


package shashlyk;

import java.io.*;
import java.util.regex.Pattern;
import java.util.regex.Matcher;

/**
* @author Vlady
*/
public class Shashlyk {

/**
* @param args the command line arguments
*/
public static void main(String[] args) throws IOException {

BufferedReader br;
br = new BufferedReader(new InputStreamReader(System.in));

// Console console = System.console();
Pattern p = Pattern.compile("[0-9]+");
int t = Integer.parseInt(br.readLine());

for(int i = 0; i < t; i++)
{
String s = br.readLine();
Matcher m = p.matcher(s);
m.find();
int scored = Integer.parseInt(m.group());
m.find();
int conceded = Integer.parseInt(m.group());

Boolean Home = s.substring(26, 30).equals("home");
int goal1, goal2;
if(Home)
{
if(scored > conceded)
{
goal1 = 0; goal2 = conceded + 30 - scored;
}
else
{
goal1 = conceded - scored + 1; goal2 = conceded + 29 - scored;
}
}
else
{
if(scored > conceded)
{
goal1 = 0; goal2 = conceded + 29 - scored;
}
else
{
goal1 = conceded - scored; goal2 = conceded + 30 - scored;
}
}
System.out.println(goal1 + " " + goal2);
}
}
}



Данные получает, исключений не бросает:
Прикрепленное изображение

, но работает по-прежнему не так, как ожидается... Исправляй...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Мужской

Репутация: -  0  +


Цитата(IUnknown @ 29.05.2011 22:32) *

package shashlyk;

import java.io.*;
import java.util.regex.Pattern;
import java.util.regex.Matcher;

/**
* @author Vlady
*/
public class Shashlyk {

/**
* @param args the command line arguments
*/
public static void main(String[] args) throws IOException {

BufferedReader br;
br = new BufferedReader(new InputStreamReader(System.in));

// Console console = System.console();
Pattern p = Pattern.compile("[0-9]+");
int t = Integer.parseInt(br.readLine());

for(int i = 0; i < t; i++)
{
String s = br.readLine();
Matcher m = p.matcher(s);
m.find();
int scored = Integer.parseInt(m.group());
m.find();
int conceded = Integer.parseInt(m.group());

Boolean Home = s.substring(26, 30).equals("home");
int goal1, goal2;
if(Home)
{
if(scored > conceded)
{
goal1 = 0; goal2 = conceded + 30 - scored;
}
else
{
goal1 = conceded - scored + 1; goal2 = conceded + 29 - scored;
}
}
else
{
if(scored > conceded)
{
goal1 = 0; goal2 = conceded + 29 - scored;
}
else
{
goal1 = conceded - scored; goal2 = conceded + 30 - scored;
}
}
System.out.println(goal1 + " " + goal2);
}
}
}



Данные получает, исключений не бросает:
Прикрепленное изображение

, но работает по-прежнему не так, как ожидается... Исправляй...


Исправил на :
if(Home){
if(scored > conceded){
goal1 = 0;
goal2 = conceded + 30 - scored - 1;
}
else {
goal1 = conceded - scored + 1;
goal2 = conceded + 29 - scored;
}
}
else {
if(scored > conceded){
goal1 = 0;
goal2 = conceded + 29 - scored;
}
else {
goal1 = conceded - scored;
goal2 = conceded + 30 - scored;
}
}

Отправил решение на проверку контесту, первый тест (и собственно говоря тот, который написан в качестве примера) спокойно проходит, а вот на втором тесте контест ругается wacko.gif
Если Вам не трудно, помогите Пожалуйста подкорректировать код! smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Shashlyk @ 30.05.2011 10:30) *
Отправил решение на проверку контесту, первый тест (и собственно говоря тот, который написан в качестве примера) спокойно проходит, а вот на втором тесте контест ругается wacko.gif
Если Вам не трудно, помогите Пожалуйста подкорректировать код! smile.gif
Спокойно, значит, проходит?..
Ну, что ж, поможем..

Цитата
Исправил на :
if(Home){
if(scored > conceded){
goal1 = 0;
goal2 = conceded + 30 - scored - 1;
}

Вот, смотри.. Допустим, scored=30, а conceded=0, сыграно at home. Оба условия "проходят спокойно" (С), мы присваиваем goal1=0, а goal2 будет равно 0 + 30 - 30 - 1.
В результате имеем, что пулеметчицы должны забить -1 гол. Ты знаешь, что такое футбол? и что там нет отрицательных результатов (как, например, в гольфе)?

Послушай, Merhaba, когда ты выложил весьма неплохой код (чего я не замечал за тобой раньше), я удивился, но промолчал. Когда же ты стал делать к нему заплатки (типа, -1 к строчке), все встало на свои места. Код не твой, и исправлять его для тебя лично я - завязываю. Учишься программировать? Вот и учись программировать, а не подсовывать другим чужие коды для переделки.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Мужской

Репутация: -  0  +


Цитата(Lapp @ 31.05.2011 10:16) *

Спокойно, значит, проходит?..
Ну, что ж, поможем..
Вот, смотри.. Допустим, scored=30, а conceded=0, сыграно at home. Оба условия "проходят спокойно" (С), мы присваиваем goal1=0, а goal2 будет равно 0 + 30 - 30 - 1.
В результате имеем, что пулеметчицы должны забить -1 гол. Ты знаешь, что такое футбол? и что там нет отрицательных результатов (как, например, в гольфе)?

Послушай, Merhaba, когда ты выложил весьма неплохой код (чего я не замечал за тобой раньше), я удивился, но промолчал. Когда же ты стал делать к нему заплатки (типа, -1 к строчке), все встало на свои места. Код не твой, и исправлять его для тебя лично я - завязываю. Учишься программировать? Вот и учись программировать, а не подсовывать другим чужие коды для переделки.

Подскажите хотя бы Пожалуйста, нужно исправить числа в этом коде или это неправильный код, и нужно полностью переписывать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Мужской

Репутация: -  0  +


Цитата(Lapp @ 31.05.2011 10:16) *

Спокойно, значит, проходит?..
Ну, что ж, поможем..
Вот, смотри.. Допустим, scored=30, а conceded=0, сыграно at home. Оба условия "проходят спокойно" (С), мы присваиваем goal1=0, а goal2 будет равно 0 + 30 - 30 - 1.
В результате имеем, что пулеметчицы должны забить -1 гол. Ты знаешь, что такое футбол? и что там нет отрицательных результатов (как, например, в гольфе)?

Послушай, Merhaba, когда ты выложил весьма неплохой код (чего я не замечал за тобой раньше), я удивился, но промолчал. Когда же ты стал делать к нему заплатки (типа, -1 к строчке), все встало на свои места. Код не твой, и исправлять его для тебя лично я - завязываю. Учишься программировать? Вот и учись программировать, а не подсовывать другим чужие коды для переделки.

У меня что-то не выходит сделать, помогите Пожалуйста:
if(Home){
if(scored > conceded){

goal1 = conceded - scored + 1;
goal2 = conceded - 28 - scored;
}
else {

goal1 = conceded - scored;
goal2 = conceded - scored - 29;
}
}
if (goal1 < 0) goal1 = 0;
if (goal1 > 30) goal1 = 30;
if (goal2 < 0) goal2 = 0;
if (goal2 > 30) goal2 = 30;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 19.04.2024 18:28
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name