Pascal Schärli 01.03.2019
Pascal Schärli 01.03.2019
Pascal Schärli 01.03.2019
In C++ können Variablen wie in der Mathematik miteinander verglichen werden.
==
<
>
!=
<=
â‰
>=
Pascal Schärli 01.03.2019
int n = 50;
if(n > 128){
std::cout << "n is larger than 128";
}
else if(n > 64){
std::cout << "n is larger than 64";
}
else if(n > 32){
std::cout << "n is larger than 32";
}
else if(n > 16){
std::cout << "n is larger than 16";
}
else {
std::cout << "n is smaller than 17";
}
if
else if
else
Â
n is larger than 32
Pascal Schärli 01.03.2019
int a = 0;
if(a == 0){
int b = 3;
}
else{
int b = 4;
}
std::cout << b << std::endl;
error: ‘b’ was not declared in this scope
Pascal Schärli 01.03.2019
a | b | a && b |
---|---|---|
false | false | false |
false | true | false |
true | false | false |
true | true | true |
AND
a | b | a || b |
---|---|---|
false | false | false |
false | true | true |
true | false | true |
true | true | true |
OR
a | b | a != b |
---|---|---|
false | false | false |
false | true | true |
true | false | true |
true | true | false |
XOR
a | !a |
---|---|
false | true |
true | false |
NOT
&&
||
!=
!
Pascal Schärli 01.03.2019
(2 > 3) && (17u - 55 <= ++x % y)
2 > 3 && 17u - 55 <= ++x % y
false && (17u - 55 <= ++x % y)
false
Pascal Schärli 01.03.2019
if( 7 && 8){
std::cout << "Hello" << std::endl;
}
else{
std::cout << "World!" << std::endl;
}
Hello
Bei Logischen Operationen werden Integer zu Booleans umgewandelt
0 -> false
alles andere -> true
Pascal Schärli 01.03.2019
if( 3 > false){
std::cout << "Hello" << std::endl;
}
else{
std::cout << "World!" << std::endl;
}
Hello
Beim Vergleich mit Integern werden Booleans zuerst in Integer umgewandelt
false -> 0
true -> 1
Pascal Schärli 01.03.2019
Präzedenz | Operator | Assoziativität |
---|---|---|
2 | ||
3 | ||
5 | ||
6 | ||
9 | ||
10 | ||
14 | ||
15 | ||
16 |
a++
a--
++a
--a
!
a*b
a/b
a%b
a+b
a-b
<
<=
>
>=
==
!=
&&
||
=
+=
Komplette Tabelle: https://en.cppreference.com/w/cpp/language/operator_precedence
Pascal Schärli 01.03.2019
P | Op | Assoz. |
---|---|---|
2 | ||
3 | ||
5 | ||
6 | ||
9 | ||
10 | ||
14 | ||
15 | ||
16 |
a++
a--
++a
--a
!
a*b
a/b
a%b
a+b
a-b
<
<=
>
>=
==
!=
&&
||
=
+=
x == 1 || 1 / (x - 1) < 1
x == 1 || (1 / (x - 1)) < 1
x == 1 || ((1 / (x - 1)) < 1)
(x == 1) || ((1 / (x - 1)) < 1)
(1 == 1) || ((1 / (x - 1)) < 1)
true || ((1 / (x - 1)) < 1)
true
int x = 1;
Pascal Schärli 01.03.2019
P | Op | Assoz. |
---|---|---|
2 | ||
3 | ||
5 | ||
6 | ||
9 | ||
10 | ||
14 | ||
15 | ||
16 |
a++
a--
++a
--a
!
a*b
a/b
a%b
a+b
a-b
<
<=
>
>=
==
!=
&&
||
=
+=
!(1 && x) + 1
(!(1 && x)) + 1
(!(1 && 1)) + 1
(!( true )) + 1
( false ) + 1
0 + 1
1
int x = 1;
Pascal Schärli 01.03.2019
int i = 0;
while(i < 10){
std::cout << i << " ";
i++;
}
0 1 2 3 4 5 6 7 8 9
Solange die Condition in den Runden () Klammern erfüllt ist, wird der Code in den geschweiften {} Klammern wiederholt.
Pascal Schärli 01.03.2019
int i = 0;
while(i < 10){
std::cout << i << " ";
i++;
}
0 1 2 3 4 5 6 7 8 9
int i = 0;
i < 10
i++
for(int i = 0; i < 10; i++){
std::cout << i << " ";
}
Pascal Schärli 01.03.2019
// Program: strangesum.cpp
#include <iostream>
int main () {
// input
unsigned int strangesum = 0;
unsigned int n;
std::cin >> n;
// computation
// TODO: Implement.
// output
std::cout << strangesum << "\n";
return 0;
}
// Program: strangesum.cpp
#include <iostream>
int main () {
// input
unsigned int strangesum = 0;
unsigned int n;
std::cin >> n;
// computation
for (unsigned int i = 1; i <= n; i++) {
if (i%2 == 1) {
if (i%5 != 0) {
strangesum += i;
}
}
}
// output
std::cout << strangesum << "\n";
return 0;
}
Schreibe ein Programm, welches die Summe aller positiven Zahlen, die ungerade aber nicht durch 5 teilbar sind, bis zur Obergrenze n zurückgibt.
// Program: strangesum.cpp
#include <iostream>
int main () {
// input
unsigned int strangesum = 0;
unsigned int n;
std::cin >> n;
// computation
for (unsigned int i = 1; i <= n; i++) {
if (i%2 == 1 && i%5 != 0) {
strangesum += i;
}
}
// output
std::cout << strangesum << "\n";
return 0;
}
// Program: strangesum.cpp
#include <iostream>
int main () {
// input
unsigned int strangesum = 0;
unsigned int n;
std::cin >> n;
// computation
for (unsigned int i = 1; i <= n; i+=2) {
if (i%5 != 0) {
strangesum += i;
}
}
// output
std::cout << strangesum << "\n";
return 0;
}
Pascal Schärli 01.03.2019
#include <iostream>
#include <cassert>
int main () {
return 0;
}
#include <iostream>
#include <cassert>
int main () {
unsigned int n;
std::cin >> n;
assert(n >= 1);
unsigned int power = 1;
for (; power <= n / 2; power *= 2);
std::cout << power << std::endl;
return 0;
}
Schreibe ein Programm, welches für eine Zahl n die grösste Zweierpotenz p zurück gibt, welche kleiner als n ist.
Pascal Schärli 01.03.2019
#include <iostream>
#include <cassert>
int main () {
const int n = 6;
// Compute n^12
int prod = 1;
for (int i = 1; 1 <= i < 13; ++i) {
prod *= n;
}
// Output stars
for (int i = 1; i < prod; ++i) {
std::cout << "*";
}
std::cout << "\n";
return 0;
}
Output von std::cerr wird vom auto-grader ignoriert.
#include <iostream>
#include <cassert>
int main () {
const int n = 6;
// Compute n^12
int prod = 1;
std::cerr << "Reached 1" << std::endl;
for (int i = 1; 1 <= i < 13; ++i) {
prod *= n;
}
std::cerr << "Reached 2" << std::endl;
// Output stars
for (int i = 1; i < prod; ++i) {
std::cout << "*";
}
std::cerr << "Reached 3" << std::endl;
std::cout << "\n";
return 0;
}
#include <iostream>
#include <cassert>
int main () {
const int n = 6;
// Compute n^12
int prod = 1;
std::cerr << "Reached 1" << std::endl;
for (int i = 1; 1 <= i && i < 13; ++i) {
prod *= n;
}
std::cerr << "Reached 2" << std::endl;
// Output stars
for (int i = 1; i < prod; ++i) {
std::cout << "*";
}
std::cerr << "Reached 3" << std::endl;
std::cout << "\n";
return 0;
}
#include <iostream>
#include <cassert>
int main () {
const int n = 6;
// Compute n^12
int prod = 1;
std::cerr << "Reached 1" << std::endl;
for (int i = 1; 1 <= i && i < 13; ++i) {
prod *= n;
std::cerr << prod << std::endl;
}
std::cerr << "Reached 2" << std::endl;
// Output stars
for (int i = 1; i < prod; ++i) {
std::cout << "*";
}
std::cerr << "Reached 3" << std::endl;
std::cout << "\n";
return 0;
}
#include <iostream>
#include <cassert>
int main () {
const int n = 6;
// Compute n^12
unsigned int prod = 1;
std::cerr << "Reached 1" << std::endl;
for (int i = 1; 1 <= i && i < 13; ++i) {
prod *= n;
std::cerr << prod << std::endl;
}
std::cerr << "Reached 2" << std::endl;
// Output stars
for (int i = 1; i < prod; ++i) {
std::cout << "*";
}
std::cerr << "Reached 3" << std::endl;
std::cout << "\n";
return 0;
}
Pascal Schärli 01.03.2019
Pascal Schärli 01.03.2019
3 >= 3
true || false && false
(true || false) && false
3 > (1 < true)
8 > 4 > 2 > 1
2 < a < 4
Welche dieser Expressions sind true, welche sind false?
Tipps:
Pascal Schärli 01.03.2019
Schreibt ein Programm, welches die Binärrepräsentation einer positiven, ganzen Zahl bestimmt.
Tipps:
Pascal Schärli 01.03.2019
Tipps:
Schreibt ein Programm, welches bis zu einer Zahl m alle Zahlen ausgibt, welche sowohl Fibonacci als auch Primzahlen sind.
Fibonacci Zahlen:
1 1 2 3 5 8 13 21
Primzahlen:
n ist eine Primzahl, falls für alle d zwischen 2 und n-1 gilt, dass n%d != 0
Pascal Schärli 01.03.2019
Tipps:
Fibonnacci Zahlen wachsen schnell. Schreibe ein Programm, welches Fibonacci Zahlen berechnet aber aufhört bevor es einen Overflow gibt.
Pascal Schärli 01.03.2019
Pascal Schärli 01.03.2019