Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Программисты, помогите пожалуйста

Dimas Pop Ученик (135), открыт 2 недели назад
Ввод:
1
2
-3

Вывод:
1+2x+-3y

Вывод ошибочный, должно выводится: 1+2х-3у
Подскажите, что я сделал не так.

Код ниже:

import java.util.Scanner;

public class Main {

public static void main(String[] args) {
Scanner sc = new Scanner( System.in );
String a = sc.nextLine();
String b = sc.nextLine();
String c = sc.nextLine();
String asec = "";
String bsec = "";
String csec = "";
int botr = 0;
int cotr = 0;
int cona = 0;
int bona = 0;
for(int i = 0, j = 0; i!=(b.length()-1) && j!=(c.length()-1); i++, j++){
if((b.charAt(i)) == '-'){
botr+=1;
}
else if((c.charAt(j)) == '-'){
cotr+=1;
}
}
if(a.equals("0")){
asec = "";
cona+=1;
}
else{
asec = a;
}

if(cona == 1){
if(b.equals("1")) {
bsec = "x";
}
else if(b.equals("0")){
bsec = "";
bona+=1;
}
else{
bsec = b+"x";
}
}
else{
if(botr==1){
if(b.equals("-1")) {
bsec = "-" + "x";
}
else if(b.equals("0")){
bsec = "";
bona+=1;
}
else{
bsec = b + "x";
}
}
else{
if(b.equals("1")) {
bsec = "+" + "x";
}
else if(b.equals("0")){
bsec = "";
bona+=1;
}
else{
bsec = "+" + b + "x";
}
}

}
if(cona == 1 && bona == 1){
if(c.equals("1")) {
csec = "y";
}
else if(c.equals("0")){
csec = "";
}
else{
csec = b+"y";
}
}
else{
if(cotr == 1){
if(c.equals("-1")) {
csec = "-" + "y";
}
else if(c.equals("0")){
csec = "";
}
else{
csec = c + "y";
}
}
else{
if(c.equals("1")) {
csec = "+" + "y";
}
else if(c.equals("0")){
csec = "";
}
else{
csec = "+" + c + "y";
}
}

}
System.out.println(asec+bsec+csec);
}
}
6 ответов
тринитротолуол Просветленный (20027) 2 недели назад
это систематическая ошибка
Dimas PopУченик (135) 2 недели назад
Можно поподробнее?
Терр Онтал Мудрец (12747) 2 недели назад
Блин, я даже разбираться не буду, что у тебя там написано, это ужас. Перепиши всё это проще.
  1. Считывай сразу числа
  2. Вывод в stdout сделай так: для каждого числа проверь знак, если оно меньше нуля то плюс не выводи, иначе выводи

Всё просто. Весь код получится на 20 строк максимум даже на джаве
Оракул Оракул (62081) 2 недели назад
public class Main {

public static void main(String[] args) {
Scanner sc = new Scanner( System.in );
int a = sc.nextInt();
int b = sc.nextInt();
int c = sc.nextInt();
System.out.printf("%s%d%s%dx%s%dy", sign(a, true), a, sign(b), b, sign(c), c);
}

private static String sign(int n) {
return sign(n, false);
}

private static String sign(int n, boolean first) {
return n < 0 || first ? "" : "+";
}
}
ОракулОракул (62081) 2 недели назад
public class Main {

public static void main(String[] args) {
Scanner sc = new Scanner( System.in );
int a = sc.nextInt();
int b = sc.nextInt();
int c = sc.nextInt();
System.out.printf("%s%sx%sy", format(a, true), format(b), format(c));
}

private static String format(int n) {
return format(n, false);
}

private static String format(int n, boolean first) {
return n < 0 || first ? "" + n : "+" + n;
}
}
Sergio 2.1 Оракул (67192) 2 недели назад
 import java.util.Scanner; 

public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);

// Считываем коэффициенты
int a = Integer.parseInt(sc.nextLine());
int b = Integer.parseInt(sc.nextLine());
int c = Integer.parseInt(sc.nextLine());

StringBuilder result = new StringBuilder();

// Добавляем первый член (свободный член)
if (a != 0) {
result.append(a);
}

// Добавляем член с x
if (b != 0) {
if (b > 0 && result.length() > 0) {
result.append("+");
}
if (b == -1) {
result.append("-");
} else if (b != 1) {
result.append(b);
}
result.append("x");
}

// Добавляем член с y
if (c != 0) {
if (c > 0 && result.length() > 0) {
result.append("+");
}
if (c == -1) {
result.append("-");
} else if (c != 1) {
result.append(c);
}
result.append("y");
}

// Если результат пустой (все коэффициенты равны 0)
if (result.length() == 0) {
result.append("0");
}

System.out.println(result);
}
}
Jurijus Zaksas Искусственный Интеллект (445630) 2 недели назад
Напиши метод, который форматирует числа и переводит их в строки, и не форматируй их в самом выводе. То есть не пиши больше нигде ни плюсы, ни минусы.
Напиши еще один метод, который формирует твое выражение из переданных чисел при помощи вышеописанного метода. Первый член не форматируй, чтобы плюс не вылез, остальные - да.
И все у тебя будет хорошо.
Александр Искусственный Интеллект (301506) 2 недели назад
глаза себе вырвать хочется после такого...
Похожие вопросы