moin
also ich hab wieder ein kleines problem ^^ - ich sitze noch an einem programm dass mit "beliebig" langen zahlen rechnen kann (zumindest die grundrechenoperationen^^)
das problem was ich im moment habe ist folgendes: - ich schreibe die zahl in ein array[0] - sobald sie eine bestimmte länge erreicht schreibe ich zahl/1000000 ins array[1] und zahl%1000000 ins array[0] - dann wird die operation erst auf array[0] angewendet, der übertrag zu array[1] addiert, und die operation auf array[1] angewendet - und so weiter (im code unten isses ne operation ohne ende nich wundern;)
problem ist jetzt dass ich vorher definieren muss wie gross das array ist - gibts irgendeine möglichkeit zur laufzeit variablen zu definieren?
so a'la:
C#-Quelltext
1: 2: 3: 4:
| string test = "blubb"; int zahl = 42; string (test + Convert.ToString(zahl)); System.Console.WriteLine(test42); |
so ich häng nochmal den quelltext von dem programm an um dasses geht
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84:
| using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; using System.IO;
namespace ConsoleApplication3 { class Program { public static void Main(string[] args) { if (args.Length != 2) { Console.WriteLine("ungültige parameter"); Environment.Exit(5); } int max = Convert.ToInt32(args[0]); int pos = 0; int[] blub = new int[max]; blub[0] = Convert.ToInt32(args[1]); while (blub[max - 1] == 0) { pos = position(pos, max, blub); for (int i = 0; i <= pos; i++) { blub[i] = blub[i] + blub[i]; if (blub[i] > 999999) { if (i < (max - 1)) { blub[i + 1] = blub[i + 1] + (blub[i] / 1000000); blub[i] = blub[i] % 1000000; } } }
string strg = ausgabe((max - 1), blub); Console.Clear(); Console.WriteLine(strg); save(strg); } }
static void save(string strg) { TextWriter strgwriter = new StreamWriter("zahl.txt"); strgwriter.WriteLine(strg); strgwriter.Close(); Console.WriteLine("gespeichert"); }
static string ausgabe(int i, int[] blub) { string ret = ""; for (int j = i; j >= 0; j--) { if (blub[j] != 0) { ret = ret + " " + Convert.ToString(blub[j]); } } return (ret); }
static int position(int pos, int max, int[] blub) { for (int i = (max - 1); i >= pos; i--) { if (blub[i] != 0) { return (i); } } return (-1); } } } |
Moderiert von
Kha: Code- durch C#-Tags ersetzt