 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Johannes Henkel Guest
|
Posted: Tue Nov 14, 2006 7:43 pm Post subject: EAN-Prüfziffer |
|
|
Hallo,
ich hab hier ein Programm zur berechnung der EAN-Prüfziffer geschrieben.
Doch leider zeigt mir der Compiler noch irgendwo ein Fehler an.
Könnt ihr mir weiterhelfen was ich da falsch gemacht habe?
Gruss
Johannes
#include<stdio.h>
void main()
{
int Nutzziffer1, Nutzziffer2, Nutzziffer3, Nutzziffer4, Nutzziffer5,
Nutzziffer6, Nutzziffer7;
int Pruefziffer;
int SummeEinzelProdukte;
int modulo10;
printf("Nutzziffer1 eingeben: ");
scanf("%i" ,&Nutzziffer1);
printf("Nutzziffer2 eingeben: ");
scanf("%i" ,&Nutzziffer2);
printf("Nutzziffer3 eingeben: ");
scanf("%i" ,&Nutzziffer3);
printf("Nutzziffer4 eingeben: ");
scanf("%i" ,&Nutzziffer4);
printf("Nutzziffer5 eingeben: ");
scanf("%i" ,&Nutzziffer5);
printf("Nutzziffer6 eingeben: ");
scanf("%i" ,&Nutzziffer6);
printf("Nutzziffer7 eingeben: ");
scanf("%i" ,&Nutzziffer7);
SummeEinzelProdukte=Nutzziffer1*3+Nutzziffer2*1+Nutzziffer3*3+Nutzziffer4*1+Nutzziffer5*3+Nutzziffer6*1+Nutzziffer7*3;modulo10=SummeEinzelProdukte10;Pruefziffer=(10-modulo10)%10; printf("DiePruefziffer ist: %i \n",Pruefziffer);} |
|
| Back to top |
|
 |
Torsten Robitzki Guest
|
Posted: Tue Nov 14, 2006 11:08 pm Post subject: Re: EAN-Prüfziffer |
|
|
Johannes Henkel wrote:
| Quote: | Hallo,
ich hab hier ein Programm zur berechnung der EAN-Prüfziffer geschrieben.
Doch leider zeigt mir der Compiler noch irgendwo ein Fehler an.
Könnt ihr mir weiterhelfen was ich da falsch gemacht habe?
|
Dann schreib uns doch, was der Compiler sagt, nur weil Du es nicht
verstehst, bedeutet es ja noch nicht, das es nicht evtl. jemand anderes
hier versteht.
mfg Torsten
P.S. und den Code mal anständig formatieren und noch mal das Kapitel
über Schleifen lesen  |
|
| Back to top |
|
 |
