Seite 1 von 2

Änderung einer Arraylänge

Verfasst: Do Dez 28, 2017 3:35 pm
von DerSamu
Hey und zwar folgendes Problem: Ich muss in einer Zahl die Position von einer bestimmten Ziffer bestimmen, die Zahl, die am weitesten links ist ist die Position 0, die rechts daneben 1 und so weiter. weiter. Da ich Anfangs ja nicht weiß, wie groß die Zahl sein wird und was dann die Länge des Arrays mit den einzelnen Ziffern sein wird, wollte ich wissen, ob es irgendwie möglich wäre die Länge des Arrays während der Laufzeit zu ändern. Weil die Zahl ja weniger Ziffern hat, wenn sie 50 ist als wenn sie zb 2828854 ist.
Ich hoffe man versteht meine Frage :?

Re: Änderung einer Arraylänge

Verfasst: Do Dez 28, 2017 4:23 pm
von cloidnerux
Was du suchst ist kein array, sondern eine Liste. Dort kannst du mit "add" Elemente hinzufügen.
Ansonsten kannst du auch einfach durch deine Zahl durchgehen und die Anzahl der Ziffern zählen.

Re: Änderung einer Arraylänge

Verfasst: Do Dez 28, 2017 4:31 pm
von DerSamu
Und wie kann ich die Anzahl der Ziffern zählen?(Wir dürfen keine Listen verwenden)

Re: Änderung einer Arraylänge

Verfasst: Do Dez 28, 2017 4:52 pm
von Xin
DerSamu hat geschrieben:Und wie kann ich die Anzahl der Ziffern zählen?(Wir dürfen keine Listen verwenden)
Ich gehe davon aus, dass die Zahl erstmal als 'int' vorliegt.

Du kodierst sie zweimal. Einmal findest Du dabei heraus, wieviele Stellen sie hat und einmal packst Du die Ziffern in das Array.

Alternativ nimmst Du ein Array, das so groß ist, dass jede Zahl reinpasst. Die größte Zahl, die in ein int passt dürfte 2 Milliarden groß sein, also 10 Stellen haben, plus Vorzeichen.

Re: Änderung einer Arraylänge

Verfasst: Do Dez 28, 2017 4:58 pm
von DerSamu
Und das herausfinden der Stelle mache ich einfach, indem ich eine while Schleife mit einen Counter mache, und in dieser while schleife die zahl solange durch 10 dividiere bis sie 0 ist und jedes mal counter++ rechne oder? Oder gibt es einen einfacheren Weg?

Re: Änderung einer Arraylänge

Verfasst: Do Dez 28, 2017 5:02 pm
von cloidnerux
Mitunter lässt sich etwas mit dem logarithmus berechnen

Re: Änderung einer Arraylänge

Verfasst: Do Dez 28, 2017 5:08 pm
von Xin
DerSamu hat geschrieben:Und das herausfinden der Stelle mache ich einfach, indem ich eine while Schleife mit einen Counter mache, und in dieser while schleife die zahl solange durch 10 dividiere bis sie 0 ist und jedes mal counter++ rechne oder? Oder gibt es einen einfacheren Weg?
Ich wüsste nicht.
cloidnerux hat geschrieben:Mitunter lässt sich etwas mit dem logarithmus berechnen
Mit log10 ja.

Grob geraten:

Code: Alles auswählen

int main() 
{
   double value = 10000;
   printf("log10(%lf) = %lf\n", value, floor(log10(value))+1);
   
   return 0;
}
log10 ist aber teurer als die Schleife.

Re: Änderung einer Arraylänge

Verfasst: Do Dez 28, 2017 5:41 pm
von mfro
DerSamu hat geschrieben:... Ich muss in einer Zahl die Position von einer bestimmten Ziffer bestimmen, die Zahl, die am weitesten links ist ist die Position 0, die rechts daneben 1 und so weiter. weiter ...
Wenn das und genau das die Aufgabe ist, brauchst Du keine Arrays, nur ein wenig Hirnschmalz.

Mach' dir klar, was es im Dezimalsystem bedeutet, wenn eine Ziffer in einer Zahl an einer bestimmten Position steht (Hinweis: teile die Zahl mal in einer Schleife wiederholt durch 10).

Dann überlegst Du dir, was der Modulo-Operator (%) macht.

Re: Änderung einer Arraylänge

Verfasst: Do Dez 28, 2017 5:50 pm
von DerSamu
Nein, die Angabe ist natürlich noch deutlich länger, wollte aber jetzt hier nicht alles reinschicken, weil mir sonst jemand den ganzen Code geschickt hätte, und ich will schon selber nachdenken ;)
Kleine Frage nebenbei, hat nichts damit zu tun: Wenn ich in der Schule C# lerne, würdet ihr sagen, dass es Sinn macht nebenbei C zu lernen? Oder eher Java?

Re: Änderung einer Arraylänge

Verfasst: Do Dez 28, 2017 6:02 pm
von Xin
mfro hat geschrieben:Wenn das und genau das die Aufgabe ist, brauchst Du keine Arrays, nur ein wenig Hirnschmalz.
Ähm... ja... haste auch recht :D