zahl einlesen und aus der variablen einzeln einlesen?



  • Hallo,

    wenn ich mit scanf("%c", &zahl);

    eine Zahl wie z.b. 9-8765-4321
    ich aber jede zahl einzeln brauche, da ich jede einzelne mit einer anderen
    mal nehmen muss
    ( also die 91
    die 8
    2
    die 7*3
    etc)

    ich hab gerad echt nen Brett vorm kopf kann mal jemand nen Tipp geben
    oder nen Lösungsansatz??

    Thx



  • hab ne lösung aber die sieht nicht so toll aus ...

    gehts auch besser ??

    #include <stdio.h>
    
    int main(void)
    {
    	int a, b, c, d, e, f, g, h, i, ges;
    	printf("Bitte geben Sie die ISBN ohne Prüfziffer und Bindestriche ein: ");
    	scanf("%1d%1d%1d%1d%1d%1d%1d%1d%1d", &a, &b, &c, &d, &e, &f, &g, &h, &i);
    	a=a*1;
    	b=b*2;
    	c=c*3;
    	d=d*4;
    	e=e*5;
    	f=f*6;
    	g=g*7;
    	h=h*8;
    	i=i*9;
    	ges=a+b+c+d+e+f+g+h+i;
    	ges=ges%11;
    	if (ges==10)
    		printf("Pruefsumme ist: X"); 
    
    	printf("Pruefsumme ist: %d\n", ges);
    	return(0);
    }
    


  • also ich habe das ganze jetzt nicht geprüft, aber theretisch kannst du das ganze als zeichenkette einlesen lassen, diese in chars zerlegen, die chars wieder in einzelne zeichenketten umwandeln und zum schluss die zerlegten Zeichenketten in int - Werte umwandeln. Folgender Code wäre einen Versuch wert:

    char* ptr_buffer = new char [10];
    
    int main (void)
    {
    scanf ("%s", buffer); //bitte nicht &buffer, buffer ist schon ne adresse!!!
    int size = strlen (buffer);
    char** ptr_token = new char* [size];
    
    //speicher reservieren
    for (int i=0; i<size; i++){
    ptr_token[i] = new char [2];
    }
    
    //teilstrings erzeugen
    for (int loop=0; loop<size; loop++)
    {
    ptr_token[loop][0] = ptr_buffer[loop];
    ptr_token[loop][1] = '\0';
    }
    
    //strings in int umwandeln
    int* values = new int [size];
    for (int c=0; c<sizeof (ptr_token / ptr_token[0]); c++)
    {
    size[c] = atoi (ptr_token[c]);
    }
    return 0; //sorry für die schlechte formatierung
    }
    


  • #include <iostream>
    using namespace std;
    
    int main(int argc, char *argv[])
    {
    
    char   z[9] = { 0 };
    cin >> z;
    
    int sum = 0;
    for(int i = 0;i<9;++i)
    sum = (z[i]*i);
    sum=sum%11; 
    if (sum==10)
    cout << "Pruefsumme ist X" << endl;
    
    cin.sync();
    cin.clear();
    cin.get();
    }
    

    Guck mal ob das geht.



  • sorry, nocheinmal:

    #include <iostream>
    using namespace std;
    
    int main(int argc, char *argv[])
    {
    
    char   z[9] = { 0 };
    cin >> z;
    
    int sum = 0;
    for(int i = 0;i<9;++i)
    sum = sum + (z[i]*i);
    sum=sum%11; 
    if (sum==10)
    cout << "Pruefsumme ist X" << endl;
    cout << sum << endl;
    cin.sync();
    cin.clear();
    cin.get();
    }
    

    hoffe das geht, kanns hier nicht testen.


Anmelden zum Antworten