| |
VB.NET - Ein- und UmsteigerAnnäherung an Wunschzahl | | | Autor: Leberkas | Datum: 31.10.17 10:10 |
| Hallo,
ich habe folgendes Problem.
Ich möchte verschiedene Zahlen überprüfen an welcher Zahl sie am nächsten dran sind.
Zu überprüfen sind alle 1000 er bis 40000 und 1111,2222,3333 bis 9999, und 11111 bis 33333
und wie groß der unterschied ist.
Wäre mal über einen Denkanstoß ganz glücklich | |
Re: Annäherung an Wunschzahl | | | Autor: effeff | Datum: 31.10.17 10:34 |
| Wie wäre es, die Zahlen in ein sortiertes Array zu schreiben, festzustellen, an welcher Position sie sich befinden und dann die Positionen davor und danach rechnerisch auszuwerten?
EALA FREYA FRESENA | |
Re: Annäherung an Wunschzahl | | | Autor: Franki | Datum: 02.11.17 04:09 |
| Hallo,
definiere doch mal was du mit "am nächsten dran" meinst.
Du willst den Abstand zu 1000, 2000, 3000 usw. prüfen, was ist wenn die zu prüfende Zahl z.B. 1500 ist? Dann ist das die Mitte zwischen 1000 und 2000 also gleicher Abstand zu beiden Grenzen....
Und dann noch die Zwischenprüfungen, was ist bei z.B. 2111, das hat den gleichen Abstand zu 2000 und 2222.
Ansonsten brauchst du für die Tausender ja nur deine gesuchte Zahl durch 1000 zu dividieren, der Teil vor dem Komma ist dann der gesuchte Tausender.
Beispiel: 12345 / 1000 = 12,345 also am nächsten an 12000.
Beschreibe doch mal wofür du das brauchst, vielleicht gibt es ja einen ganz anderen Ansatz deine Aufgabe zu lösen.
Gruß
Frank | |
Re: Annäherung an Wunschzahl | | | Autor: Leberkas | Datum: 02.11.17 20:32 |
| Hallo,
@ Franki, dank für den Hinweis. Aber soweit ist das ganze vor meinem inneren Auge noch nicht gereift
Es soll natürlich nur die größere Zahl berücksichtigt werden.
Beispiel 1500 soll die 2000 herangezogen werden.
Beispiel ist ja fast zu peinlich das man es erzählt ...
Samstagabend, Trinkrunde unter Kumpels .... Bier X+1
Wir haben Gründe gesucht warum man feiern kann.
Einmal in Jahr Geburtstag ist einfach zu wenig ....
Warum nicht den 15000 Lebenstag feier.
Also wenn jemand einen anderen Ansatz hat.
Schönen Abend noch .... | |
Re: Annäherung an Wunschzahl | | | Autor: Franki | Datum: 03.11.17 04:06 |
| Hallo,
warum peinlich, auch solche Sachen sind Alltag in der Programmierung, du glaubst gar nicht was ich in meiner Anfangszeit wo Programmieren noch Hobby war für Sachen gemacht habe und auch heute im Kreis der Kumpels manchmal noch mache.
Ihr sucht Anlässe zum Feiern? Ist doch gar kein Problem, nehmt euch einfach ein geschichtliches oder aktuelles Datum was in deiner Berechnung vorgegeben wird und ermittelt dann wer am nächsten dran ist. Stichwort DateDiff mit entsprechedem Intervall.
Dann braucht ihr keine Schleifen oder sonst was in der Programmierung.
Beispiel: Ihr feiert den 20. Jahrestag der Erfindung des Smartphones, habt das Datum und wer am nächsten dran ist gibt die nächste Runde aus.
Und den Buridans Esel braucht ihr da wirklich nicht, denn sonst verdurstet ihr in der Kneipe hoffnungslos...
Gruß
Frank | |
FindNextPartyDate | | | Autor: Manfred X | Datum: 03.11.17 22:50 |
| Public Function FindNextPartyDate() As Date
'Static: lokal deklarierte Liste bleibt zwischen
' den Aufrufen erhalten
Static PartyDates As List(Of DateTime)
If PartyDates Is Nothing Then
'Beim ersten Aufruf:
'Liste erstellen und mit üblichen Party-Terminen füllen
'(Berliner Version: Regionale Abweichungen denkbar)
PartyDates = New List(Of DateTime)
Dim start As Long = New Date(Today.Year, 1, 1).Ticks
Dim ende As Long = New Date(Today.Year + 1, 12, 31).Ticks
For i As Long = start To ende Step TimeSpan.TicksPerDay
Dim dt As DateTime = New DateTime(i)
With dt
If .DayOfWeek = DayOfWeek.Monday Or _
.DayOfWeek = DayOfWeek.Sunday Or _
.DayOfWeek = DayOfWeek.Saturday Or _
.DayOfWeek = DayOfWeek.Friday Then
PartyDates.Add(dt)
End If
End With
Next i
End If
Dim mindiff As Long = Long.MaxValue
Dim NextPartyDate As DateTime = Nothing
Dim diff As Long
For i As Integer = 0 To PartyDates.Count - 1
diff = PartyDates(i).Date.Ticks - Today.Date.Ticks
'Die nächste Party findet in der Zukunft statt
If diff > 0 AndAlso diff < mindiff Then
mindiff = diff
NextPartyDate = PartyDates(i)
End If
Next i
Return NextPartyDate
End Function Ermittlung der Zahl der bereits gelebten Tage:
Private Function DaysLived(ByVal birthday As Date) As Integer
Return (Today.Date - birthday.Date).Days
End Function Datum eines "runden Tages-Geburtstages"
(gegeben durch den Days-Parameter):
Private Function GetPartyDay(ByVal birthday As Date, _
ByVal Days As Integer) As Date
Return birthday.Date.AddDays(Days)
End Function
Beitrag wurde zuletzt am 03.11.17 um 23:15:35 editiert. | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
TOP! Unser Nr. 1
Neu! sevDataGrid 3.0
Mehrspaltige Listen, mit oder ohne DB-Anbindung. Autom. Sortierung, Editieren von Spalteninhalten oder das interaktive Hinzufügen von Datenzeilen sind ebenso möglich wie das Erstellen eines Web-Reports. Weitere InfosTipp des Monats TOP Entwickler-Paket
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|