C++ Hilfe bei Programm

Joined
Apr 21, 2007
Messages
2,585
Points
0
Hey, in der Schule sollten wir ein Programm schreiben, welches mehrere Dinge macht. Ausschlaggebend ist aber nur die Programmierung des Teils bei dem die Kleinbuchstaben, Großbuchstaben und Sonderzeichen gezählt werden. Das funktionierte auch, aber dann sollten wir das in einer externen Funktion schreiben.

Was sind meine Fehler? Hab das auch ohne Zeiger gemacht, aber kriegs nicht hin, dass es ausgegeben wird.

Hier ohne Funktion (läuft 1a)

Code:
#include <iostream>
// #include <stdlib.h>
// #include <cstdlib>

using namespace std;
void zeichenkette(int *, int *, int *);
int main(void)
{ int zahl1,zahl2=55;
    int count1, count2, count3;
  cout << "Inhalt von zahl2 : " << zahl2 << endl;
  cout << "Bitte zahl1 einlesen :  ";
  cin >> zahl1;
  cout << "Inhalt von zahl1 : " << zahl1 << endl;
  
  for (int i = 1; i <= 10; i++)
    cout << i << "   " << i*i << endl;
  
  string name1="Meier",name2="Otto",name3;
 // name2 += name1;
  name3 = name2 + " " + name1;
  if (name1 < name2)
    
cout << name1[2];
  
zeichenkette(&count1,&count2,&count3);
cout << "Die Zeichenkette hat " <<count1<< " Kleinbuchstaben" <<endl;
cout << "Die Zeichenkette hat " <<count2<< " Grossbuchstaben" <<endl;
cout << "Die Zeichenkette hat " <<count3<< " Sonderzeichen" <<endl;

  return 0;
}
void zeichenkette(int *cou1, int *cou2, int *cou3)
{
for(int j = 0; j < name1.length(); j++)
  {  
      int *cou1, *cou2, *cou3;
   
    if ('a' <= name1[j] && name1[j] <= 'z')
    {
        *cou1 += 1;
    }
    else if('A' <= name1[j] && name1[j] <= 'Z')
    {
        *cou2 += 1;
    }
    else
    {
        *cou3 += 1;
    }
}
}

und hier mit funktion

Code:
#include <iostream>
// #include <stdlib.h>
// #include <cstdlib>

using namespace std;
void zeichenkette(int *, int *, int *);
int main(void)
{ int zahl1,zahl2=55;
    int count1, count2, count3;
  cout << "Inhalt von zahl2 : " << zahl2 << endl;
  cout << "Bitte zahl1 einlesen :  ";
  cin >> zahl1;
  cout << "Inhalt von zahl1 : " << zahl1 << endl;
  
  for (int i = 1; i <= 10; i++)
    cout << i << "   " << i*i << endl;
  
  string name1="Meier",name2="Otto",name3;
 // name2 += name1;
  name3 = name2 + " " + name1;
  if (name1 < name2)
    
cout << name1[2];
  
zeichenkette(&count1,&count2,&count3);
cout << "Die Zeichenkette hat " <<count1<< " Kleinbuchstaben" <<endl;
cout << "Die Zeichenkette hat " <<count2<< " Grossbuchstaben" <<endl;
cout << "Die Zeichenkette hat " <<count3<< " Sonderzeichen" <<endl;

  return 0;
}
void zeichenkette(int *cou1, int *cou2, int *cou3)
{
for(int j = 0; j < name1.length(); j++)
  {  
      int *cou1, *cou2, *cou3;
   
    if ('a' <= name1[j] && name1[j] <= 'z')
    {
        *cou1 += 1;
    }
    else if('A' <= name1[j] && name1[j] <= 'Z')
    {
        *cou2 += 1;
    }
    else
    {
        *cou3 += 1;
    }
}
}
 
Ohne mir jetzt alles genau anschauen zu wollen (sieht btw. ziemlich wild aus), ist die Variable "name" in der Funktion "zeichenkette" nicht deklariert. Wahrscheinlich willst du den Namen auch noch als Parameter übergeben?!

Wenn du innerhalb einer Funktion eine Variable deklarierst, ist sie auch nur in diesem Scope gültig und für andere Funktionen unbekannt.
Ich gehe davon aus, dass du einen Compilerfehler bekommst?!
 
Sah am Anfang noch anders aus, aber dann hatte ich nen Fehler, habs umgebaut etc. ^^ und jetzt siehts unordentlich aus. Folgenden Fehler krieg ich

C:\Users\xxx\AppData\Local\Temp\eins2.cpp In function `void zeichenkette(int*, int*, int*)':
34 C:\Users\xxx\AppData\Local\Temp\eins2.cpp `name1' undeclared (first use this function)

muss ich name1 auch übergeben in der parameterliste?! also das dann noch in den prototypen folgendes reinkommt:

string * und dann halt in der ufnktion

string *nam ?

und dann halt die dinge in name umbenennen?!
 
äh, also ich als relativer noob würde zu deiner fehlermeldung sagen:
beachte myersger posting ;)
 
Back
Top Bottom