different result from (using namespace std; cin …) vs (std::cin)












-2












$begingroup$


While working on this online judge problem, I encountered a strange behavior: the below code, intended to read, line-by-line, 5-tuples of numbers representing points (x1,y1), (x2,y2) and p for a p-norm, and output their distance, was judged wrong:



#include <bits/stdc++.h>

int main()
{
float x1,y1,x2,y2,p,res;
while (std::cin>>x1>>y1>>x2>>y2>>p) {

res = pow( pow( abs(x1-x2) ,p) + pow( abs(y1-y2) ,p) ,(1/p));
printf("%.10fn",res);

}
return 0;
}


whereas the barely different code:



#include <bits/stdc++.h>
using namespace std;

int main()
{
float x1,y1,x2,y2,p,res;
while (cin>>x1>>y1>>x2>>y2>>p) {

res = pow( pow( abs(x1-x2) ,p) + pow( abs(y1-y2) ,p) ,(1/p));
printf("%.10fn",res);

}
return 0;
}


WAS judged correct. All I changed from one to the other was using the namespace std, and substituting cin by std::cin. My understanding was that "using namespace std" here means the compiler interprets all occurrences of "cout" as "std::cout" but I guess something subtler is going on. The reason I'm interested is that I was advised to avoid using namespaces to improve readability in the future when working with multiple files -- however doing so here mysteriously appears to be wrong.










share|improve this question







New contributor




user191196 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.







$endgroup$












  • $begingroup$
    I don't have access to test cases from Kattis; however the best I can offer in terms of replication is to ask you to submit both versions at the Kattis link in the post; the "wrong" one fails test case 2
    $endgroup$
    – user191196
    4 hours ago






  • 2




    $begingroup$
    Sorry, but this is off-topic here. This site is for working code only. The online judge seems to be the problem since the only difference is using namespace std. Your best bet is to contact kattis. If you want this to be on-topic here, you can edit your question to ask how to improve either one of the two versions.
    $endgroup$
    – Null
    4 hours ago






  • 1




    $begingroup$
    The use of a non-standard include file bits/stdc++.h is not good practice.
    $endgroup$
    – Edward
    4 hours ago










  • $begingroup$
    @Null it seems that you're saying there should be no difference -- which is exactly what I'm calling into question. If they are the same thing, why the side effects. and I will stop using bits, thanks. I wonder if that is causing some sort of clash.
    $endgroup$
    – user191196
    4 hours ago










  • $begingroup$
    Without the test cases we can't really say what the problem is. You could try to prefix all calls to pow() and abs() with std:: as they are in the standard namespace, too.
    $endgroup$
    – Null
    3 hours ago
















-2












$begingroup$


While working on this online judge problem, I encountered a strange behavior: the below code, intended to read, line-by-line, 5-tuples of numbers representing points (x1,y1), (x2,y2) and p for a p-norm, and output their distance, was judged wrong:



#include <bits/stdc++.h>

int main()
{
float x1,y1,x2,y2,p,res;
while (std::cin>>x1>>y1>>x2>>y2>>p) {

res = pow( pow( abs(x1-x2) ,p) + pow( abs(y1-y2) ,p) ,(1/p));
printf("%.10fn",res);

}
return 0;
}


whereas the barely different code:



#include <bits/stdc++.h>
using namespace std;

int main()
{
float x1,y1,x2,y2,p,res;
while (cin>>x1>>y1>>x2>>y2>>p) {

res = pow( pow( abs(x1-x2) ,p) + pow( abs(y1-y2) ,p) ,(1/p));
printf("%.10fn",res);

}
return 0;
}


WAS judged correct. All I changed from one to the other was using the namespace std, and substituting cin by std::cin. My understanding was that "using namespace std" here means the compiler interprets all occurrences of "cout" as "std::cout" but I guess something subtler is going on. The reason I'm interested is that I was advised to avoid using namespaces to improve readability in the future when working with multiple files -- however doing so here mysteriously appears to be wrong.










share|improve this question







New contributor




user191196 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.







$endgroup$












  • $begingroup$
    I don't have access to test cases from Kattis; however the best I can offer in terms of replication is to ask you to submit both versions at the Kattis link in the post; the "wrong" one fails test case 2
    $endgroup$
    – user191196
    4 hours ago






  • 2




    $begingroup$
    Sorry, but this is off-topic here. This site is for working code only. The online judge seems to be the problem since the only difference is using namespace std. Your best bet is to contact kattis. If you want this to be on-topic here, you can edit your question to ask how to improve either one of the two versions.
    $endgroup$
    – Null
    4 hours ago






  • 1




    $begingroup$
    The use of a non-standard include file bits/stdc++.h is not good practice.
    $endgroup$
    – Edward
    4 hours ago










  • $begingroup$
    @Null it seems that you're saying there should be no difference -- which is exactly what I'm calling into question. If they are the same thing, why the side effects. and I will stop using bits, thanks. I wonder if that is causing some sort of clash.
    $endgroup$
    – user191196
    4 hours ago










  • $begingroup$
    Without the test cases we can't really say what the problem is. You could try to prefix all calls to pow() and abs() with std:: as they are in the standard namespace, too.
    $endgroup$
    – Null
    3 hours ago














