Computerhilfen.de Logo
Forum
Tipps
News

C-Programmaufgabe HARTE NUSS!!!!

Hallo!

Ich soll in den nächsten Tagen folgendes Problem lösen:

Aufgabe:

Realisieren Sie ein C-Programm, das die Datei umsatz.dat zeilenweise ausliest und folgende Berechnungen durchführt:

Anzahl der Zeilen, Gesamtsumme der Jahresumsätze, der durchschnittliche Jahresumsatz, der größte Jahresumsatz und der kleinste Jahresumsatz.
Die berechneten Werte sind auszugeben. Eine mögliche Ausgabe ist nachfolgen skizziert:

Anzahl der Zeilen: 23
Gesamtsumme der Jahresumsätze: 100000
Durchschnittlicher Jahresumsatz: 4347,83
Maximaler Jahresumsatz: 11000
Minimaler Jahresumsatz: 4060,90

Die Datei umsatz.dat hat folgenden Aufbau je Zeile:

Feld              Länge

Abteilungsnummer    3
Leerzeichen         1
Jahresumsatz        9
Zeilenende          1

Bsp:

100 20000.60
200 120000.20
250     30000

Achtung!!!

Die Größe der Datei ist nicht bekannt  - d.h. die Anzahl der Zeilen der Datei ist unbekannt.
Berücksichtigen Sie dieses UNBEDINGT bei Ihrer Lösung, da diese sonst nicht bewertet wird.


Nett, unsere Profs....oder nicht?!

Wäre klasse, wenn mir jemand helfen würde. Vielen Dank fürs durchlesen!

LG

Tina


Antworten zu C-Programmaufgabe HARTE NUSS!!!!:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Also ich an deiner Stelle würde einfach mal anfangen und die Ergebnisse hier posten. Sonst lernste es ja nicht, wenn du hier nur die Lösung präsentiert bekommst. Meine Meinung.

Salü

Darf es auch C++ sein oder muss es C sein?

Gruss

Wieso wollen alle immer C programmieren ...

Leider fehlt mir zum reinposten und ausprobieren die Zeit!!!!

Die Prüfung ist nächste Woche!!! *zitter*

Es muss in C geschrieben sein....

LG Tina

Hi Tina,
die Zeit zum schreiben solltest du dir schon nehmen.
Aber da ich kein Unmensch bin gebe ich dir ein paar Tips:
1. Du brauchst eine Schleife
2. In dieser Schleife zählst du einen Zeilenzähler hoch (c=c+1)
3. Gibt es die Befehle min, max, Average(weis nicht ob er in C auch so heisst)
4. Schleifen Bedingung 1 to EOF
Falls du diese Befehle nicht! anwenden kannst geht es auch ohne!
Dann musst du nur ein paar Variablen deklarieren:
z.B. Max (für den höchsten Umsatz), Min (für den kleinsten), Gesamt (alle Zusammenrechnen/ Gesamt=Gesamt+Umsatz), Anzahl (s.o.).
Den Durchschnitt errechnest du dann so: Gesamt/Anzahl
Dann nur noch die Ausgabe fertig.
Habe ich auch schon programmiert (dauert nur ne Stunde/ die Zeit sollte man sich schon nehmen)

/edit
Habe vergessen zu sagen:
Beispiel zur Berechnung von MAX:
Deklaration: Max=0
In der Schleife dann:
If Max < Umsatz, then
Begin
Max = Umsatz
End
Dasselbe mit min.
Vorher(vor der Schleife!)
Min =0
In der Schleife:
If Min > Umsatz then
Begin
Min=Umsatz
End
usw.
Insgesamt macht das Prog so 30-40 Zeilen aus!

« Letzte Änderung: 08.12.03, 09:07:59 von Wodkalemon »

HI Wodkalemon! (trinke ich übrigens auch gern; auch ohne Lemon *g*)

Mit Average haben wir noch nicht gearbeitet. Leider sehe ich den Prüfungserfolg in weite Ferne rücken....

Ich hatte gehofft das fertige Programm präsentiert zu bekommen, und es dann mehr oder weniger auswendig zu lernen!
Leider kann ich mir diese Programmzeile unheimlich schlecht merken. Irgendeine Klammer oder Audruck fehlt immer.... *heul*

LG Tina