Thomas Maeder Guest
|
Posted: Tue Nov 14, 2006 11:12 pm Post subject: Re: EAN-Prüfziffer |
|
|
"Johannes Henkel" <wsk1234 (AT) congster (DOT) de> writes:
| Quote: | ich hab hier ein Programm zur berechnung der EAN-Prüfziffer geschrieben.
Doch leider zeigt mir der Compiler noch irgendwo ein Fehler an.
|
Was für einen Fehler?
Für welche Zeile?
| Quote: | Könnt ihr mir weiterhelfen was ich da falsch gemacht habe?
Gruss
Johannes
#include<stdio.h
void main()
|
Der Rückgabetyp von main() muss int sein.
| Quote: | {
int Nutzziffer1, Nutzziffer2, Nutzziffer3, Nutzziffer4, Nutzziffer5,
Nutzziffer6, Nutzziffer7;
int Pruefziffer;
int SummeEinzelProdukte;
int modulo10;
printf("Nutzziffer1 eingeben: ");
scanf("%i" ,&Nutzziffer1);
|
scanf() kann scheitern. Ob es das tut, teilt es dem Aufrufer über den
Rückgabewert mit. Bevor Du den (angeblichen) Wert von Nutzziffer1
liest, solltest Du Dich durch Prüfung des Rückgabewerts vergewissern,
dass die Eingabeoperation auch geklappt hat. |
|
| Back to top |
|
 |
Ole Hinz Guest
|
Posted: Tue Nov 14, 2006 11:19 pm Post subject: Re: EAN-Prüfziffer |
|
|
Hallo Johannes,
Johannes Henkel wrote:
| Quote: | Hallo,
ich hab hier ein Programm zur berechnung der EAN-Prüfziffer geschrieben.
Doch leider zeigt mir der Compiler noch irgendwo ein Fehler an.
Könnt ihr mir weiterhelfen was ich da falsch gemacht habe?
Gruss
Johannes
|
Ich hoffe, dass Du sonst mehr Zeilenumbrüche verwendest, damit Dein
Compiler die richtigen Stellen anziegen kann. (Zeilennummern etc.)
Ich habe gcc 3.3.5 von meinem debian genommen.
Es gab zwei Meldungen zu Deinem Programm:
1. "SummeEinzelProdukte10" nicht deklariert.
Dies lag in dem konkreten Fall daran, dass Du nicht
"modulo10=SummeEinzelProdukte10", sondern
"modulo10=SummeEinzelProdukte%10" schreiben wolltest.
2. Rückgabewert von "main()" ist nicht "int".
Normal sollte man einen Return-Code an das OS zurückliefern.
mfg
Ole Hinz |
|
| Back to top |
|
 |
Johannes Henkel Guest
|
Posted: Wed Nov 15, 2006 4:30 am Post subject: Re: EAN-Prüfziffer |
|
|
"Ole Hinz" <ole.hinz@tu-berlin.de> schrieb im Newsbeitrag
news:4ruc5bFt5aseU1 (AT) mid (DOT) dfncis.de...
| Quote: |
Es gab zwei Meldungen zu Deinem Programm:
1. "SummeEinzelProdukte10" nicht deklariert.
Dies lag in dem konkreten Fall daran, dass Du nicht
"modulo10=SummeEinzelProdukte10", sondern
"modulo10=SummeEinzelProdukte%10" schreiben wolltest.
|
Hallo Ole,
vielen Dank. Daran lag es. Ich muss da ein % Zeichen einsetzen jetzt klappt
das Programm auch.
Ich programmiere mit C++. Wie kann ich den Anzeigen lassen an welcher stelle
sich der Fehler befindet und um was für ein Fehler es sich handelt? Bisher
hab ich das immer so gemacht:
STRG+F7 drücken um zu Kompilieren. Dann hat mir das Programm angezeigt
wieviel Fehler ich habe!
Gibt es da eine bessere möglichkeit?
Gruss
Johannes |
|
| Back to top |
|
 |
Stefan Suffa Guest
|
Posted: Wed Nov 15, 2006 12:37 pm Post subject: Re: EAN-Prüfziffer |
|
|
Hallo Johannes,
bin zwar nicht Ole, schreib aber trotzdem ;-)
Also, auf Grund Deiner vorangegangenen E-Mails denke ich, dass Du gerade
anfängst C zu programmieren (von C++ sehe ich da im Moment nicht viel
(außer, dass Du evt. einen Microsoft Visual C++ Compiler verwendest)).
Womit ich auch schon bei Deiner eigentlichen Frage wäre ...
'STRG+F7 drücken um zu Kompilieren. Dann hat mir das Programm angezeigt
wieviel Fehler ich habe!'
1) Wäre es für die Leute, die Deine Mails lesen hilfreich, wenn Du etwas
mehr Informationen mitliefern würdest (Bei Deiner ersten Mail, wie es
schon jemand anderes erwähnt hat, z.B. die (Fehler)meldungen des
Compilers, und bei der letzten Mail z.B. den Namen und die Version der
verwendeten Entwicklungsumgebung)
2) Wenn es sich um MS VS handeln sollte, dann kannst Du (in vielen
Fällen) durch einen Doppelklick auf die Fehlermeldung des Compilers zur
betroffenen Zeile gelangen.
Hoffe, dass die Infos weiterhelfen ...
Gruß,
Stefan
Johannes Henkel schrieb:
| Quote: | "Ole Hinz" <ole.hinz@tu-berlin.de> schrieb im Newsbeitrag
news:4ruc5bFt5aseU1 (AT) mid (DOT) dfncis.de...
Es gab zwei Meldungen zu Deinem Programm:
1. "SummeEinzelProdukte10" nicht deklariert.
Dies lag in dem konkreten Fall daran, dass Du nicht
"modulo10=SummeEinzelProdukte10", sondern
"modulo10=SummeEinzelProdukte%10" schreiben wolltest.
Hallo Ole,
vielen Dank. Daran lag es. Ich muss da ein % Zeichen einsetzen jetzt klappt
das Programm auch.
Ich programmiere mit C++. Wie kann ich den Anzeigen lassen an welcher stelle
sich der Fehler befindet und um was für ein Fehler es sich handelt? Bisher
hab ich das immer so gemacht:
STRG+F7 drücken um zu Kompilieren. Dann hat mir das Programm angezeigt
wieviel Fehler ich habe!
Gibt es da eine bessere möglichkeit?
Gruss
Johannes |
|
|
| Back to top |
|
 |
