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 82
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.