Hi Tina,
du musst dir doch nur ein paar Dinge dazu merken:
1. Schleife (von 1 bis EOF)
2. Für Anzahl der Zeilen Zähler in dieser Schleife mit c=c+1
3. Auch in der Schleife: Min und max feststellen
Dazu max<Umsatz? Dann Max=Umsatz min genauso nur anders herum
4. Gesamt=Gesamt+ Umsatz
5.VOR der Schleife: ersten Datensatz laden, Variablen Gesamt auf Null, c=0, Max = Umsatz
min =Umsatz, Gesamt = Umsatz
6. NACH der Schleife: Gesamt durch c= Durchschnitt Ausgabe Gesamt, Max, Min, Anzahl, Durchschnitt

Wenn du das (so gut wie möglich in Code umsetzt) ,gib es auf jeden Fall jede Menge Punkte da du bewiesen hast, das du die dahinterliegende Logik verstanden hast, nur halt nicht perfekt in der Umsetzung warst.
BESTANDEN ;D

Hi Wodkalemon,

leider gibt es für die Logik keine Punkte! Es ist sogar so, das es bei minimalen Fehlern im Quellcode insgesamt dann null Punkte gibt.

LG Tina

Für wie Blöd hälst Du uns eigentlich?

Merkwürdig, wie sehr sich die Postingzeiten von Michelle1982 und Martina85 gleichen...

Und dass dann auch noch die angegebene eMailadresse gleich ist?!?!

Warum sagst Du nicht einfach, dass WIR DEINE Hausaufgaben lösen sollen, weil DU zu FAUL bist?

Du bekommst die Aufgaben zum LERNEN und nicht, damit du andere findest, die DEINE Arbeit machen!

Jetzt hast du es mir aber gegeben.  8)

biete doch einen BJ für die lösung dre aufgaben, dann kommt vielleichet jemand und hilft dir!









