10.01.2016, 11:21 |
Auf diesen Beitrag antworten » |
Lars |
C: strings/Kommandozeilenargumente
Meine Frage:
Hab die Aufgabe mal im Anhang hochgeladen.
Meine Ideen:
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
|
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int i;
int s;
int v=0;
int t=0;
for(i=1; i < argc; i++)
{
printf("Argument %d: %s ", i, argv[i]);
char* p=argv[i];
do
{
if(t!=0)p++;
if(*p=='a','A','e','E','i','I','o','O','u','U')v++;
if(*p=='\0')printf("hat %i Zeichen, davon %i Vokale\n",s,v);
s++;
t++;
}while(*p!='\0');
}
return EXIT_SUCCESS;
}
|
|
Ich hab imo keine wirkliche Ahnung, warum das mit dem Zählen nicht funktioniert (das mit den Vokalen kann ich so gar nicht schreiben schätze ich, gibt's dafür ne andere Möglichkeit?)
Wir hatten das nur in der Vorlesung und nicht im Tutorium und inner Vorlesung hatte ich die Grundlage verstanden, aber imo wills nicht klappen. |
10.01.2016, 13:40 |
Auf diesen Beitrag antworten » |
eulerscheZahl |
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
|
#include <stdio.h>
int main(int argc, char* argv[]) {
int i;
int vokale;
int zeichen;
char* p;
for (i = 1; i < argc; i++) {
printf("Argument %d: %s ", i, argv[i]);
p = argv[i];
vokale = 0; //zurücksetzen für jedes Wort
zeichen = 0;
while (*p != '\0') {
if (*p == 'A' || *p == 'E' || *p == 'I' || *p == 'O' || *p == 'U' ||
*p == 'a' || *p == 'e' || *p == 'i' || *p == 'o' || *p == 'u') {
vokale++;
}
zeichen++;
p++;
}
printf("hat %i Zeichen, davon %i Vokale\n", zeichen, vokale);
}
} |
|
|
10.01.2016, 13:58 |
Auf diesen Beitrag antworten » |
Lars |
Alles klar, das mit den || hab ich danach auch so gemacht, habs jetzt auch richtig, aber dein code ist bei weitem einfacher gehalten, danke dir. |
10.01.2016, 14:31 |
Auf diesen Beitrag antworten » |
Lars |
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
|
#include <stdio.h>
int main(int argc, char* argv[]) {
int i;
int n=0;
int vokale;
int zeichen;
char* p;
char* rauf;
char* runter;
for (i = 1; i < argc; i++)
{
printf("Argument %d: %s ", i, argv[i]);
p = argv[i];
rauf = argv[i];
vokale = 0;
zeichen = 0;
while (*p != '\0')
{
if (*p == 'A' || *p == 'E' || *p == 'I' || *p == 'O' || *p == 'U' ||
*p == 'a' || *p == 'e' || *p == 'i' || *p == 'o' || *p == 'u')
{
vokale++;
}
zeichen++;
p++;
}
printf("hat %i Zeichen, davon %i Vokale ", zeichen, vokale);
while(*rauf!='\0')
{
runter=rauf;
rauf++;
n++;
}
for(n;n>0;n--)
{
printf("%c",*runter);
runter--;
}
printf("\n");
}
}
|
|
Hab das mal vervollständigt, danke nochmal. |
10.01.2016, 14:36 |
Auf diesen Beitrag antworten » |
eulerscheZahl |
Hier meine Version:
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
|
#include <stdio.h>
int main(int argc, char* argv[]) {
int i;
int vokale;
int zeichen;
char* p;
for (i = 1; i < argc; i++) {
printf("Argument %d: %s ", i, argv[i]);
p = argv[i];
vokale = 0; //zurücksetzen für jedes Wort
zeichen = 0;
while (*p != '\0') {
if (*p == 'A' || *p == 'E' || *p == 'I' || *p == 'O' || *p == 'U' ||
*p == 'a' || *p == 'e' || *p == 'i' || *p == 'o' || *p == 'u') {
vokale++;
}
zeichen++;
p++;
}
printf("hat %i Zeichen, davon %i Vokale ", zeichen, vokale);
do {
p--;
printf("%c", *p);
} while (p != argv[i]);
printf("\n");
}
} |
|
|
10.01.2016, 17:27 |
Auf diesen Beitrag antworten » |
Lars |
Is noch besser, bin ich gar net drauf gekommen
. |