Arrayinhalt in eine Variable packen.



  • Ohh man, ich hoffe das is nicht schon zu abgelutscht.
    Hey, ich bin ganz neu hier in überhaupt in der Programmierung.
    Bin derzeit dabei im selbststudium C zu lernen.

    Ich schreib gerade an nem kleinen Rechner...
    In dem Laufe brauche ich folgendes:

    Ich hab mir einen Array angelegt, mit 8 zuweisungen eines Integers.
    Jetzt möchte ich diese für die Ausgabe vorher in eine Variable stecken.
    Einfach um es mal gemacht zu haben.

    Würde mich interessieren, ob das so zu machen ist.

    Wäre schön, wenn ihr mir helfen würdet.



  • #include "stdafx.h"
    #include "stdlib.h"
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	float Zahl1, Zahl2;
    	char A, j = 'j';
    	while (j == 'J' || j == 'j')
    	{
    	system("Cls");
    	printf ("\nWillkommen beim Minirechner");
    	printf ("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~");
    	printf ("\nBitte geben Sie zwei Zahlen ein.");
    	printf ("\n");
    	printf ("\n1. Zahl:  ");
    	scanf  ("%f", &Zahl1);
    	printf ("\n2. Zahl:  ");
    	scanf  ("%f", &Zahl2);
    	fflush(stdin);
    
    	printf ("\nRechenarten:");
    	printf ("\n(A)ddition");
    	printf ("\n(S)Subtraktion");
    	printf ("\n(M)ultiplikation");
    	printf ("\n(D)ivision");
    	printf ("\n");
    
    	scanf ("%c", &A);
    
    	if ( A == 'A' || A == 'a')
    	{
    		printf ("\nRechenart: Addition");
    		printf ("\nErgebnis: %.3f", Zahl1 + Zahl2);
    	}
    	if ( A == 'S' || A == 's')
    	{
    		printf ("\nRechenart: Subtraktion");
    		printf ("\nErgebnis: %.3f", Zahl1 - Zahl2);
    	}
    	if ( A == 'M' || A == 'm')
    	{
    		printf ("\nRechenart: Multiplikation");
    		printf ("\nErgebnis: %.3f", Zahl1 * Zahl2);
    	}
    	if ( A == 'D' || A == 'd')
    	{
    		printf ("\nRechenart: Division");
    
    		if (Zahl1 == 0 || Zahl2 ==0)
    	{
    		printf ("\nUngueltig!! Bitte keine Null eingeben...Danke :-)");
    		printf ("\n");
    		return 0;
    	}
    		printf ("\nErgebnis: %.3f", Zahl1 / Zahl2);
    	}
    
    	printf ("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~");
    	printf ("\nNoch eine Berechnung?  (j/n)");
    	fflush(stdin);
    	scanf_s ("%c", &j);
    
    	}
    
    	return 0;
    }
    

    Hab hier mal einen Rechner geschrieben, als ich gerade mit C angefangen habe....

    Ist keine Antwort auf deine Frage aber es ist ein funktionierender Rechner



  • Du meinst wahrscheinlich, dass du deine 8 int-Werte für die Ausgabe in einen String packen willst, oder? Das kannst du mit sprintf machen. Beispiel:

    int i=123;
    char str[64];
    sprintf(str,"In der int-Variable steht der Wert %d...",i);
    printf(str);
    


  • Hmm da kann ich irgendwie noch nicht so sehr viel draus lesen.

    Ich geb dir mal mein Beispiel.
    Ich hab das array BINARR[0] - BINARR[7]
    Jedem ist ein int zugewiesen.

    Jetz will ich z.B: die einzelnen inhalte geordnet hintereinander in eine variable packen.

    Könntest du mir dafür n Beispiel geben, da es mir nicht gelungen ist, das aus deinem Beispiel umzusetzen.



  • ZSchneidi schrieb:

    Jetz will ich z.B: die einzelnen inhalte geordnet hintereinander in eine variable packen.

    Wie sollen die 8 ints denn in einer Variablen gespeichert sein?

    Von welchem Typ soll diese Variable denn überhaupt sein?



  • int i[8]={1,2,3,4,5,6,7,8};
      char str[128];
      sprintf(str,"Werte des Arrays: %d, %d, %d, %d, %d, %d, %d, %d",i[0],i[1],i[2],i[3],i[4],i[5],i[6],i[7]);
      printf(str);
    

    So klarer? Ist das, was du willst? Alle ints sind in einer String-Variable.



  • Ui, jetz bin ich etwas durcheinander, gebt mir ein bischen um das mal zu analysieren und zu verstehen, falls es nichts wird, geb ich euch bescheid.



  • Klärt vielleicht ein wenig besser auf: http://msdn.microsoft.com/de-de/library/ybk95axf(VS.80).aspx



  • Hmm ne so richtig versteh ich die Nummer noch nicht.

    Ich hab ja 8 Integer in meinem Array, (das sind jeweils 0 oder 1(Binär halt)).
    Jetz möchte ich mit praktisch das Byte ausgeben lassen.
    Ich bin mit den Formaten noch nicht so ganz vertraut, da mir die erfahrung fehlt.
    Wie gesagt ich machs noch nicht lang.

    Ich lese dein Beispiel jetz so:

    int i[8]={1,2,3,4,5,6,7,8}; (kein Plan, wie ich das verstehen darf)
    char str[128]; (da würd jetz ein "str" array angelegt das 128 stellen reserviert bekommt)
    sprintf(str, (damit wird formatiert in das array geschrieben)
    printf(str); (und hier wirds ausgegeben)

    Wenn ich da schon irgendwo n falschen Verständnis haben sollte und das nicht richtig interpretiere, belehrt mich. Ich brauchs noch.

    invalid types `int[int]' for array subscript (das bezieht er auf das sprintf)??
    Macht er also nicht so gern... 😞



  • int i[8]={1,2,3,4,5,6,7,8}; (kein Plan, wie ich das verstehen darf)

    Du initialisierst ein integer array mit 8 elementen ( 0 - 7 )
    🙂



  • Haben Sie die Verwendung von Supercodes in Betracht gezogen?



  • Mach's doch so:

    int main() { 
    	char binArr[8]={0,1,0,0,1,0,1,1};	//dein Array, soll die Zahl 01001011 darstellen
    	int iByte=0;											//(da nur 0 oder 1 gespeichert werden soll, ist
    																		//der Typ char sinnvoller, da nur ein Byte groß)
    	for(int i=7;i>=0;i--) {		//aus deinem Array einen int-Wert machen
    		if(binArr[i]) {
    			iByte+=(1<<(7-i));
    		}
    	}
    	char cByteBin[9]={0};
    	itoa(iByte,cByteBin,2);		//aus dem erzeugten Byte einen String mit dem Wert zur Basis 2 machen
    	printf("Meine Zahl binaer dargestellt: %s",cByteBin);		//String darstellen
    	getchar();
    }
    

    😃



  • Sorry, Forum spinnt mal wieder...



  • Sorry, Forum spinnt mal wieder...



  • Sorry, Forum spinnt mal wieder...



  • Ich mach doch nur Spaß... 😉

    Das Beispiel funktioniert zwar, ist aber von hinten durch die Brust. So geht es auch einfacher:

    int main() { 
    	char binArr[8]={0,1,0,0,1,0,1,1};
    
    	printf("Meine Zahl binaer dargestellt: ");
    	for(int i=0;i<8;i++) {
    		printf("%c",binArr[i]+48);
    	}
    	printf("\n");
    	getchar();
    }
    

    Dazu musst du wissen, dass im ASCII-Code das Zeichen '0' an der Stelle 48 steht, '1' dann auf 49 usw. Du musst also nur auf deinen Zahlenwert 48 draufaddieren, um an das entsprechende Zeichen zu kommen.

    P.S.: Da dir offensichtlich noch elementare Grundlagen fehlen, solltest du am besten mal ein gutes Buch/Tutorial durcharbeiten. 🙂



  • Wow, dank dir vielmals, ich werd das in den nächsten stunden noch versuchen, da ich momentan noch andere Aufgaben hab. 🙄

    Aber das is gut erklärt.

    Ich arbeite schon an mehreren guten Tutorials, sonst hätte ich wahrscheinlich nicht mal die anmeldung hier im Forum geschafft. 😃

    Dank dir erstmal bis hier hin..


Anmelden zum Antworten