-2












-2








-2





$begingroup$


While working on this online judge problem, I encountered a strange behavior: the below code, intended to read, line-by-line, 5-tuples of numbers representing points (x1,y1), (x2,y2) and p for a p-norm, and output their distance, was judged wrong:



#include <bits/stdc++.h>

int main()
{
float x1,y1,x2,y2,p,res;
while (std::cin>>x1>>y1>>x2>>y2>>p) {

res = pow( pow( abs(x1-x2) ,p) + pow( abs(y1-y2) ,p) ,(1/p));
printf("%.10fn",res);

}
return 0;
}


whereas the barely different code:



#include <bits/stdc++.h>
using namespace std;

int main()
{
float x1,y1,x2,y2,p,res;
while (cin>>x1>>y1>>x2>>y2>>p) {

res = pow( pow( abs(x1-x2) ,p) + pow( abs(y1-y2) ,p) ,(1/p));
printf("%.10fn",res);

}
return 0;
}


WAS judged correct. All I changed from one to the other was using the namespace std, and substituting cin by std::cin. My understanding was that "using namespace std" here means the compiler interprets all occurrences of "cout" as "std::cout" but I guess something subtler is going on. The reason I'm interested is that I was advised to avoid using namespaces to improve readability in the future when working with multiple files -- however doing so here mysteriously appears to be wrong.










share|improve this question







New contributor




user191196 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.







$endgroup$




While working on this online judge problem, I encountered a strange behavior: the below code, intended to read, line-by-line, 5-tuples of numbers representing points (x1,y1), (x2,y2) and p for a p-norm, and output their distance, was judged wrong:



#include <bits/stdc++.h>

int main()
{
float x1,y1,x2,y2,p,res;
while (std::cin>>x1>>y1>>x2>>y2>>p) {

res = pow( pow( abs(x1-x2) ,p) + pow( abs(y1-y2) ,p) ,(1/p));
printf("%.10fn",res);

}
return 0;
}


whereas the barely different code:



#include <bits/stdc++.h>
using namespace std;

int main()
{
float x1,y1,x2,y2,p,res;
while (cin>>x1>>y1>>x2>>y2>>p) {

res = pow( pow( abs(x1-x2) ,p) + pow( abs(y1-y2) ,p) ,(1/p));
printf("%.10fn",res);

}
return 0;
}


WAS judged correct. All I changed from one to the other was using the namespace std, and substituting cin by std::cin. My understanding was that "using namespace std" here means the compiler interprets all occurrences of "cout" as "std::cout" but I guess something subtler is going on. The reason I'm interested is that I was advised to avoid using namespaces to improve readability in the future when working with multiple files -- however doing so here mysteriously appears to be wrong.







c++ beginner






share|improve this question







New contributor




user191196 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











share|improve this question







New contributor




user191196 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









share|improve this question




share|improve this question






New contributor




user191196 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









asked 4 hours ago









user191196user191196

97




97




New contributor




user191196 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.





New contributor





user191196 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.






