kingmclane
Goto Top

Variable Zeichenweise auslesen

Hi,

ich habe mal ne frage und zwar möchte ich eine variable zeichenweise auslesen aber wie geht das ich habe google schon durchforstet aber nix gescheites gefunden.
denke mal das ist ne kleinigkeit für euch^^.

Gruß
Tim Koemmet

PS: ich benutze Borland C++ Builder 6

Content-ID: 24120

Url: https://administrator.de/contentid/24120

Ausgedruckt am: 16.11.2024 um 07:11 Uhr

Dani
Dani 20.01.2006 um 17:35:06 Uhr
Goto Top
Du meinst den Inhalt einer Variablen?!
KingMcLane
KingMcLane 20.01.2006 um 18:10:09 Uhr
Goto Top
jup ich meine den inhalt einer variable
Dani
Dani 20.01.2006 um 18:13:48 Uhr
Goto Top
Was für eine Variable ist das??

string oder AnsiString.
Einfacher wäre es du legst den Inhalt als Char array an. Wird der Inhalt eingegeben??
Biber
Biber 20.01.2006 um 18:14:28 Uhr
Goto Top
Moin KingMcLane

Alle Zeichen durchlaufen und irgendwas Spezielles machen:
CString stringvar = "blablablubb";

for (int i=0; i<stringvar.GetLength(); i++)
switch (stringvar[i])
{
case 'b': continue;
case 'l':;
....
break;
....
default: ....
}

Genauer gehts nicht ohne Deine Anforderungen...
Gruß
Biber
KingMcLane
KingMcLane 20.01.2006 um 18:24:26 Uhr
Goto Top
ok sorry für die schlecht gestellte frage, ich werde euch mal beschreiben was ich vor habe.

also ich möchte das ein user in ein textfeld eine 12 stellige zahl eingeben kann und das programm aus den 12 stellen eine 13 berechnet (das soll nen programm zum errechnen von prüfsummen von EANs werden) und diese dann ausgibt.
Dani
Dani 20.01.2006 um 18:41:30 Uhr
Goto Top
Wie wird denn die 13. berechnet??
KingMcLane
KingMcLane 20.01.2006 um 18:45:16 Uhr
Goto Top
hier ein text aus dem internet:


EAN-Nummern (Strichcodes)

Die Prüfziffer der EAN-Nummern (13. Ziffer) berechnet sich, indem man die ersten zwölf Ziffern abwechselnd mit 1 und 3 multipliziert (links mit 1 anfangen) und diese Produkte summiert. Die Prüfziffer ist die Differenz der Summe zum nächsten Vielfachen von 10. Falls die Summe durch 10 teilbar ist, ist die Prüfziffer die 0.
Bei ILN- oder NVE-Nummern wird dasselbe Verfahren angewendet.

1. Beispiel: 978381582086[?]
9?1 + 7?3 + 8?1 + 3?3 + 8?1 + 1?3 + 5?1 + 8?3 + 2?1 + 0?3 + 8?1 + 6?3
= 9 + 21 + 8 + 9 + 8 + 3 + 5 + 24 + 2 + 0 + 8 + 18 = 115
115 + 5 = 120  Prüfziffer: 5

2. Beispiel: 978382731710[?]
9?1 + 7?3 + 8ß
?1 + 3?3 + 8?1 + 2?3 + 7?1 + 3?3 + 1?1 + 7?3 + 1?1 + 0?3
= 9 + 21 + 8 + 9 + 8 + 6 + 7 + 9 + 1 + 21 + 1 + 0 = 100
100 ist durch 10 teilbar  Prüfziffer: 0

3. Beispiel: 400330101839[?]
4?1 + 0?3 + 0?1 + 3?3 + 3?1 + 0?3 + 1?1 + 0?3 + 1?1 + 8?3 + 3?1 + 9?3
= 4 + 0 + 0 + 9 + 3 + 0 + 1 + 0 + 1 + 24 + 3 + 27 = 72
72 + 8 = 80  Prüfziffer: 8


Gruß
Tim
Dani
Dani 20.01.2006 um 18:48:45 Uhr
Goto Top
Ok..thx!!
Machst du eine GUI dazu oder auf Konsolenbasis??
KingMcLane
KingMcLane 20.01.2006 um 18:50:28 Uhr
Goto Top
schön wäre nen GUI aber wen es auf konsolenbasis leichter ist gehts auch damit
Dani
Dani 20.01.2006 um 18:53:18 Uhr
Goto Top
Willst du dann die exe jeden Benutzer geben??
KingMcLane
KingMcLane 20.01.2006 um 18:54:48 Uhr
Goto Top
das ís a für die arbeit und passend dazu ist das nen projekt aus der berufsschule
Guenni
Guenni 22.01.2006 um 12:00:25 Uhr
Goto Top
@KingMcLane

#include ?stdio.h>
#include ?string.h>
#include ?conio.h>
#include ?stdlib.h>

//Funktion gibt den Ascii-Code des Zeichens als Zahl zurück
int digit(char c){
 switch(c){
  case 48:return 0;break;
  case 49:return 1;break;
  case 50:return 2;break;
  case 51:return 3;break;
  case 52:return 4;break;
  case 53:return 5;break;
  case 54:return 6;break;
  case 55:return 7;break;
  case 56:return 8;break;
  case 57:return 9;break;
 }   
}
int main(void){
 int i;
 int z=0;
 long number=0;
 char ean[13];
 char p[2];
 scanf("%s",ean);  
 for(i=0;i ? strlen(ean);i++){
  if(i%2==0){ //Wenn i ohne Rest durch 2 teilbar ist
   number+=digit(ean[i])*1; //mulipliziere mit 1
  }else{ //ansonsten
        number+=digit(ean[i])*3; //mulipliziere mit 3
       }                          
 }
 printf("Eingabe     : %s\n",ean);  
 printf("Summe       : %ld\n",number);  
 while(number%10!=0){ //Wenn number nicht ohne Rest durch 10 teilbar ist
  number++;// erhöhe number bis durch 10 teilbar                 
  z++; //erhöhe z, ansonsten bleibt z 0
 }
 printf("Pruefziffer : %d\n",z);  
 itoa(z,p,10); //z in string p umwandeln
 strcat(ean,p); //p an ean anhängen
 printf("EAN-Nummer  : %s\n\n",ean);  
 printf("Beliebige Taste zum Beenden");  
 getch();
 return 0;   
}

Ich habe das Programm mit Bloodshed Dev-C++ kompiliert und mit deinen
Zahlen getestet. Ergebnis: positiv.
Ich hoffe, es läuft auch mit Borland C++ Builder 6.

Die ? im Quelltext durch < ersetzen.

Gruß
Günni
KingMcLane
KingMcLane 24.01.2006 um 15:27:22 Uhr
Goto Top
dickes danke @günni hast mir ne mänge arbeit erspart. und es funzzt auch im borland builder.

MfG
Tim Koemmet