Josef Puerstinger Guest
|
Posted: Wed Nov 15, 2006 12:44 pm Post subject: Re: |
|
|
Hallo Johannes,
Johannes Henkel wrote:
| Quote: | Ich programmiere mit C++. Wie kann ich den Anzeigen lassen an welcher stelle
sich der Fehler befindet und um was für ein Fehler es sich handelt? Bisher
hab ich das immer so gemacht:
STRG+F7 drücken um zu Kompilieren. Dann hat mir das Programm angezeigt
wieviel Fehler ich habe!
|
Ich weiss jetzt nicht, in welchem Editor/IDE man den Compiler mittels
<CTRL>-<F7> startet, aber i.d.R. wird eine Liste mit Fehlern und
Warnungen ausgegeben. Da oft Folgefehler vorkommen, ist es wichtig, in
dieser Liste oben zu beginnen.
HTH,
Puersti |
|
| Back to top |
|
 |
Ole Hinz Guest
|
Posted: Wed Nov 15, 2006 1:03 pm Post subject: Re: EAN-Prüfziffer |
|
|
Johannes Henkel wrote:
| Quote: | Hallo Ole,
Ich programmiere mit C++. Wie kann ich den Anzeigen lassen an welcher stelle
sich der Fehler befindet und um was für ein Fehler es sich handelt?
|
Das hängt jeweils von Deiner Programmierumgebung ab. Ich benutze g++ als
Kommandozeilenwerkzeug unter Linux. Der wirft einem Zeilennummer und
eine Fehlermeldung aus.
Ich weiß aber auch, dass man unter Visual Studio sich die Fehler
anzeigen lassen kann und mit einem Doppelklick direkt auf die Position
gesetzt wird, wo der Fehler auftrat.
Ich habe auch mal mit einem Borland C++-CommandLineTool und MultiEdit
gearbeitet. Auch dort wurden Fehlermeldungen und Zeilennummern ausgegeben.
Es hängt also von Deiner Entwicklungsumgebung ab, wie Du Dir die Fehler
anzeigen lassen kannst.
Mit freundlichen Grüßen
Ole Hinz |
|
| Back to top |
|
 |
Markus Wichmann Guest
|
Posted: Wed Nov 15, 2006 11:07 pm Post subject: Re: EAN-Prüfziffer |
|
|
Johannes Henkel schrieb:
| Quote: | "Ole Hinz" <ole.hinz@tu-berlin.de> schrieb im Newsbeitrag
news:4ruc5bFt5aseU1 (AT) mid (DOT) dfncis.de...
Es gab zwei Meldungen zu Deinem Programm:
1. "SummeEinzelProdukte10" nicht deklariert.
Dies lag in dem konkreten Fall daran, dass Du nicht
"modulo10=SummeEinzelProdukte10", sondern
"modulo10=SummeEinzelProdukte%10" schreiben wolltest.
Hallo Ole,
vielen Dank. Daran lag es. Ich muss da ein % Zeichen einsetzen jetzt klappt
das Programm auch.
Ich programmiere mit C++. Wie kann ich den Anzeigen lassen an welcher stelle
sich der Fehler befindet und um was für ein Fehler es sich handelt? Bisher
hab ich das immer so gemacht:
STRG+F7 drücken um zu Kompilieren. Dann hat mir das Programm angezeigt
wieviel Fehler ich habe!
Gibt es da eine bessere möglichkeit?
Gruss
Johannes
|
Hi,
ich vermute jetzt einfach mal, dass du irgendeine IDE verwendest. Deiner
(Nicht-)Beschreibung nach tippe ich auf VC++. Wenn Visual Studio dir nur
anzeigt, _dass_ du Fehler gemacht hast, aber nicht _welche_: Hau wech
den Sch**ß . Ich kenne mich mit Visual Studio auch nicht aus. Aber
ich gebe dir mal einen Tipp zu einer deiner Zeilen:
SummeEinzelProdukte=Nutzziffer1*3+Nutzziffer2*1+Nutzziffer3*3+Nutzziffer4*1+Nutzziffer5*3+Nutzziffer6*1+Nutzziffer7*3;modulo10=SummeEinzelProdukte10;Pruefziffer=(10-modulo10)%10;
(Makrierung als Zitat fehlt, da Zeile zu lang dafür; Markierung wäre in
der Zeile darüber gelandet)
Das kann man besser und lesbarer machen, nämlich so:
SummeEinzelProdukte = Nutzziffer1 * 3
+ Nutzziffer2 * 1
+ Nutzziffer3 * 3
+ Nutzziffer4 * 1
+ Nutzziffer5 * 3
+ Nutzziffer6 * 1
+ Nutzziffer7 * 3;
modulo10 = SummeEinzelProdukte % 10;
Pruefziffer = (10 - modulo10) % 10;
Da sieht man plötzlich, dass es sich um drei Zuweisungen handelt, nicht
um eine. Außerdem haben die verehrten Konsolen-Benutzer den Vorteil,
alles auf dem Bildschirm sehen zu können, ohne sich die Augen zu
verrenken. Das da oben ist ein Design-Vorschlag den man beherzigen
/kann/, aber nicht muss. Es schadet jedenfalls nicht.
Nebenbei hätte ich das Problem mit Feldern gelöst, da ich da 10mal das
gleiche tippen muss. Aber das sei jedem Coder freigestellt (ich für
meinen Teil bin faul und stehe dazu).
--
Menschen reden den ganzen Tag Unsinn. Sie gehen zum Kühlschrank, machen
ihn auf und fragen: 'Wo ist die Butter?' Ja, wo wird sie sein? Im Kino?
-- Jürgen von der Lippe |
|
| Back to top |
|
 |
