Zum Inhalt springen

Punkt in einem Array errechnen


Patrick.Karre

Empfohlene Beiträge

Hallo Forum,

ich habe folgende Aufgabe und ich komme einfach nicht auf die Lösung. Ich habe einen Zeitraum X, jeder Tag in diesem Zeitraum X beginnt um Y Uhr und endet um Z Uhr.

Zu jedem Tag zu einer bestimmten Uhrzeit können Werte hinterlegt werden. Bei einer einfachen Tagesausrechnung ist dies kein Problem. Jetzt soll dies aber für einen beliebigen Zeitraum sein.

Ich habe ein Eindemensionales Array ZEIT[n]. In dieses Array müssen alles Tage mit Zeiten (die Werte) abgelegt werden.

Ich habe bisher keine Formal die mir für jeden Tag zu einer betimmten Uhrzeit einen Wert für n bestimmt um dann ein Ergebnis dort einzutragen.

Folgenden Ansatz habe ich bisher:

n = static_cast<int>(((value.m_dt-m_pEngine->m_dtStart.m_dt)*((ClearDatePortion(value)-m_pEngine->m_dMin)*1440)/m_pEngine->m_iStep+1));

ZEIT[n]->m_Value += WERT;

Ich denke ich brauche nur einen Hinweis, ich sehe einfach den Wald vor lauter Bäumen nicht :rolleyes:

Gruß aus Hanau

Patrick

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das Array wird später in eine bereits vorhandene Liste kopiert. Die größe ist auf beiden Seiten gleich. In das Array selbst, werden nur Ergebnisse abgelegt.
Aber nichts davon ist ein Grund dafür, warum man das nicht nachträglich sortieren können soll. Das Ergebnis ist doch das gleiche.

Und dein eigentliches Problem habe ich immer noch nicht verstanden. Du kannst den Wert n nicht für einen Eintrag allein ermitteln. Du musst alle Einträge prüfen, daraus eine Reihenfolge erstellen (üblicherweise nennt man das sortieren), dann hast du dein n.

Alternativ könntest du an Stelle eines Arrays einen assoziativen Container wie z. B. std::map benutzen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

kann ich nicht gleich ausrechnen an welcher Stelle im Array der Wert eingetragen werden muss und gleich auch einfügen.

Nein. Stell dir vor, ich denke mir zwei Zahlen aus, sage dir eine davon, und du sollst sagen, ob das die kleinere oder die größere ist.

Das geht schlicht und einfach nicht.

Ich muss dir erst alle Zahlen nennen, vorher kannst du nichts über die Position irgendeiner Zahl sagen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Stimmt, da gebe ich dir recht.

Also muss ich einen "Container" erstellen, indem ich die Werte zwischenspeicher um sie danach in die eigentliche Liste zu tranferieren.

Allerdings dürfte eine normale MAP hier nicht ausreichen. Ich habe TAGE, ZEITEN und WERTE. Zu jedem Tag zu einer bestimmten Zeit müssen Werte abgelegt werden können. Eine Multimap dürfte auch nicht gehen. Ich bin für jede Idee offen :rolleyes:

Gruß aus Hanau

Patrick

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Klotzkopp,

ich habe eine Lösung ohne eine weitere MAP. Die Zeitraster sind statisch, dadurch kann ich den jeweiligen Punkt im Array direkt ansteuern. Hierfür war nur ein weitere Rechenschritt erforderlich.

Danke für deine Hilfe.

Zum nachvollziehen, die geänderten Codesegmente:


int nPerDay = static_cast<int>((m_pEngine->m_dMax.m_dt-m_pEngine->m_dMin)*1440+1)/m_pEngine->m_iStep;


int iWeekDay = (value.GetDayOfWeek()+5) % 7;


if (m_pEngine->m_bWeekdays)

n += iWeekDay*nPerDay;

Gruß aus Hanau

Patrick

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...