Brauche Hilfe bei einen Programm
-
SciFi->N/A schrieb:
Es fehlt wohl ein
int SummeEinzelProdukte10;Trotzdem würde ich das Programm nochmal überarbeiten.
Hallo,
sorry ich weiss noch nocht wie man den Quellcode hier richtig rein bringt!
Es fehlte ein % Zeichen hinter dem Produkte. Jetzt klappt das Programm.Gruss
JohannesEDIT: Ok hab herausgefunden wie das mit dem Quellcode hier einfügen funktioniert

-
Ok, jetzt hab ich mal noch eine Frage zu den Schleifen!
Und zwar hab ich in meinen jetzigen Programm den Algorithmus
SummeEinzelProdukte=Nutzziffer1*3+ Nutzziffer2*1+ Nutzziffer3*3+ Nutzziffer4*1+ Nutzziffer5*3+ Nutzziffer6*1+ Nutzziffer7*3;Es werden also alle Nutzziffern abwechselnd mit 3 und 1 multipliziert!
Wie kann ich sowas als Schleife schreiben? Den ich hab vor das Programm für mehrere Nutzziffern zu schreiben und möchte nicht z.B. 27mal Nutzzifferxx*27 zu schreiben

Ich hab mir das irgendwie so vorgestellt. Scheitere aber leider an der Umsetzung.
if(nutzziff==3) nutzziff=1; else nutzziff=3;Könnt ihr mir auch hier weiterhelfen?
Danke
-
du nimmst ein feld an nutzziffern, und in der schleife dann
if(akt_ziffer%2) summe += ziffern[akt_ziffer] *3; else summe += ziffern[akt_ziffer] *1;es gibt auch kompaktere schreibweisen, aber ich denke die sind zu kompliziert für dich
-
Dazu mußt du deine Ziffern in ein Array (bzw. einen std::vector) packen. Und dann geht das so:
int Summe = 0; for (int i=0; i<Nutzziffer.size(); i+=2) Summe += Nutzziffer[i] * 3; for (int i=1; i<Nutzziffer.size(); i+=2) Summe += Nutzziffer[i] * 1;Im übrigen ist
void main()
falsch. Es muß
int main()
heißen.
Edit: Zu langsam und suboptimal. Arrrg!
-
Ähem du meinst wohl jede ungerade Stelle wird mit 3 multipliziert, oder was erhoffst du dir von den *1 Multiplikationen?
mach es so:
#include <numeric> //für std::accumulate int main() { const size_t anzahlZiffern = 13; int ean[ anzahlZiffern ]; for( int i = 0; i < anzahlZiffern; ++i ) if( i % 2 == 0 ) ean[ i ] *= 3; int sum = std::accumulate( ean, ean + anzahlZiffern, 0 ); int checkdigit = ( 10 - sum % 10 ) % 10; //wenn ich deinen Codeauszug richtig interpretiere }
-
Vielen Dank für eure Antworten. Ich versuche es mal umzusetzen

-
Z2 schrieb:
Dazu mußt du deine Ziffern in ein Array (bzw. einen std::vector) packen. Und dann geht das so:
int Summe = 0; for (int i=0; i<Nutzziffer.size(); i+=2) Summe += Nutzziffer[i] * 3; for (int i=1; i<Nutzziffer.size(); i+=2) Summe += Nutzziffer[i] * 1;Im übrigen ist
void main()
falsch. Es muß
int main()
heißen.
Edit: Zu langsam und suboptimal. Arrrg!
Gibt es sowas auch für den "printf" Befehl?
Also so das ich nicht z.B. 21 malprintf("Nutzziffer1 eingeben: ");
scanf("%i" ,&Nutzziffer1);für 21 Eingaben schreiben muss? Es soll also variieren und nicht durch den Programmieren festgelegt werden!
Edit: Ok hab selber im Buch nachgeschaut und bin auf folgende Lösung gekommen um mir das Einlesen der Daten zu erleichtern!
printf("Bitte Nutzziffern eingeben: \n"); for(i=0; i<n; i++) scanf("%i",&Nutzziffer[i]);
-
Bräuchte wohl noch ein wenig unterstützung von euch! Bin inzwischen beim Kapitel Schleifen gekommen, doch hab ich an einigen Stellen noch Probleme

#include<stdio.h> int main() { int Nutzziffer[13]; int Pruefziffer, SummeEinzelProdukte, modulo10; int i,ean_nr,anzahl_nziffern; printf("EAN-Code-Nr. =? (8 oder 13 eingeben)"); scanf("%i",&ean_nr); anzahl_nziffern=ean_nr-1; printf("Es werden nun %i Ziffern eingelesen.\n\n",anzahl_nziffern); //Einlesen der Nutzziffern { printf("Bitte Nutzziffern eingeben: \n"); for(i=0; i<anzahl_nziffern; i++) scanf("%i",&Nutzziffer[i]); } //Der Algorithmus (Alle Zahlen sollen abwechseln mit 3 und 1 multipliziert werden) { if (Nutzziffer[i]%2) SummeEinzelProdukte += Nutzziffer[i] *3; else SummeEinzelProdukte += Nutzziffer[i] *1; } modulo10=SummeEinzelProdukte % 10; Pruefziffer=(10-modulo10) % 10; //Ausgeben des EAN-Codes mit Prüfziffer char Text[]="Der EAN-Code ist: %i \n" ,Pruefziffer";; printf("%s",Text); }Visual C++ 6.0 zeigt mir leider noch 4 Fehler und 1 Warnung!

error C2001: Zeilenumbruch innerhalb einer Konstanten
error C2143: Syntaxfehler : Fehlendes ';' vor 'string'
error C2371: 'Pruefziffer' : Neudefinition; unterschiedliche Basistypen
Siehe Deklaration von 'Pruefziffer'
error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'printf'
warning C4508: 'main' : Funktion sollte einen Wert zurueckgeben; Ergebnistyp 'void' angenommen
-
char Text[]="Der EAN-Code ist: %i \n" ,Pruefziffer";;
Diese Zeile kannst du so nicht verwenden, du müsstest die Prüfziffer mittels snprintf einfügen..
-
printf("DiePruefziffer ist: %i \n",Pruefziffer);Das muss %d heissen bei Integer!
Gruß Alex