Thomas Thiele Guest
|
Posted: Fri Nov 17, 2006 12:33 am Post subject: Re: EAN-Prüfziffer |
|
|
Johannes Henkel schrieb:
Hallo,
deinen Fehler hast du ja gekärt. Was die aber niemand gesagt hat, ist
wie man das statt in C in C++ programmiert.
Das hiesse in C++
#include <cstio>
wenn du es brauchen würdest. Brauchst du aber nicht.
Was du brauchst ist:
#include <iostream>
int main(int argc, char** argv)
| Quote: | printf("Nutzziffer1 eingeben: ");
|
std::cout << "Nutzziffer1 eingeben: " << std::endl;
(Falls du noch "using namespace std;" vorher hnschreibst, kannst du dir
das std:: jeweils sparen. Ich schreibs aber immer mit)
| Quote: | scanf("%i" ,&Nutzziffer1);
|
std::cin >> Nutzziffer2;
| Quote: | SummeEinzelProdukte=Nutzziffer1*3+Nutzziffer2*1+Nutzziffer3*3+Nutzziffer4*1+Nutzziffer5*3+Nutzziffer6*1+Nutzziffer7*3;modulo10=SummeEinzelProdukte10;Pruefziffer=(10-modulo10)%10; printf("DiePruefziffer ist: %i \n",Pruefziffer);}
|
Das kann man schöner formatieren. (ich übertreibs mal)
SummeEinzelProdukte = Nutzziffer1 * 3
+ Nutzziffer2 * 1
+ Nutzziffer3 * 3
+ Nutzziffer4 * 1
+ Nutzziffer5 * 3
+ Nutzziffer6 * 1
+ Nutzziffer7 * 3;
modulo10 = SummeEinzelProdukte % 10;
Pruefziffer = (10 - modulo10 ) % 10;
std::cout << "DiePruefziffer ist: " << Pruefziffer << std::endl;
Da wäre dir das auch mit dem vergessenen % aufgefallen.
Geschmacksache, aber ich bin "Fan" davon die Variablen dort zu
deklarieren, wo man sie zuerst braucht.
Also nicht oben.
| Quote: | int Pruefziffer;
int SummeEinzelProdukte;
int modulo10;
|
Sondern
int SummeEinzelProdukte = Nutzziffer1 * 3
+ Nutzziffer2 * 1
+ Nutzziffer3 * 3
+ Nutzziffer4 * 1
+ Nutzziffer5 * 3
+ Nutzziffer6 * 1
+ Nutzziffer7 * 3;
int modulo10 = SummeEinzelProdukte % 10;
int Pruefziffer = (10 - modulo10 ) % 10;
Wobei man natürlich die temporären Variablen modulo10 und
SummeEinzelProdukte nicht braucht. Aber der Compiler sollte das eh
wegoptimieren.
Gruß Thomas |
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|