Buchstaben Zahlen zuweisen.
-
Hi zusammen,
ich bin neu hier und habe ein problem beim schreiben einer funktion.
ich habe zwei arrays angelegt in einem sind zahlen und in dem anderen buchstaben.
durch eingabe über parameter (argv[]), möchte ich z.b das er abc die zahlen ausgibt und davor sie addiert.
bsp.
int zahlen = {1,2,3};
char buchstaben = { "a","b","c"};eingabe argv[]: abc
1 +2 +3
ausgabe: 6
wie mache ich das! hat jemand einen tipp!
robse
-
Den ersten argv durchgehen, die Buchstaben daraus im Buchstabenarray suchen, die entsprechenden Zahlen ausgeben und addieren. Wo hast du Schwierigkeiten?
-
robse schrieb:
durch eingabe über parameter (argv[]), möchte ich z.b das er abc die zahlen ausgibt und davor sie addiert.
Wenn du das nicht mal in Deutsch ausdrücken kannst, wie willst du es dann programmieren?
robse schrieb:
int zahlen = {1,2,3};
char buchstaben = { "a","b","c"};Sowohl "zahlen" als auch "buchstaben" sind hier kein Array, zudem ist 'a' ein Buchstabe und "a" ein String. (Bzw. 'a' ist ein char und "a" ein const char*).
Ich verstehe den Sinn deines Vorhabens zwar nicht so ganz, aber du könntest dir das mal angucken:
http://www.cplusplus.com/reference/clibrary/cstring/strchr/
-
bei fast allem,
also ich habe die arrays definiert und gehe davon aus das ich eine for schleife brauche.
for (i = 0; i<strlen(buchstaben); i++) { }
ich weiß aber jetzt überhaupt nicht wie ich das erste array nach dem bustaben suchen kann und dann die entsprechende zahl aus dem zweiten array zuteile.
bin noch anfänger lese, jeden tag fleißig mein buch und tuts...
aber das bekomme ich einfach nicht hin.
-
Du kannst for-Schleifen verschachteln. Hilft dir das weiter?
-
cooky451 schrieb:
robse schrieb:
durch eingabe über parameter (argv[]), möchte ich z.b das er abc die zahlen ausgibt und davor sie addiert.
Wenn du das nicht mal in Deutsch ausdrücken kannst, wie willst du es dann programmieren?
robse schrieb:
int zahlen = {1,2,3};
char buchstaben = { "a","b","c"};Sowohl "zahlen" als auch "buchstaben" sind hier kein Array, zudem ist 'a' ein Buchstabe und "a" ein String. (Bzw. 'a' ist ein char und "a" ein const char*).
Ich verstehe den Sinn deines Vorhabens zwar nicht so ganz, aber du könntest dir das mal angucken:
http://www.cplusplus.com/reference/clibrary/cstring/strchr/es soll durch eine eingabe von buchstaben die entsprechenden zugewiesenen zahlen im array finden die addieren und ausgeben...
-
int main(int argc, char *argv[]) { int nums[] = {1, 2, 3}; char chars[] = "abc"; int sum = 0; if (argc != 2) return -1; for (int j = 0; j < strlen(argv[1]); ++j) if (strchr(chars, argv[1][j])) sum += nums[strchr(chars, argv[1][j]) - chars]; printf("%d", sum); }
So?
-
cooky451 schrieb:
int main(int argc, char *argv[]) { int nums[] = {1, 2, 3}; char chars[] = "abc"; int sum = 0; if (argc != 2) return -1; for (int j = 0; j < strlen(argv[1]); ++j) if (strchr(chars, argv[1][j])) sum += nums[strchr(chars, argv[1][j]) - chars]; printf("%d", sum); }
So?
danke schön, für die schnelle hilfe...
-
cooky451 schrieb:
int main(int argc, char *argv[]) { int nums[] = {1, 2, 3}; char chars[] = "abc"; int sum = 0; if (argc != 2) return -1; for (int j = 0; j < strlen(argv[1]); ++j) if (strchr(chars, argv[1][j])) sum += nums[strchr(chars, argv[1][j]) - chars]; printf("%d", sum); }
So?
ich bekomme da nur fehler angezeigt...
finde sie aber nicht...
-
robse schrieb:
ich bekomme da nur fehler angezeigt...
finde sie aber nicht...Meine Glaskugel befindet sich gerade in der Wartung und das Kartenspiel für C habe ich verliehen. Darum kann ich jetzt nicht weisssagen, welche Fehler du bekommst.
-
DirkB schrieb:
robse schrieb:
ich bekomme da nur fehler angezeigt...
finde sie aber nicht...Meine Glaskugel befindet sich gerade in der Wartung und das Kartenspiel für C habe ich verliehen. Darum kann ich jetzt nicht weisssagen, welche Fehler du bekommst.
test.c: In function ‘main’:
test.c.c:8:3: warning: implicit declaration of function ‘strlen’
test.c.c:8:19: warning: incompatible implicit declaration of built-in function ‘strlen’
test.c:9:5: warning: implicit declaration of function ‘strchr’
test.c:9:9: warning: incompatible implicit declaration of built-in function ‘strchr’
test.c:11:3: warning: implicit declaration of function ‘printf’
test.c:11:3: warning: incompatible implicit declaration of built-in function ‘printf’
test.c:12:1: warning: control reaches end of non-void functionbesser gesagt warnungen... kann man die noch wegbekommen
-
#include <stdio.h> #include <string.h>
Und für die letzte Warnung:
return 0;
ans Ende.
-
Wie Dirk schon schrieb: Fehlermeldungen exakt wiedergeben dann wissen wir wo wir ansetzen müssen. Was du in solchen Fällen auch machen kannst:
Fehlermeldung markieren - dann im Netz mit der exakten Fehlermeldung auf die Suche gehen.Ich hab mal folgenden Verdacht: So ein passender Header vorweg ist nicht schlecht
MfG f.-th.
-
cooky451 schrieb:
#include <stdio.h> #include <string.h>
Und für die letzte Warnung:
return 0;
ans Ende.man bin ich blöde... typischer anfänger fehler...
danke...
-
f.-th. schrieb:
Ich hab mal folgenden Verdacht: So ein passender Header vorweg ist nicht schlecht
Das war bei mir mehr als ein Verdacht
, aber beim nächsten mal schreibt er die Fehlermeldungen gleich dazu.
-
War ein wenig langsam
Aber so einen Header hat doch fast jeder schon mal vergessen.Aber so wie das aussieht haben ja auch einige der anderen Schreiber die gleiche Idee gehabt.
-
robse schrieb:
cooky451 schrieb:
int main(int argc, char *argv[]) { int nums[] = {1, 2, 3}; char chars[] = "abc"; int sum = 0; if (argc != 2) return -1; for (int j = 0; j < strlen(argv[1]); ++j) if (strchr(chars, argv[1][j])) sum += nums[strchr(chars, argv[1][j]) - chars]; printf("%d", sum); }
So?
ich bekomme da nur fehler angezeigt...
finde sie aber nicht...Die Zeile: "for (int j = 0; j < strlen(argv[1]); ++j)" mögen ältere Compiler nicht. Ändere sie in:
int j; for (j = 0; j < strlen(argv[1]); ++j)
-
Z schrieb:
Die Zeile: "for (int j = 0; j < strlen(argv[1]); ++j)" mögen ältere Compiler nicht.
Abgesehen davon, dass das nicht der Fehler war, müsste man die Deklaration vor das return schieben.
-
cooky451 schrieb:
Wenn du das nicht mal in Deutsch ausdrücken kannst, wie willst du es dann programmieren?
Welch gewagte Schlussfolgerung ... ich hingegen glaube, dass das Gros aller Programmierer weitaus weniger Deutsch beherrscht, und trotzdem dieses und auch komplexere Probleme mit Leichtigkeit programmieren kann.
-
ist das bei euch normal, das jeder auseinander genommen wird...
ich glaube ich werde mir das beim nächsten mal richtig überlegen, hier eine frage zu stellen... wenn man gleich so behandelt wird
jeder hat mal klein angefangen auch der cooky...
und das schwerste ist nicht das programmieren, sondern das aufstellen / schreiben was das programm können soll!
denk mal dran cooky, dafür wurde auch der pseudocode erschaffen, das jeder programmierer egal welche progsprache er kann, versteht was der andere will...
erst denken cooky, dann tippen... denn respekt für den anderen zu haben, hat deutschland leider verloren...
mfg
robse