Hilfe bei EAN nummer einlesen
-
Hi
Also ich habe eine aufbgabe wo ich nicht weiß wie das geht(muss dazu sagen bin noch neu in c++) also ich soll eine 12stellige Zahl eingeben und jede einzelne Ziffer prüfen lassen ob die gerade oder ungerade ist wie mache ich das??meine das mit den einzelnen ziffern prüfen lassen ! die zahl soll aber als eine zahl eingegeben werden !Danke schon mal im Vorraus
MFG Dr FLeisch
-
Hi,
wie liest du denn deine EAN ein?
Als string oder als Zahl?
Poste am besten mal, was du schon hast.
-
ich habe nur noch eine frage den rest habe ich schon was ist eigentlich mit der null wird die als gerade oder als ungerade zahl gewertet oder fällt die total weg??
-
Die 0 ist eigentlich eine gerade Zahl.
Aber das mit der 0 ist so ne Sache. Frag doch am besten den, der dir die Aufgabe gegeben hat.Und auch in der Eile bitte etwas auf Satzbau achten.
DrFleisch schrieb:
ich habe nur noch eine frage den rest habe ich schon was ist eigentlich mit der null wird die als gerade oder als ungerade zahl gewertet oder fällt die total weg??
-
naja herr fleisch, ich hätte da eine delikate Lösung anzubieten.
#include <iostream.h>
#include <windows.h>
#include <conio.h>int main (void)
{int a=0,i ;
int zwischen;
double summe ;
summe = 0 ;
char feld[12], reflektion[12];
cout << " Bitte geben sie die 12 staellige EAN - Nummer an " << endl ;
cout << "ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ" << endl ;
cin >> feld ;
for ( i=0;i<12;i++)
{ // die Ungeraden
if ( feld[a] == '1')
{ feld[a] = '1' ;
zwischen = 1 ;}
if ( feld[a] == '3')
{zwischen = 1;}
if ( feld[a] == '5')
{zwischen = 1;}
if ( feld[a] == '7')
{zwischen = 1;}
if ( feld[a] == '9')
{zwischen = 1;}// die Geraden
if ( feld[a] == '2')
{zwischen = 3;}
if ( feld[a] == '4')
{zwischen = 3;}
if ( feld[a] == '6')
{zwischen = 3;}
if ( feld[a] == '8')
{zwischen = '3';}
if ( feld[a] == '0')
{zwischen = 3;}
summe += zwischen ;
a++ ;
}
summe = summe /10;
zwischen = summe ;
summe = summe - zwischen ;
summe = summe * 10;
summe = 10 - summe ;
if (summe == 10)
{summe = 0;}
system ("cls");
cout << endl << " EAN-Nummer " << " Pruefziffer";
cout << endl << feld ;
cout << " " << summe ;getch ();
}
-
Ob gerade oder ungerade kann man auch recht einfach testen in dem man die einzelne Zahl modulo 2 macht
-
Ixtana schrieb:
Ob gerade oder ungerade kann man auch recht einfach testen in dem man die einzelne Zahl modulo 2 macht
Aber 0 / irgendwas ist immer 0.
-
Na dann nen mix aus mod 2 und test auf 0
-
Also ich habe so weit geschrieben es funtkioniert auch aber habe da mal noch eine frage wenn ich die zahl 234123657654 eingebe kommt da als ergebnis 24 raus muss ich die 24 noch mal zusammenzählen so das da nur eine ziffer nachher steht oder reicht die 24????
danke in vorraus
MFG
DrFleischps:hier ist mein code dafür könnt ja mal verbesserungvorschläge posten wie man das anders und wieleicht auch einfacher schreiben kann!
#include <iostream.h> #include <stdlib.h> #include <windows.h> using namespace std; int main() {system("color 0a"); cout<<'\n'; const unsigned char ue=static_cast <unsigned char>(129); const unsigned char ae=static_cast <unsigned char>(132); char tabelle[12] ; int zahler; char summe; int a=0 ,b; cout<<"Bitte geben sie Ihre 12 stellige EAN ein!"<<'\n'; cout<<'\n'; cin>>tabelle; b=0; cout<<'\n'; for(zahler=0;zahler<12;zahler++) { switch (tabelle[a]) { case'1': case'3': case'5': case'7': case'9':b= 1; break; case'0': case'2': case'4': case'6': case'8':b= 3; break; default:tabelle[a]==-1; } cout<<b; Sleep(250); a++; summe=summe+b; } cout<<'\n'; cout<<"Die Pr"<<ue<<"fnummer ist: "<<summe<<'\n'; cout<<'\n'; cout<<'\n'; system("PAUSE"); return 0; }
-
int main() { unsigned long long bsp_zahl=123456789012; // ev. typ w64 verwenden!! //cin >> bsp_zahl; BYTE u=0,g=0; while(bsp_zahl >= 1){ if(bsp_zahl % 2) //ungerade u++; else //gerade g++; bsp_zahl = (bsp_zahl/10); } printf( "Es gibt %i ungerade und %i gerade Ziffern\n",u,g); }
mfg