-----------------------------------------------------
1035(|-| /\/\|(h, !(H b1/\/ 5(h\/\/e!/\/|<r@/\/\

BJ? Bananen-Jodler?

so könnte man es auch nennen

@Martina85
Mit den Angaben die ich dir gemacht habe brauchst du höchstens eine viertel Stunde um das lauffähig zu programmieren.
Du musst nur den Zettel mit der Syntax nehmen und den mit meiner Reihenfolge umsetzen. Testen, Schreibfehler korrigieren, und dann läuft es.
Da ich C schon lange nicht mehr programmiere kann ich dir bei der Syntax auf nicht helfen, die sollte man aber eh selber lernen, sonst kommt in der Klausur was anderes dran und man ist aufgeschmissen.
Habe ich das richtig verstanden, das du und deine Kollegin das Studiert?
Wenn ja, dann solltet ihr entweder mal lernen oder
was anderes studieren.
Ich habe "nur" eine Umschulung gemacht, aber das bisschen Logik und programmieren für die Aufgabe habe wir in der 2.ten Wochen schon gemacht.

Hier mal ein "kleines" Beispiel was ich so progge:

Private Function keineTrEinnahmen()

Dim rsShip As ADODB.Recordset
Dim cn As ADODB.Connection
Dim strCriteria As String
Dim varShipNr As Variant
Dim varShipNr2 As Variant
Dim Plts As Double
Dim varLfdShNr As Variant
Dim varTrBeNr As Integer
Dim StDc As Currency
Dim StLs As Currency
Dim varStLs As String
Dim varStDC As String
Dim Kost As Currency
Dim varKosten As String
Dim varDiesel As String
Dim varMaut As String
Dim varNoBudget As String
Dim sql As String
Dim AnzRs As Integer
Dim cnt As Integer

'Variable setzen
  Set cn = CurrentProject.Connection
  Set rsShip = sfmTourListeKosten.Form.RecordsetClone

'Anzahl Paletten ermitteln
  For cnt = 1 To rsShip.RecordCount
    Plts = Plts + rsShip!TotPlts
    rsShip.MoveNext
  Next cnt
sfmTourListeKosten.Requery
Set rsShip = sfmTourListeKosten.Form.RecordsetClone

'Keine Paletten, Anzahl der Datensätze ermitteln
  If Plts = 0 Then
    AnzRs = rsShip.RecordCount
  End If

' Überprüfung ob die Ladestelle eingegeben wurde und Suche der Ladestelle
If IsNull(Me.txtLStNr) Then
    MsgBox "Keinen Store eingegeben", vbOKOnly, "Fehlende Storenummer"
    Me!txtLStNr.SetFocus
    Exit Function
Else
strCriteria = "LStNr=" & Me.txtLStNr
  If Not rsShip.EOF Then
 rsShip.Find strCriteria, , , 1
  End If
varShipNr = rsShip!ShipNr
End If
If rsShip.EOF Then
    MsgBox "Kein Datensatz für diesen Store", vbOKOnly, "Ungültige Storenummer"
    Me!txtLStNr.SetFocus
  Exit Function
End If

'Datensatz öffnen und Daten anfügen
  If Plts > 0 Then  'Kosten pro Shipment nach Stellplätzen errechnen
        varLfdShNr = rsShip!LfdShipNr
        rsShip!TrBeNr = Me!TrBeNr
        varTrBeNr = rsShip!TrBeNr
        rsShip!StGeDC = Me!StGeDC
        StDc = rsShip!StGeDC
        varStDC = Replace(StDc, ",", ".")
        rsShip!StGeLSt = Me!StGeLSt
        StLs = rsShip!StGeLSt
        varStLs = Replace(StLs, ",", ".")
        rsShip!TrKosten = Me!TrKosten / Plts * rsShip!TotPlts
        Kost = rsShip!TrKosten
        varKosten = Replace(Kost, ",", ".")
        rsShip!Diesel = Me!Diesel / Plts * rsShip!TotPlts
        Diesel = rsShip!Diesel
        varDiesel = Replace(Diesel, ",", ".")
        rsShip!Maut = Me!Maut / Plts * rsShip!TotPlts
        Maut = rsShip!Maut
        varMaut = Replace(Maut, ",", ".")
        rsShip!UnbudgeKosten = Me.NoBudget / Plts * rsShip!TotPlts
        NoBudget = rsShip!UnbudgeKosten
        varNoBudget = Replace(NoBudget, ",", ".")
        sql = "Insert into tblTrKosten(LfdShipNr,TrBeNr,StGeDC,StGeLSt,TrKosten,Diesel,Maut,UnbudgeKosten) Values " & _
              "(" & varLfdShNr & "," & varTrBeNr & _
              "," & varStDC & "," & varStLs & "," & varKosten & "," & varDiesel & "," & varMaut & "," & varNoBudget & ")"
        cn.Execute sql
   
        'Die Werte für den Datensatz ohne Standgeld übergeben
      If rsShip.RecordCount > 1 Then
            sfmTourListeKosten.Requery
         Set rsShip = sfmTourListeKosten.Form.RecordsetClone
             strCriteria = "ShipNr <> " & varShipNr
             rsShip.Find strCriteria, , adSearchForward, 1
           If Not rsShip.EOF Then ' Datensatz suchen
            'Werte bei ungleicher LStNr eintragen
            varLfdShNr = rsShip!LfdShipNr
            rsShip!TrBeNr = Me!TrBeNr
            varTrBeNr = rsShip!TrBeNr
            rsShip!StGeDC = 0
            StDc = rsShip!StGeDC
            StLs = Me!txtStGeLSt2
            varStLs = Replace(StLs, ",", ".")
            rsShip!StGeLSt = varStLs
            rsShip!TrKosten = Me!TrKosten / Plts * rsShip!TotPlts
            Kost = rsShip!TrKosten
            varKosten = Replace(Kost, ",", ".")
            rsShip!Diesel = Me!Diesel / Plts * rsShip!TotPlts
            Diesel = rsShip!Diesel
            varDiesel = Replace(Diesel, ",", ".")
            rsShip!Maut = Me!Maut / Plts * rsShip!TotPlts
            varMaut = Replace(rsShip!Maut, ",", ".")
            rsShip!UnbudgeKosten = Me.NoBudget / Plts * rsShip!TotPlts
            NoBudget = rsShip!UnbudgeKosten
            varNoBudget = Replace(NoBudget, ",", ".")
            sql = "Insert into tblTrKosten(LfdShipNr,TrBeNr,StGeDC,StGeLSt,TrKosten,Diesel,Maut,UnbudgeKosten) Values " & _
                  "(" & varLfdShNr & "," & varTrBeNr & _
                  "," & StDc & "," & varStLs & "," & varKosten & "," & varDiesel & "," & varMaut & "," & varNoBudget & " ) "
            cn.Execute sql
            varShipNr2 = rsShip!ShipNr
           End If
      End If
       

« Letzte Änderung: 11.12.03, 14:26:27 von Wodkalemon »

« Setiosflags und setprecission Java Programm Labyrinth »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!