• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), die Werbung betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung

[Objective-C] C Programmieren Aufgaben 1. Semester

BavariaWars

Erdapfel
Mitglied seit
22.07.21
Beiträge
1
Hi,

Ich bräuchte Mal die Hilfe von Programmierprofis und zwar studiere ich E-Technik und bin durch Informatik 1 durchgefallen.
Ich Versuch Grad die alte Prüfung vollständig zu lösen, aber bei 2 Aufgaben bleib ich leider hängen. Ich kopiere Mal die Angaben hier rein. Wenn jemand nen Lösungsvorschlag zu den beiden Aufgaben hat, gerne her damit 😉


Aufgabe 4:

Implementieren Sie die Funktion Flaeche( ). Beachten Sie, dass keine negativen Felder entstehen dürfen.

#include <stdio.h>
typdef struct punkt
{ int x;
int y;
} Punkt;
//____________________________________________________________
float Flaeche (Punkt D, Punkt E);
// Funktionsprototyp
//________________Hauptprogramm_______________________________
int main (void)
{ Punkt A,B;
A.x = 2 ; A.y = 3;
B.x = 7 ; B.y = 9;
printf (ʺ Punkt A = (%i, %i) \n ʺ, A.x, A.y);
printf (ʺ Punkt B = (%i, %i) \n ʺ, B.x, B.y);
printf (ʺ Die Flaeche des Rechtecks ist: ʺ);
printf (ʺ %i * 2f\n ʺ , Flaeche (A,B));
return (0);
}



Aufgabe 6:

Schreiben Sie eine C – Funktion, welche den Wert der kleineren Zahl von zwei Zahlen in der Argumenten Liste zurückgibt. Wenn beide Zahlen gleich groß sind, soll dieser Wert zurückgegeben werden.
Der Funktionsprototyp dieser Funktion ist:

#include <stdio.h>
#include <stdlib.h>


int min (int a, int b){
if(a>b)
return b;
else return a;
}
int main()
{
int DieKleinste = min(17,33);
printf("%i", DieKleinste);
return 0;
}
 

Scotch

Cox Pomona
Mitglied seit
02.12.08
Beiträge
7.450
Das ist jetzt nicht dein Ernst, oder? Also weder, dass das Aufgaben von einer Uni oder FH sind, noch dass die paar Zeilen Code, die da nicht stehen, dich vor Probleme stellen. Letzteres glaube ich nur, wenn du wirklich keinerlei Schimmer von C hast, das komplette Semester verpennt hast und auch nach versägter Klausur sorgsam vermieden hast, dich für mehr als 1-2h mit C zu beschäftigen.

Ernsthaft, solche Aufgaben hat mein Sohn in der sechsten Klasse in der Informatik AG.

Aber bevor mir jetzt wieder jemand sagt, schreib' doch nichts, wenn du nicht helfen willst, der einmalige Versuch einer Hilfestellung:

Aufgabe 4: Fläche eines Rechtecks ist a * b, mit a,b den Längen der beiden Seiten. a und b kann man jeweils aus der Differenz der x/y Koordinaten der Punkte berechnen.

Aufgabe 6: Zuerst auf a=b prüfen.
 
  • Like
Wertungen: Dario von Apfel

Bitnacht

Rhode Island Greening
Mitglied seit
09.06.14
Beiträge
481
Bei Aufgabe 6 steht die Lösung doch schon da, oder nicht?

Bei Aufgabe 4 ist ein Gedankenfehler in der Aufgabenstellung. 2 Punkte haben keine Fläche und sind auch kein Rechteck. Aber wenn wir das mal ignorieren:
{ return 1.0 * ((D.x<E.x) ? E.x-D.x : D.x-E.x) * ((D.y<E.y) ? E.y-D.y : D.y-E.y); }

Schau mal ob der Compiler es mag und ob das Ergebnis stimmt. Jedenfalls sollte das genug Anschwung geben, dass Du eine Lösung findest.

printf (ʺ %i * 2f\n ʺ , Flaeche (A,B));
sieht aber falsch aus.

Besser wäre z.B.
printf (ʺ %4.2f\n ʺ , Flaeche (A,B));
 

Bitnacht

Rhode Island Greening
Mitglied seit
09.06.14
Beiträge
481
Nebenbei:
return (x<y)? x : y;

hat das gleiche Wirkung wie
if (x<y) return x; else return y;

Und:
"%4.2f" ist wie "%f" (also float) bloß mit 4 Stellen vor dem Komma und 2 nach dem Komma.

1.0 ist ein Literal. Literale haben einen impliziten Typ, aber man kann auch explizite Typangaben machen. 4l ist beispielsweise nicht 4 Liter, sondern eine 4 als Datentyp long bzw. long int.
 
Zuletzt bearbeitet: