Zahlensumme (1) (Schleifen)
Schreiben Sie ein Programm, das alle Zahlen von 1 bis 2011 zusammenzählt.
Zusatzaufgaben:
- Ändern Sie das Programm so ab, dass auch andere Endwerte möglich sind.
- Ändern Sie das Programm auch noch so ab, dass andere Startwerte möglich sind.
- Finden Sie eine mathematische Formel, so dass Ihr Programm ganz ohne Schleife auskommt.
0 Kommentare
12 Lösung(en)
start = int(raw_input("Start: "))
end = int(raw_input("End: "))
sum =0
for i in range(start,end+1):
sum=sum+i
print 'Summe: '+str(sum)
obere_Grenze = int(input('Gib eine Zahl ein: '))
summe = 0
for i in range(obere_Grenze+1):
summe += i
print(summe)
Lösung von: Beat Trachsler (KZO Wetzikon)
/**
* Programmieraufgaben.CH
*
* date : 2011-11-03
* author: philipp gressly freimann (Santis Training AG)
* PL/1: www.iron-spring.com
*/
Zahlensumme1:
procedure options(main);
declare
minimum fixed(31) init(1), /* Untere Zahl */
maximum fixed(31) init(2011), /* Oberste Zahl */
summe fixed(31) init(0), /* aktuelle Summe */
aktuell fixed(31) init(minimum); /* aktuelle Zahl */
do while(aktuell <= maximum);
summe = summe + aktuell;
aktuell = aktuell + 1;
end;
put skip list('Die Summe aller Zahler von ', minimum, ' bis ', maximum, ' beträgt ', summe);
end Zahlensumme1;
Lösung von: Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch)
package ch.programmieraufgaben.iteration;
/**
* Aufgabe 4.10 "Programmieren lernen"
* @author Philipp Gressly (phi AT gressly DOT ch)
*/
public class Zahlsumme1 {
public static void main(String[] args) {
new Zahlsumme1().top();
}
void top() {
int summe = 0;
int min = 1;
int max = 2011;
// Hier ohne Schleife!
summe = (max - min + 1) * (max + min) / 2;
System.out.println("Summe von " + min + " bis " + max + " = " + summe);
}
} // end of class Zahlsumme1
Lösung von: Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch)
program Zahlensumme (input, output);
const
MAX = 100;
var
summe : real;
begin
summe := (Max*(Max + 1))/2;
writeln('Die Summe ist: ', summe:2:2);
end.
Lösung von: Katja Rummler ()
program Zahlensumme (input, output);
{ Berechnet eine Zahlensumme von ... bis ...}
const
MAX = 100;
var
i,
summe : integer;
begin
summe:= 0;
for i:= 1 to MAX do
summe := summe + i;
writeln('Die Summe ist: ', summe);
end.
Lösung von: Katja Rummler ()
static void Main(string[] args)
{
Console.WriteLine("Bitte geben Sie den Anfangswert ein");
int anfangswert = Convert.ToInt32(Console.ReadLine());
Console.Clear();
Console.WriteLine("Bitte geben Sie den Endswert ein");
int endwert = Convert.ToInt32(Console.ReadLine());
Console.Clear();
Console.WriteLine("Die Summe aller Zahlen von {0} bis {1} ergibt: {2}. ",anfangswert,endwert,Zahlensumme(anfangswert, endwert));
Console.ReadLine();
}
static int Zahlensumme(int Anfangswert,int Endwert)
{
int ausgabe = 0;
if (Endwert > Anfangswert)
{
ausgabe = (Anfangswert+Endwert)*(Endwert-Anfangswert+1)/2;
}
return ausgabe;
}
Lösung von: Michael Senzenberger (Lehrausbildung zum IT-Informatiker)
(ns zahlensumme.core
(:gen-class))
(defn sum
([] (reduce + (range (+ 2011 1))))
([e] (reduce + (range (+ e 1))))
([s e] (reduce + (range s (+ e 1)))))
(defn -main
[& args]
(println (apply sum (map read-string args))))
Lösung von: André Trobisch ()
function loopSum(to, from) {
from = from || 1;
let sum = 0;
for (let i = from; i <= to; i++) sum += i;
return sum;
}
// gaußsche summenformel (dreieckszahlen)
function formulaSum(to, from) {
if (from) return (to + from) * (to - from + 1) / 2;
return ((to**2 + to) / 2);
}
// ausgabe
console.log(loopSum(2011));
console.log(formulaSum(2011));
console.log(loopSum(2011, 1102));
console.log(formulaSum(2011, 1102));
Lösung von: Lisa Salander (Heidi-Klum-Gymnasium Bottrop)
// NET 6.x | C# 10.x | VS-2022
int SumLoop(int begin = 1, int end = 2011) => Enumerable.Range(begin, end - begin + 1).Sum();
int SumGauss(int begin = 1, int end = 2011) => (begin + end) * (end - begin + 1) / 2;
Console.WriteLine(SumLoop());
Console.WriteLine(SumGauss());
Console.WriteLine(SumLoop(10));
Console.WriteLine(SumGauss(10));
Console.WriteLine(SumLoop(1, 3000));
Console.WriteLine(SumGauss(1, 3000));
Lösung von: Jens Kelm (@JKooP)
// C++ 17 | VS-2022
#include <iostream> // cout
#include <vector>
#include <numeric> // iota, accumulate
auto sum_loop_1(size_t first, size_t last) {
size_t sum{ 0 };
for (size_t i{ first }; i <= last; ++i) sum += i;
return sum;
}
auto sum_loop_2(size_t first, size_t last) {
std::vector<size_t>v(last - first + 1);
std::iota(v.begin(), v.end(), first);
return std::accumulate(v.begin(), v.end(), 0);
}
auto sum_loop_3(size_t first, size_t last) {
std::vector<size_t>v{};
for (size_t i{ first }; i <= last; ++i) v.push_back(i);
return std::accumulate(v.begin(), v.end(), 0);
}
size_t sum_loop_4(size_t last) { // rekursiv
return (last > 0) ? last + sum_loop_4(last - 1) : 0;
}
auto sum_gauss(size_t first, size_t last) {
return (first + last) * (last - first + 1) / 2;
}
int main() {
std::cout << sum_loop_1(1, 2011) << "\n";
std::cout << sum_loop_2(1, 2011) << "\n";
std::cout << sum_loop_3(1, 2011) << "\n";
std::cout << sum_loop_4(2011) << "\n";
std::cout << sum_gauss(1, 2011) << "\n";
}
Lösung von: Jens Kelm (@JKooP)
print(sum([i for i in range(1,2012)]))
Lösung von: rob ert (tub)
Verifikation/Checksumme:
Die Summe der ersten 2011 Zahlen ist 2 023 066.
Aktionen
Neue Lösung hinzufügen
Bewertung
Durchschnittliche Bewertung:
Meta
Zeit: | 1 |
Schwierigkeit: | k.A. |
Webcode: | 3uy9-4fbo |
Autor: | Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch) |