|
Thread Rules 1. This is not a "do my homework for me" thread. If you have specific questions, ask, but don't post an assignment or homework problem and expect an exact solution. 2. No recruiting for your cockamamie projects (you won't replace facebook with 3 dudes you found on the internet and $20) 3. If you can't articulate why a language is bad, don't start slinging shit about it. Just remember that nothing is worse than making CSS IE6 compatible. 4. Use [code] tags to format code blocks. |
On October 18 2012 06:11 Kambing wrote:Show nested quote +On October 18 2012 00:36 Snuggles wrote: For some reason my school decided to switch languages for my intro CS course, so instead of learning C++ we're starting out with Python. Then later on in the second semester of the intro course we get into C++ and Java. Any idea why they would do that? I would think that just jumping into C++ and Java would seem more beneficial. My father's friend is a software Architect of some sort and when I told him that I wanted to get into the technical side of things, I should devote time to learning Java @_@.
I really wish that I settled down and decided to go with CS as my minor right from the get go because writing up a program to solve stats or any homework that has to deal with math would've made life so much easier... Python is far more friendly to new programmers than Java and C++. Among other things, you can emphasize good programming fundamentals in a simpler language like Python without having to also get bogged down in too many unnecessary details like with Java and C++.
Just to reiterate the same point.
You can learn to apply things easier with python, I'm doing a Berkeley AI course at the moment in Python. The language is beautifully simple and so you can focus on the concepts you are learning as opposed to the quirks of the language as you probably would with C/C++/Java if that's what you started out on.
One important thing to know is that a good programmer doesn't just know one language. Nor is the first language you learn likely to be the one you stick with. What you're feeling is the drive to 'jump the gun'. You've got plenty of years to learn / master Java. Best start with something easier to deal with first. Besides you can't really decide you want to do something seriously technical when you're just starting out, 2-3 years into your course you may decide that you really dislike working with Java and prefer Python for whatever reason, getting advice from people in industry is great, but you'll soon know that one problem with experienced programmers is they're often very opinionated. I've had people tell me C++ is the greatest thing since sliced bread and Java is utter garbage, that Java just makes life easier, that Python is the greatest thing since sliced bread, that people have never been as productive since C# was introduced etc etc Take advice with a grain of salt, and form your own opinions, just try to be a bit more balanced than some people, almost all languages, especially the commonly used ones are fantastic and serve their purpose well.
Generally I think a good CS course should teach you lots of languages and the differences between them, rather than focusing on one, it allows you to assess what language suits the problem at hand but also will prepare you better for the future when languages will obviously change.
|
1019 Posts
I finally got the program working. to everyone that helped me with my program, thanks^^ I wish I could buy you dinner or something. The program works but its slow (takes a minute to get all primes between 4 and 1 million) so I'm working on that. I have something else thats weird.
+ Show Spoiler + if (a%2 == 0) { cout << "The number input was not prime number" << endl; } else if (a%2 != 0) { bool prime = true; for (int i = 2; i <= sqrt(a); i++) { if (a%i == 0) { prime = false; cout << "The number input was not prime number" << endl; } } if (prime == true) { cout << "The number input was a prime number" << endl; } }
"a" is the inputted number and the code checks to see if the number is a prime or not. It works except that when you put in something like 81 for a, it outputs "The number input was not prime number" twice. Can you help me figure out why its doing that?
|
Try adding a break after the "The number input was not prime number" to exit the loop asap.
(...) cout << "The number input was not prime number" << endl; break; (...)
Not sure if it is really the problem though.
|
1019 Posts
On October 18 2012 06:43 fabiano wrote:Try adding a break after the "The number input was not prime number" to exit the loop asap. (...) cout << "The number input was not prime number" << endl; break; (...)
Not sure if it is really the problem though.
I thought of that but our class has this dumb policy where breaks and continues are not allowed -_-
|
On October 18 2012 06:33 white_horse wrote:I finally got the program working. to everyone that helped me with my program, I wish I could buy you dinner or something, thanks. The program works but its slow (takes a minute to get all primes between 4 and 1 million) so I'm working on that. I have something else thats weird. + Show Spoiler + if (a%2 == 0) { cout << "The number input was not prime number" << endl; } else if (a%2 != 0) { bool prime = true; for (int i = 2; i <= sqrt(a); i++) { if (a%i == 0) { prime = false; cout << "The number input was not prime number" << endl; } } if (prime == true) { cout << "The number input was a prime number" << endl; } }
"a" is the inputted number and the code checks to see if the number is a prime or not. It works except that when you put in something like 81 for a, it outputs "The number input was not prime number" twice. Can you help me figure out why its doing that?
It will output that multiple times because your loop keeps running after you know that the number is not prime. the condition for the if statement is true for i = 3 and i = 9. Once you know that the number is not prime, then you can stop the loop and keep going. The best way to do this depends on the context of the code and where it is in your program.
|
On October 18 2012 06:45 white_horse wrote:Show nested quote +On October 18 2012 06:43 fabiano wrote:Try adding a break after the "The number input was not prime number" to exit the loop asap. (...) cout << "The number input was not prime number" << endl; break; (...)
Not sure if it is really the problem though. I thought of that but our class has this dumb policy where breaks and continues are not allowed -_-
With good reason. Breaks and continues can disrupt local code reasoning. In particular, you should think about the exit condition for your loop and how it relates to when you get into the if-statement. How should it change to reflect the fact that you entered into that if-statement?
|
Well then, time to be a little dirty:
(...) cout << "The number input was not prime number" << endl; i = a; (...)
Certainly looks the wrong way to code, but should have the same effect :p
|
On October 18 2012 06:45 white_horse wrote:Show nested quote +On October 18 2012 06:43 fabiano wrote:Try adding a break after the "The number input was not prime number" to exit the loop asap. (...) cout << "The number input was not prime number" << endl; break; (...)
Not sure if it is really the problem though. I thought of that but our class has this dumb policy where breaks and continues are not allowed -_-
You could also try
(...) cout << "The number input was not prime number" << endl; i = a; (...)
This would end the loop right away.
|
Well uh, honestly the first if statement is unnecessary since you do the check again in the for loop.
And you should bring the cout statements outside the loop too, that way you can separate the printing to console from the prime verification.
Should also add in the two suggestions above me for more efficiency.**
There's a lot of warning signs going off in my head from that code though.
@below, his input guarantees a to be between 4 and 1,000,000, so it's okay.
|
Hyrule18982 Posts
uhhh...white_horse...
2 is prime
and fails the first check
also, by definition, anything mod 2 is either 0 or 1, so you don't need to elseif, just else
|
anyone know what would cause vim to freeze? Just started using it and i was editing a program and it suddenly wouldn't let me do anything in insert mode and after a while (5 mins) it crashed and said priWrite failed: Broken pipe;.
I wasn't doing anything important but kinda scares me that it crash like that and now im wondering if its normally that unreliable?
|
On October 18 2012 07:44 Thadorus wrote: anyone know what would cause vim to freeze? Just started using it and i was editing a program and it suddenly wouldn't let me do anything in insert mode and after a while (5 mins) it crashed and said priWrite failed: Broken pipe;.
I wasn't doing anything important but kinda scares me that it crash like that and now im wondering if its normally that unreliable?
Sounds more like you were using vim with a ssh session, and the ssh session failed not the vim edit. You're not using vim locally, are you?
|
On October 18 2012 06:53 fabiano wrote:Well then, time to be a little dirty: (...) cout << "The number input was not prime number" << endl; i = a; (...)
Certainly looks the wrong way to code, but should have the same effect :p
While that works, that's not optimal because the condition for breaking the loop is not explicit by inspection in the loop guard. You have a variable prime that is false only when you have proven that the number is not a prime. You should be using that instead.
|
On October 18 2012 06:33 white_horse wrote:I finally got the program working. to everyone that helped me with my program, thanks^^ I wish I could buy you dinner or something. The program works but its slow (takes a minute to get all primes between 4 and 1 million) so I'm working on that. I have something else thats weird. + Show Spoiler + if (a%2 == 0) { cout << "The number input was not prime number" << endl; } else if (a%2 != 0) { bool prime = true; for (int i = 2; i <= sqrt(a); i++) { if (a%i == 0) { prime = false; cout << "The number input was not prime number" << endl; } } if (prime == true) { cout << "The number input was a prime number" << endl; } }
"a" is the inputted number and the code checks to see if the number is a prime or not. It works except that when you put in something like 81 for a, it outputs "The number input was not prime number" twice. Can you help me figure out why its doing that?
here's one reason why it's slow:
let's loop through this starting at 3 (2 is a prime...), and let's say a is 1 million
i = 3 temp = sqrt(1M) 3 < temp?
i = 4 temp = sqrt(1M) 4 < temp?
i = 5 temp = sqrt(1M) 5 < temp?
i = 6 temp = sqrt(1M) 6 < temp?
i = 7 temp = sqrt(1M) 7 < temp? ...
Do you notice that there is a step that is completely unnecessary?
|
Hyrule18982 Posts
On October 18 2012 06:45 white_horse wrote:Show nested quote +On October 18 2012 06:43 fabiano wrote:Try adding a break after the "The number input was not prime number" to exit the loop asap. (...) cout << "The number input was not prime number" << endl; break; (...)
Not sure if it is really the problem though. I thought of that but our class has this dumb policy where breaks and continues are not allowed -_- set i = a then
|
Ok guys, I'm a new CS major and even though I've been on TL for a while I never really looked in this thread. I was just pondering something my professor said the other day and it doesn't click in my head.
He said that using a while loop, you can pick a number and then add up all of the numbers up to that number on the run, so to speak. I don't understand how you can do that.
Can someone write out the code to explain this?
|
I don't know what you're asking, exactly? It sounds more like the logic you'd do in a for next than something you'd want in a while loop. Naturally you could accomplish the same thing with any loop type, but you generally use what makes the most sense for the problem (i.e. for next over while). I'm assuming you mean something else, though.
int count; someVal = 10;
for (int i = 1; i <= someVal; i++) { count += i; }
Console.WriteLine(count.ToString());
int count; int someVal = 10; int curVal = 1;
while (curVal <= someVal) { count += curVal; curVal ++; }
Console.WriteLine(count.ToString());
|
On October 18 2012 11:29 Craton wrote:I don't know what you're asking, exactly? It sounds more like the logic you'd do in a for next than something you'd want in a while loop. Naturally you could accomplish the same thing with any loop type, but you generally use what makes the most sense for the problem (i.e. for next over while). I'm assuming you mean something else, though. int count; someVal = 10;
for (int i = 1; i <= someVal; i++) { count += i; }
int count; int someVal = 10; int curVal = 1;
while (curVal <= someVal) { count += curVal; curVal ++; }
Sorry, I'll try to explain it better. User inputs a number (a positive number), let's say 5. Then the program adds all of the numbers up to what the user input (1+2+3+4+5) and then the total is displayed. He said we would be doing something like this in lab next week, and I don't want to show up unprepared but I don't really understand how you can make them add together. We haven't covered for loops yet, so he said we would be using do while loops for validation (in case a user inputs a negative number) and while loops for the actual process.
|
Well I already showed you how to add them in both examples.
The only thing about validation in a while loop that makes sense is if you have some kind of exit condition that involves entering a negative number (and if not it shows you the sum then loops back around asking for a new number). I'll exclude validating that you enter an integer, since you are still at the very basics.
This is C#. Other languages will vary slightly.
int inputNum;
Console.Write("Enter a number: "); inputNum = Convert.ToInt32(Console.ReadLine());
while (inputNum > 0) { //put summation logic here
Console.Write("Enter a number: "); inputNum = Convert.ToInt32(Console.ReadLine()); }
There are many other, and probably better, ways of doing this kind of validation (and with less redundancy).
|
On October 18 2012 11:48 Craton wrote: Well I already showed you how to add them in both examples.
The only thing about validation in a while loop that makes sense is if you have some kind of exit condition that involves entering a negative number (and if not it shows you the sum then loops back around asking for a new number).
Ok, I figured you covered it pretty well but just wanted to make sure. Thanks man! I'll be visiting this thread more often to try and get good lol.
Thanks again
|
|
|
|