Teilen mit Restwert, Telistücke div 5 -fähig ?

Hi,

ich habe ein Problem beim Teilen einer Textdatei.
in dieser Textdatei sind immer 4 Zeilen plus eine Leerzeile.

Diese Datei muß nun geteilt werden, so dass Stücke entstehen die immer vollständige 5Zeilen-Pakete enthalten.

wie kann ich berechnen wie viele Zeilen die Pakete haben dürfen ?

Bsp:
Textdatei mit 30530 Zeilen
Soll in 8 Dateien geteilt werden
30530 / 8 = 3816,25 Zeilen

Bsp:
Textdatei mit 30530 Zeilen
Soll in 8 Dateien geteilt werden
30530 / 8 = 3816,25 Zeilen

Hi,

Hallo !

Bsp:
Textdatei mit 30530 Zeilen
Soll in 8 Dateien geteilt werden
30530 / 8 = 3816,25 Zeilen erste Datei mit 3815 Zeilen

Es bleiben 30530-3815=26715 Zeilen für 7 Dateien
26715/7=3816,42… => zweite Datei mit 3815 Zeilen
Es bleiben 26715-3815=22900 Zeilen für 6 Dateien
22900/6=3816,66… => dritte Datei mit 3815 Zeilen
Es bleiben 22900-3815=19085 Zeilen für 5 Dateien
19085/5=3817 => vierte Datei mit 3815 Zeilen
Es bleiben 19085-3815=15270 Zeilen für 4 Dateien
15270/4=3817,5 => fünfte Datei mit 3815 Zeilen
Es bleiben 15270-3815=11455 Zeilen für 3 Dateien
11455/3=3818,33… => sechste Datei mit 3815 Zeilen
Es bleiben 11455-3815=7640 Zeilen für 2 Dateien
7640/2=3820
3820 ist durch 5 teilbar, das bedeutet du kannst die restlichen Dateien (in diesem Fall 2) mit jeweils 3820 Zeilen füllen.

Ich hoffe die Idee ist klar geworden.

Gruß

hendrik

Wieso so kompliziert, meine Lösung ist doch so schon kurz und einfach.

Hallo,

ein Vorschlag wäre

(( 30530/5 - (30530 Modulo 8))/8 + 1)*5 = 3820 Zeilen

für die ersten sieben Dateien und der Rest kommt in die letzte Datei.

Viel Spaß

Korrektur

Bsp:
Textdatei mit 30530 Zeilen
Soll in 8 Dateien geteilt werden
30530 / 8 = 3816,25 Zeilen

1 „Gefällt mir“

Hi,

ich habe ein Problem beim Teilen einer Textdatei.
in dieser Textdatei sind immer 4 Zeilen plus eine Leerzeile.

Diese Datei muß nun geteilt werden, so dass Stücke entstehen
die immer vollständige 5Zeilen-Pakete enthalten.

eine zusätzliche Bedingung fehlt. Wahrscheinlich sollen die Stücke möglichst gleich groß; ich nehme mal an, sie sollen sich um max. ein Paket in der Größe unterscheiden (besser geht es nicht).

Textdatei mit 30530 Zeilen
Soll in 8 Dateien geteilt werden

Ich würde zunächst mit Paketen rechnen, nicht mit Zeilen, also mit 30530 / 5 = 6106 Paketen.

Geteilt durch 8 und abgerundet ergibt sich die Mindestanzahl von Paketen pro Datei: floor(6106 / 8) = floor(763.25) = 763

Es bleiben 6106 mod 8 = 2 Pakete übrig, die auf die Dateien verteilt werden können. (Das ist der Rest der Division von 6106 durch 8.)

Fazit: 2 Dateien mit 763+1 Paketen, 6 Dateien mit 763 Paketen.

Viele Grüße

Andreas

Wieso so kompliziert, meine Lösung ist doch so schon kurz und
einfach.

Deine Lösung führt zu einer stärkeren Ungleichverteilung. 35 Zeilen werden von deiner Lösung in eine einzelne Datei gesteckt, während 7 Dateien leer bleiben. Hendriks und meine Lösung machen daraus 7 Dateien a 5 Zeilen und eine leere.

Gruß,

Andreas

Hallo,

vielen Dank euch allen, ihr habt sehr gute Lösungen gebracht.

Ich habe mich für die von FrankMG entschieden da hier eine Rest-Datei übrig bleibt, die annähernd die gleiche Größe wie die anderen hat.

Wenn ich die Datei splitte und dabei rechnerisch auch größere Dateien entstehen, dann kann man das programmtechnisch schwer umsetzten.
Ich gebe zu, die Info hatte ich nicht hin geschrieben.

Grüße

Chris

Hallo,

Wenn ich die Datei splitte und dabei rechnerisch auch größere
Dateien entstehen, dann kann man das programmtechnisch schwer
umsetzten.

das halte ich für ein Gerücht; ich sehe da überhaupt keine Probleme.

Viele Grüße,

Andreas

1 „Gefällt mir“