C int verbinden

sman

Cadet 4th Year
Registriert
Jan. 2007
Beiträge
70
hey Leute,

habe ne frage und zwar ich möchte einfache ganzzahlen miteinander verbinden. das sieht dann so aus, ich hab ne variable a,b,c die als int deklariert ist und die soll jetzt nicht addiert werden sonder aneinander gehängt werden.

beispiel: a=1, b=2, c=3;
a+b+c

und als ergebnis soll mir der compiler 123 ausspucken.
 
Was du willst ist nicht ohne Weiteres möglich. Es gibt einen "mathematischen" Weg und einen programmiererischen Weg, sofern es diesen auch in C gibt, in C# und anderen Sprachen auch ginge es auf jeden Fall.

Der programmiererische Weg:
Du erzeugst einen String aus jeder Zahl, verbindest die Strings und erzeugst dann eine Zahl aus den Strings.

Der mathematische Weg:
Code:
int ergebnis = c, temp = 10;
while(temp <= ergebnis)
    temp *= 10;
ergebnis += b * temp;
temp = 10;
while(temp <= ergebnis)
   temp *= 10;
ergebnis += a * temp;
Das müsste auch funktionieren, vielleicht kannst du ja selbst erklären, wieso das so ist.

edit: @Vorposter: Euer Ansatz gilt nur, wenn a, b und c kleiner als 10 sind.
 
Zuletzt bearbeitet:
hm ok, kann man das denn auch als datentyp char nehmen und einfach die zeichen zusammenhängen?

so wenn ich schon dabei bin gleich noch ne weitere frage: was muss ich denn machen wenn ich mehrere zeichen in eine varable vom datentyp char speicher möchte geht das überhaupt?
 
char geht nicht, denn ein char enthält nur ein Zeichen. Eine Zahl und ein Zeichen sind komplett verschiedene Sachen, du könntest einem char zwar einen bestimmten Zahlenwert zuweisen, dieser repräsentiert aber dann erneut ein Zeichen und keine Zahl. Der Ansatz geht also nicht.
 
Vielleicht solltest du erstmal sagen, was fuer einen Datentyp du am ende haben willst. Soll es ein String werden, kannst du natuerlich ein Eingabe Int Array ganz einfach mit sprintf inkrementell zu einem langen string (char array) konkatenieren.
Ergänzung ()

Skyo schrieb:
Ichwürde den mathematischen weg wählen :)

Kann man so nicht sagen, kommt auch nen bissl drauf an, wie gross die Geschichte wird
 
habe gerade mal gegoogelt was das in C für ein aufwand ist oO
erstaunlich.. keine eingebaute typkonvertierung - lästig :)
 
wär halt echt gut wenn du genau sagst was du willst. ;)
 
Kann man so nicht sagen, kommt auch nen bissl drauf an, wie gross die Geschichte wird
Man kann erstens auf long wechseln und zweitens auf Überschreiten der möglichen Größe überprüfen und das dementsprechend aufsplitten. Dafür müsste man halt die genauen Anwendungsbedingungen kennen. Solange da nicht mehr als 10 Dezimalstellen involviert sind (und a in dem Fall nicht mit einer 3 beginnt usw), klappt der "mathematische Ansatz" aber.
 
am ende soll int raus kommen, die zahl brauch ich für weitere berechnungen. also das mit der direkten ausgabe geht nicht.
 
In C++ funktioniert das wie folgt als Konsolenanwendung:

Code:
#include <iostream>
#include <stdio.h>
#include <stdlib.h>

using namespace std;

int main()
{
	int a = 1;
	int b = 2;
	int c = 3;

	char Char_Array[10];
	sprintf_s(Char_Array, sizeof(Char_Array), "%i%i%i", a, b, c);

	int Zahl = atoi(Char_Array);

	cout << Zahl << endl;

	return 0;
}
 
Zuletzt bearbeitet:
bu1137 schrieb:
Die Lösung steht doch bereits im zweiten Post?

Und wenn nun
a = 156
b = 1
c = 5364

nach der ersten methode kommt das raus: 20974

nach der von mir gezeigten methode: 15615364

Die Frage lautete:
ganzzahlen miteinander verbinden
Welche Lösung ist nun besser/richtig?

Die anderen haben es nur bruchartig gesagt und ich habs nochmal als kompletten Script zusammengefasst.
 
Zuletzt bearbeitet:
Ich gehe mal davon aus, dass a/b/c zahlen zwischen 0-9 sind - sonst seh ich den sinn in seinem experiment nicht ganz... (ok, den seh ich auch dann nicht)
 
Zuletzt bearbeitet:
also es reicht mir wenn ich zahlen von 1-9 miteinander verbinden kann und da hab ich ja genügend beispiele bekommen wie man das machen kann. das c++ programm sieht zwar echt gut aus leider aber programm ich mit c und die sparche unterscheidet sich ja doch etwas von c++ desshalb kann ich damit nicht all zu viel anfangen.

ich bedank mich bei allen die sich die mühe gemacht haben mir zu helfen, hätte nicht gedacht das man das auf einem so umständlichen weg machen muss.
 
Wenn du als Ergebnis wirklich int brauchst dann würde ich dir in jedem Fall den mathematischen Weg empfehlen. Also falls du a, b und c definiert hast machst du einfach
int temp = a;
temp *= 10; temp += b;
temp *= 10; temp += c;

Erst in String konvertieren und dann zurück nach int ist albern.
 
Zurück
Oben