Brown_Wolf's blog

By Brown_Wolf, history, 7 months ago, In English

I have seen in many people's code that they use a solve function instead of writing the logic in the main function. What advantages it has over writing the code directly in the main function?

  • Vote: I like it
  • +6
  • Vote: I do not like it

»
7 months ago, # |
  Vote: I like it 0 Vote: I do not like it

Auto comment: topic has been updated by Brown_Wolf (previous revision, new revision, compare).

»
7 months ago, # |
  Vote: I like it 0 Vote: I do not like it

The use of the function solve() does not affect the running time of the program. But it makes the code more readable.

»
7 months ago, # |
  Vote: I like it 0 Vote: I do not like it

I do this too just because i prefer that my main function has shorter code and in problems with many test cases it is easier to bring the line of function inside the while loop of testcases,in general it depends on you whether you like modular or linear programming alhtough writing functions makes code more readable

»
7 months ago, # |
Rev. 2   Vote: I like it 0 Vote: I do not like it

it's make the code easier to read and pretty handy when dealing problem with multiple testcases

  • »
    »
    7 months ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    In terms of short questions , Where i dont need to work with multiple testcases should i use solve () ??

    • »
      »
      »
      7 months ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      this is a personal preference of mine, where I typically set t to 1 and then comment out the cin line when working on problems that involve a single test case.

»
7 months ago, # |
  Vote: I like it -66 Vote: I do not like it
»
7 months ago, # |
  Vote: I like it 0 Vote: I do not like it

Allows for easier switching between single testcase and multiple testcase problems. For example:

void Main() {
    // your logic here...
}
int main() {
#ifdef MULTI
    int T;
    rd(T);
    while (T--)
#endif
        Main();
    return 0;
}
»
7 months ago, # |
  Vote: I like it +79 Vote: I do not like it

You can use return to easily and quickly exit the current testcase.

  • »
    »
    7 months ago, # ^ |
      Vote: I like it +5 Vote: I do not like it

    By far the best reason. Imagine having something like if specific case, then continue the loop. And now you have a bunch of such cases. Your code would be pretty ugly and filled with just exiting the loop.

    • »
      »
      »
      7 months ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      Thanks Sir!!! If you don't mind Sir, Do you have any tutorial about this ??.. I actually don't know how to use it.

»
7 months ago, # |
  Vote: I like it +8 Vote: I do not like it

You don't have to worry about using continue in the testcase loop when you're done printing the answer to stdout halfway to the code, you can just return after that.

  • »
    »
    7 months ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    If you don't mind Sir, Do you have any tutorial about this ??.. I actually don't know how to use it.

»
7 months ago, # |
  Vote: I like it +8 Vote: I do not like it

One important characteristic of high-quality code is orthogonality. (I'm not telling you to make your code more vertical, but more clearly.) If you want to write orthogonal code, it is often more efficient to encapsulate statements within functions, making debugging more convenient as well.

Additionally, the best part is that the "return;" statement can directly jump to the next test case without the need for control variables or goto-like statements.

Moreover, some programmers try to have fewer statements within their main function to make the logic clearer, specifically for their own reading purposes.

»
7 months ago, # |
  Vote: I like it 0 Vote: I do not like it

for me , the reason I use solve() is because I can just return in the function whenever I want to and preceed to the next testcase , that makes it easy to exit a testcase , doing it in main would require multiple variables and ifs so it is just convenient