![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() ![]() |
![]() |
Shashlyk |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 38 Пол: Мужской Репутация: ![]() ![]() ![]() |
Добрый Вечер!!!
Помогите Пожалуйста переписать код с Паскаля на Ява: 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 мин. Раньше изучал Паскаль, сейчас изучаю Яву... задачу нужно сдавать на Яве, но на ней плохо программирую( |
IUnknown |
![]()
Сообщение
#2
|
![]() a.k.a. volvo877 ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: ![]() ![]() ![]() |
Прежде чем переводить - добейся правильного функционирования программы. У тебя как минимум одна строка результата не совпадает...
А вообще - кому оно надо, читать посимвольно и таким образом вытягивать числа из строки? Особенно в 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);
}
}
}
Правильность работы не проверял. |
Shashlyk |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 38 Пол: Мужской Репутация: ![]() ![]() ![]() |
Прежде чем переводить - добейся правильного функционирования программы. У тебя как минимум одна строка результата не совпадает... А вообще - кому оно надо, читать посимвольно и таким образом вытягивать числа из строки? Особенно в 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 Заранее Благодарен! ![]() Сообщение отредактировано: Shashlyk - 29.05.2011 10:02 |
IUnknown |
![]()
Сообщение
#4
|
![]() a.k.a. volvo877 ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата Объясните Пожалуйста вот эту строчку: Pattern p = Pattern.compile("[0-9]+"); Потому что числа состоят из цифр от 0 до 9. почему там от 0 до 9 ? Цитата Как можно переделать код, чтобы можно было тестировать в НетБинсе... Без понятия. Я НетБинс не держу, и почему там возникает исключение - не знаю. Консоль - наше всё ![]() |
Shashlyk |
![]()
Сообщение
#5
|
Новичок ![]() Группа: Пользователи Сообщений: 38 Пол: Мужской Репутация: ![]() ![]() ![]() |
Потому что числа состоят из цифр от 0 до 9. Без понятия. Я НетБинс не держу, и почему там возникает исключение - не знаю. Консоль - наше всё ![]() Если Вам не сложно, напишите Пожалуйста код без консоли ![]() |
IUnknown |
![]()
Сообщение
#6
|
![]() a.k.a. volvo877 ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: ![]() ![]() ![]() |
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);
}
}
}
Данные получает, исключений не бросает: ![]() , но работает по-прежнему не так, как ожидается... Исправляй... |
Shashlyk |
![]()
Сообщение
#7
|
Новичок ![]() Группа: Пользователи Сообщений: 38 Пол: Мужской Репутация: ![]() ![]() ![]() |
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;
}
}
Отправил решение на проверку контесту, первый тест (и собственно говоря тот, который написан в качестве примера) спокойно проходит, а вот на втором тесте контест ругается ![]() Если Вам не трудно, помогите Пожалуйста подкорректировать код! ![]() |
Lapp |
![]()
Сообщение
#8
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Отправил решение на проверку контесту, первый тест (и собственно говоря тот, который написан в качестве примера) спокойно проходит, а вот на втором тесте контест ругается Спокойно, значит, проходит?..![]() Если Вам не трудно, помогите Пожалуйста подкорректировать код! ![]() Ну, что ж, поможем.. Цитата Исправил на : 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 к строчке), все встало на свои места. Код не твой, и исправлять его для тебя лично я - завязываю. Учишься программировать? Вот и учись программировать, а не подсовывать другим чужие коды для переделки. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Shashlyk |
![]()
Сообщение
#9
|
Новичок ![]() Группа: Пользователи Сообщений: 38 Пол: Мужской Репутация: ![]() ![]() ![]() |
Спокойно, значит, проходит?.. Ну, что ж, поможем.. Вот, смотри.. Допустим, scored=30, а conceded=0, сыграно at home. Оба условия "проходят спокойно" (С), мы присваиваем goal1=0, а goal2 будет равно 0 + 30 - 30 - 1. В результате имеем, что пулеметчицы должны забить -1 гол. Ты знаешь, что такое футбол? и что там нет отрицательных результатов (как, например, в гольфе)? Послушай, Merhaba, когда ты выложил весьма неплохой код (чего я не замечал за тобой раньше), я удивился, но промолчал. Когда же ты стал делать к нему заплатки (типа, -1 к строчке), все встало на свои места. Код не твой, и исправлять его для тебя лично я - завязываю. Учишься программировать? Вот и учись программировать, а не подсовывать другим чужие коды для переделки. Подскажите хотя бы Пожалуйста, нужно исправить числа в этом коде или это неправильный код, и нужно полностью переписывать? |
Shashlyk |
![]()
Сообщение
#10
|
Новичок ![]() Группа: Пользователи Сообщений: 38 Пол: Мужской Репутация: ![]() ![]() ![]() |
Спокойно, значит, проходит?.. Ну, что ж, поможем.. Вот, смотри.. Допустим, 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;
|
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 3:47 |