Inhalte zur Vorlesungswoche #11, Informatik 1 im Wintersemester 2024/25
(EN google-translate)
(PL google-translate)
Durchführung und Besprechung noch ausstehender Übungsaufgaben
|
Musterlösung zu 1.
#include <iostream>
using namespace std;
//1. Schritt: Prozent von Es statt Antahl zurückgeben:
//2. Schritt: Leerzeichen nicht mitzählen.
//3. Schritt: Bliebige Zeichen zählen.
double bestimmeHaeufigkeitZeichen(char satz[], char testzeichen)
{
int anzahlE=0;
int anzahlZeichen=0;
char c;
int index=0;
do
{
c=satz[index++];
//if(c=='e')
if(c==testzeichen)
anzahlE++;
//else if(c=='E')
// anzahlE++;
if(c!=' ')
anzahlZeichen++; //Zählen der Zeichen
} while(c!='\0');
double prozent = 100.0*(double)anzahlE / (double)anzahlZeichen;
return prozent;
}
int main(void)
{
char texte[][100] = {
"Das ist ein Satz.",
"Das ist ein weiterer Satz.",
"Dieser Satz ist relativ lang."
};
int anzahlTexte = sizeof(texte)/sizeof(texte[0]);
char c;
cout<<"Geben Sie ein, für welches zeichen die Auftrittshäufigkeit bestimmt werden soll:"<<endl;
cin>>c;
for(int i=0;i<anzahlTexte;i++)
cout<<texte[i]<<" ... besteht zu "<<bestimmeHaeufigkeitZeichen(texte[i],c)<<" Prozent aus "<<c<<endl;
return 0;
}
Code 0-1: Musterlösung.
Musterlösung zu 2.
Musterlösung zu 3.
import java.util.Random;
Random zufall = new Random(System.currentTimeMillis());
ArrayList<int[]> flocken = new ArrayList<int[]>();
int xpos;
int COUNTDOWN = 900;
int PUNKTE = 0;
public void setup()
{
size(500,500); //Fenstergröße festlegen
frameRate(30); //Bildwiederholgeschwindigkeit für draw()
textAlign(CENTER); //Koordinatenposition von Texten nach Mitte ausrichten
textSize(20); //Größe der Schneeflocken
xpos = width/2; //Position des "Frosches"
}
public void draw()
{
background(0); //schwarzer Hintergrund
//Frosch einzeichnen an Position xpos:
stroke(0,255,0); //Zeichenfarbe grün
strokeWeight(5.0); //Dicke Linie
fill(0,255,0); //nicht ausfüllen
ellipse(xpos,height-60,50,40);//Kreis
//Frosch einzeichnen an Position xpos:
stroke(0,200,0); //Zeichenfarbe grün
strokeWeight(5.0); //Dicke Linie
fill(0,200,0); //nicht ausfüllen
ellipse(xpos,height-60,35,25);//Kreis
//Frosch einzeichnen an Position xpos:
stroke(0,255,0); //Zeichenfarbe grün
strokeWeight(5.0); //Dicke Linie
noFill(); //nicht ausfüllen
ellipse(xpos,height-85,50,10);//Kreis
stroke(0,255,0); //Zeichenfarbe grün
strokeWeight(3.0); //Dicke Linie
noFill(); //nicht ausfüllen
ellipse((float)xpos -15,height-95,10,10);//Kreis
stroke(0,255,0); //Zeichenfarbe grün
strokeWeight(3.0); //Dicke Linie
noFill(); //nicht ausfüllen
ellipse((float)xpos +15,height-95,10,10);//Kreis
//Punktestand und Restzeit anzeigen:
fill(255);
noStroke();
text(COUNTDOWN,width-40,30);
text("SCORE:"+PUNKTE,60,30);
//Spiel läuft, solange Countdown nicht abgelaufenn ist
if(COUNTDOWN>0)
{
//jeden fünften Durchlauf der draw-Methode eine Schneeflocke hinzufügen:
if(COUNTDOWN%5==0)
flocken.add(new int[] {zufall.nextInt((int)width),-20});
for(int i=flocken.size()-1;i>=0;i--)
{
int[] arr = flocken.get(i);
arr[1]+=2;
if(arr[1]>(int)(height+20))//Schneeflocken zu weit unten entfernen
{
flocken.remove(i);
}
else if((arr[0]/35)==(xpos/35) && (arr[1]/35)==((width-60)/35))
{
//Schneeflocken im Froschfokus entfernen und Punkte erhöhen
flocken.remove(i);
PUNKTE++;
}
text("*",arr[0],arr[1]);
}
COUNTDOWN--;
}
}
//Callback-Funktion, die auf die Pfeiltasten reagiert
public void keyPressed()
{
if(key == CODED)
{
if(keyCode == LEFT)
{
xpos-=15;
}
if(keyCode == RIGHT)
{
xpos+=15;
}
}
}
Code 0-2: Frosch2
Bild 0-1: Frosch.