chars ?



  • huhu,

    schau dir mal atoi und sprintf an.

    und ignoriere solche leute wie oh_mann einfach.



  • Ja ok,
    also ich verstehe deine Frage wirklich nicht.

    int calcul = ((string1[a] - '0') * (string2[b] - '0')); 
      char char_calc = (char)calcul+'0'; 
      strcat(prod_temp, &char_calc);
    

    Das kann doch nicht funktionieren, du multiplizierst zwei Ziffern. OK,
    aber es ist doch warscheinlich, dass das Ergebnis auch 2 Stellig wird.

    Und den Satz mit der Schleife hab ich nun überhaupt nicht verstanden, was du meinst.



  • also, ich weiss nicht recht wi ich das anstllen soll ! ich habe zewei zahlen, die gegebe sin : zum Beispiel 123 und 321 ! ich muss jetzt jede zahl mit jeder multiplizieren !

    aber was tun ? so habe ich sie in ein char-array gesetzt, und so kann ich dann jede zahl einzeln multiplizieren ! aber dann will ich anchher auch, dass dann das resultat als char array ausgegeben wird ! und was soll ich denn tun, wenn es groesser als 10 ist ?

    danke im voraus

    und @oh_mann -> sorry !



  • Wie xroads42 schon sagte, mit den beiden Funktionen kannst du hin- und herwandeln.

    int main()
    {
      char Zahl1[4] = "123";
      char Feld[256];
    
      int Nummer1;
    
      Nummer1 = atoi(Zahl1);
    
      sprintf(Feld, "%u", Nummer1);
      printf("Kontrolle:%s\n", Feld);
    }
    


  • gruebel schrieb:

    also mein problem ist dieses:

    char char_calc = ...;
    strcat(prod_temp, &char_calc); 👎

    strcat() verlangt zwei strings...

    Unten habe ich nun Deinen Ansatz zu einem funktionierenden Programm ausgebaut.

    #include <stdio.h>
    #include <string.h>
    #include <conio.h>
    
    int main(void)
    {
    	int a = 0, b = 0;
    	char string1[16] = "237";
    	char string2[16] = "656";
    	char char_calc[3] = "";   // Ergebnis hat max. 2 digits
    	char prod_temp[16] = "Ergebnis: ";
    
    	int calcul = ((string1[a] - '0') * (string2[b] - '0'));
    
    	if (calcul > 9)
    	{
    		char_calc[0] = (char) (calcul/10) + '0';
    		char_calc[1] = (char) (calcul%10) + '0';
    		char_calc[2] = '\0';
    	}
    	else
    	{
    		char_calc[0] = (char) calcul + '0';
    		char_calc[1] = '\0';
    	}
    
    	strcat(prod_temp, char_calc);
    
    	printf("%s", prod_temp);
    
    	getch();
    }
    


  • gruebel schrieb:

    char char_calc = (char)calcul+'0';
    strcat(prod_temp, &char_calc);

    strcat fügt strings aneinander, nicht ein 'char' an einen string. strings enden immer mit einer \0.
    wenn dann so:

    char char_calc[] = {(char)calcul+'0', 0};
    strcat (prod_temp, char_calc);
    


  • gruebel schrieb:

    Also, ich weiß nicht recht, wie ich das anstellen soll! Ich habe zwei Zahlen, die gegeben sind: zum Beispiel 123 und 321. Ich muss jetzt jede [Ziffer] mit jeder [anderen Ziffer] multiplizieren! [...] Und was soll ich denn tun, wenn [das Ergebnis] größer als 10 ist?

    Ok, ich habe noch die itoa()-Funktionen (und ein return 0, das ich vergessen hatte) hinzugefügt. Was hälts Du davon?

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <conio.h>
    
    int main(void)
    {
    	int wert1 = 237;
    	int wert2 = 656;
    
    	int a = 0;
    	int b = 0;
    
    	char string1[16] = "";
    	char string2[16] = "";
    	char char_calc[3] = "";   // Ergebnis hat max. 2 digits
    	char prod_temp[16] = "Ergebnis: ";
    
    	itoa(wert1, string1, 10);
    	itoa(wert2, string2, 10);
    
    	int calcul = ((string1[a] - '0') * (string2[b] - '0'));
    
    	if (calcul > 9)
    	{
    		char_calc[0] = (char) (calcul/10) + '0';
    		char_calc[1] = (char) (calcul%10) + '0';
    		char_calc[2] = '\0';
    	}
    	else
    	{
    		char_calc[0] = (char) calcul + '0';
    		char_calc[1] = '\0';
    	}
    
    	strcat(prod_temp, char_calc);
    
    	printf("%s", prod_temp);
    
    	getch();
    	return 0;
    }
    


  • echt super ! @ ein Gast <-- danke vielmals ! wenn ich noch eine frage hab, dann wo mich wenden ??

    danke nochmals ...



  • gruebel schrieb:

    Wenn ich noch eine Frage hab...

    ...dann ist dieses Forum bestimmt ein guter Platz dafür. Ich schau wohl in nächster Zeit auch des öfteren mal hier vorbei. (Muss meine C-Kenntnisse wieder etwas auffrischen, und solche "Fingerübungen" sind ganz gut geeignet dafür.). 🙂



  • nur eine frage : wie kopiere ich dann diese prod_temp in eine neues array?? denn diese prod_temp entsteht ja in einer schleife, un nach jedem schleifendurchgang wird am ende diee variable prod_temp wieder geloescht ... aber der wert muss erhalten bleiben ! und so will ich den dann in einem "speicher" aufbahren ..

    wi geht das ??

    danke im voraus !



  • gruebel schrieb:

    Nur eine Frage: wie kopiere ich dann prod_temp in ein neues Array?? Denn prod_temp entsteht ja in einer Schleife, und nach jedem Schleifendurchgang wird am Ende diese Variable prod_temp wieder geloescht ... aber der Wert muss erhalten bleiben! Und daher will ich den dann in einem "Speicher" aufbewahren. Wie geht das?

    Also i c h würde das Ergebnis mit itoa() einfach wieder in eine (int) Zahl zurückverwendeln, dann ist die Speicherung und Weiterverarbeitung etwas einfacher; siehe mein untenstehendes Programm.

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <conio.h>
    
    int main(void)
    {
    	int wert1 = 237;
    	int wert2 = 6589;
    
    	int digits_1 = 3;
    	int digits_2 = 4;
    
    	int result[digits_1][digits_2];
    
    	int i, j;
    	char string1[16] = "";
    	char string2[16] = "";
    	char sz_calc[3]  = "";   // Ergebnis hat max. 2 digits
    
    	itoa(wert1, string1, 10);
    	itoa(wert2, string2, 10);
    
    	for (i = 0; i < digits_1; i++)
    		for (j = 0; j < digits_2; j++)
    		{
        		int calcul = ((string1[i] - '0') * (string2[j] - '0'));
    
    			if (calcul > 9)
    			{
    				sz_calc[0] = (char) (calcul/10) + '0';
    				sz_calc[1] = (char) (calcul%10) + '0';
    				sz_calc[2] = '\0';
    			}
    			else
    			{
    				sz_calc[0] = (char) calcul + '0';
    				sz_calc[1] = '\0';
    			}
    
    			result[i][j] = atoi(sz_calc);
    		}
    
    	// Ausgabe
    	//
    	printf(" Zahlen: %d und %d\n", wert1, wert2);
    	printf("----------------------\n");
    
    	for (i = 0; i < digits_1; i++)
    		for (j = 0; j < digits_2; j++)
    			printf(" i: %c, j: %c, i*j = %d\n", string1[i], string2[j], result[i][j]);
    
    	getch();
    	return 0;
    }
    


  • EinGast schrieb:

    Also i c h würde das Ergebnis mit itoa() einfach wieder in eine (int) Zahl zurückverwendeln, dann...

    Die Funktion dafür heißt natürlich atoi() ⚠ , sorry!



  • Hallo gruebel!
    Ich lege dir folgende Seiten ans Herz: http://sockenseite.de/usenet/plenken.html und
    http://de.wikipedia.org/wiki/Plenken
    Viel Spaß damit!

    Gruß
    Philipp


Anmelden zum Antworten