user191196 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.












  • $begingroup$
    I don't have access to test cases from Kattis; however the best I can offer in terms of replication is to ask you to submit both versions at the Kattis link in the post; the "wrong" one fails test case 2
    $endgroup$
    – user191196
    4 hours ago






  • 2




    $begingroup$
    Sorry, but this is off-topic here. This site is for working code only. The online judge seems to be the problem since the only difference is using namespace std. Your best bet is to contact kattis. If you want this to be on-topic here, you can edit your question to ask how to improve either one of the two versions.
    $endgroup$
    – Null
    4 hours ago






  • 1




    $begingroup$
    The use of a non-standard include file bits/stdc++.h is not good practice.
    $endgroup$
    – Edward
    4 hours ago










  • $begingroup$
    @Null it seems that you're saying there should be no difference -- which is exactly what I'm calling into question. If they are the same thing, why the side effects. and I will stop using bits, thanks. I wonder if that is causing some sort of clash.
    $endgroup$
    – user191196
    4 hours ago










  • $begingroup$
    Without the test cases we can't really say what the problem is. You could try to prefix all calls to pow() and abs() with std:: as they are in the standard namespace, too.
    $endgroup$
    – Null
    3 hours ago


















  • $begingroup$
    I don't have access to test cases from Kattis; however the best I can offer in terms of replication is to ask you to submit both versions at the Kattis link in the post; the "wrong" one fails test case 2
    $endgroup$
    – user191196
    4 hours ago






  • 2




    $begingroup$
    Sorry, but this is off-topic here. This site is for working code only. The online judge seems to be the problem since the only difference is using namespace std. Your best bet is to contact kattis. If you want this to be on-topic here, you can edit your question to ask how to improve either one of the two versions.
    $endgroup$
    – Null
    4 hours ago






  • 1




    $begingroup$
    The use of a non-standard include file bits/stdc++.h is not good practice.
    $endgroup$
    – Edward
    4 hours ago










  • $begingroup$
    @Null it seems that you're saying there should be no difference -- which is exactly what I'm calling into question. If they are the same thing, why the side effects. and I will stop using bits, thanks. I wonder if that is causing some sort of clash.
    $endgroup$
    – user191196
    4 hours ago










  • $begingroup$
    Without the test cases we can't really say what the problem is. You could try to prefix all calls to pow() and abs() with std:: as they are in the standard namespace, too.
    $endgroup$
    – Null
    3 hours ago
















$begingroup$
I don't have access to test cases from Kattis; however the best I can offer in terms of replication is to ask you to submit both versions at the Kattis link in the post; the "wrong" one fails test case 2
$endgroup$
– user191196
4 hours ago




$begingroup$
I don't have access to test cases from Kattis; however the best I can offer in terms of replication is to ask you to submit both versions at the Kattis link in the post; the "wrong" one fails test case 2
$endgroup$
– user191196
4 hours ago




2




2




$begingroup$
Sorry, but this is off-topic here. This site is for working code only. The online judge seems to be the problem since the only difference is using namespace std. Your best bet is to contact kattis. If you want this to be on-topic here, you can edit your question to ask how to improve either one of the two versions.
$endgroup$
– Null
4 hours ago




$begingroup$
Sorry, but this is off-topic here. This site is for working code only. The online judge seems to be the problem since the only difference is using namespace std. Your best bet is to contact kattis. If you want this to be on-topic here, you can edit your question to ask how to improve either one of the two versions.
$endgroup$
– Null
4 hours ago




1




1




$begingroup$
The use of a non-standard include file bits/stdc++.h is not good practice.
$endgroup$
– Edward
4 hours ago




$begingroup$
The use of a non-standard include file bits/stdc++.h is not good practice.
$endgroup$
– Edward
4 hours ago












$begingroup$
@Null it seems that you're saying there should be no difference -- which is exactly what I'm calling into question. If they are the same thing, why the side effects. and I will stop using bits, thanks. I wonder if that is causing some sort of clash.
$endgroup$
– user191196
4 hours ago




$begingroup$
@Null it seems that you're saying there should be no difference -- which is exactly what I'm calling into question. If they are the same thing, why the side effects. and I will stop using bits, thanks. I wonder if that is causing some sort of clash.
$endgroup$
– user191196
4 hours ago












$begingroup$
Without the test cases we can't really say what the problem is. You could try to prefix all calls to pow() and abs() with std:: as they are in the standard namespace, too.
$endgroup$
– Null
3 hours ago




$begingroup$
Without the test cases we can't really say what the problem is. You could try to prefix all calls to pow() and abs() with std:: as they are in the standard namespace, too.
$endgroup$
– Null
3 hours ago










0






active

oldest

votes











Your Answer





StackExchange.ifUsing("editor", function () {
return StackExchange.using("mathjaxEditing", function () {
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
});
});
}, "mathjax-editing");

StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "196"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});






user191196 is a new contributor. Be nice, and check out our Code of Conduct.










draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f212428%2fdifferent-result-from-using-namespace-std-cin-vs-stdcin%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes








user191196 is a new contributor. Be nice, and check out our Code of Conduct.










draft saved

draft discarded


















user191196 is a new contributor. Be nice, and check out our Code of Conduct.













user191196 is a new contributor. Be nice, and check out our Code of Conduct.












user191196 is a new contributor. Be nice, and check out our Code of Conduct.
















Thanks for contributing an answer to Code Review Stack Exchange!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


Use MathJax to format equations. MathJax reference.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f212428%2fdifferent-result-from-using-namespace-std-cin-vs-stdcin%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

How to make a Squid Proxy server?

Is this a new Fibonacci Identity?

19世紀