zyklische warteschlange für strings! :/



  • hmm.. ja! aber jetzt kann ich ja praktisch nur 1 zeichen einlesen, is ja n char feld, oder seh ich das falsch??

    ich verstehe die aufgabenstellung halt dann so, dass ich halt das

    char *warteschlange[13]; //feld aus 13 char-zeigern...
    

    habe, und jetzt noch zusätzlich jeweils 13 strings einlese und jeweils warteschlange[0] auf string1 ?! aber das geht ja nich .. oder? irgendwie bin ich grad durcheinander ..
    *grr*

    /edit:

    die aufgabe is übrigens zum thema : dynamische speicherverwaltung, also mit new und delete? oder?



  • äh nein du sollst kein feld von chars nehmen sondern ein feld von char-pointers (also char* )... ist so als wenn du ein 2d-array verwendest...
    dieses feld von char* soll die feste grösse 13 haben...

    so und wenn du jetzt den ersten string einfügst allokierst du für den ersten charpointer speicher der entsprechenden länge...

    also

    warteschlange[0]=(char*)malloc(....);
    .
    .
    .
    

    die aufgabe is übrigens zum thema : dynamische speicherverwaltung, also mit new und delete? oder?

    also wenn du c++ verwenden darfst jo dann nimmt man new und delete wobei dass dann in deinem fall keinen sinn mehr macht weil in c++ keiner mehr freiwillig ein char-array verwendet, deshalb hatte ich vermutet das du das dann in c machen sollst wo man den speicher mit malloc und free allokiert...



  • #include <iostream>
    
    using namespace std;
    
    int main(void) {
    	char *feld[13];   // feld aus 13 char zeigern
    	char input[30];
    	cout << "eingabe: ";
    	cin >> input;
    	feld[0] = (char*)malloc(sizeof(input));
    	feld[0] = input;
    	cout << feld[0] << endl;
    }
    

    ah, ich glaub ich habs geblickt!

    so klappt es dann jetzt! dankööö .. 🙂

    also wenn du c++ verwenden darfst jo dann nimmt man new und delete wobei dass dann in deinem fall keinen sinn mehr macht weil in c++ keiner mehr freiwillig ein char-array verwendet, deshalb hatte ich vermutet das du das dann in c machen sollst wo man den speicher mit malloc und free allokiert...

    ja, soll in c++ sein, aber der prof hat n schaden! naja, wird schon so hinhaun! 😃



  • #include <iostream> 
    
    using namespace std; 
    
    int main(void) { 
        char *feld[13];   // feld aus 13 char zeigern 
        char input[30]; 
        cout << "eingabe: "; 
        cin >> input; 
        feld[0] = (char*)malloc(sizeof(input)); //also wenn du c++ verwenden sollst nimmt new... ausserdem sollst du ja nicht sizeof(intput allokieren sondern strlen(input)+1
        feld[0] = input; //aua ganz übel... hier musst du strcpy oder sprintf verwenden aber das gleichsetzen erfüllt nicht den von dir gewünschten zweck und du hast schöne speicherlöcher...
        cout << feld[0] << endl; 
    }
    


  • boah nee, ich komm nich weiter,was n scheiss!
    ich krieg immer das hier bei der strcpy funktion:

    test.cpp:14: error: invalid conversion from `char*' to `char'

    #include <iostream>
    
    using namespace std;
    
    int main(void) {
        char *feld[13];   // feld aus 13 char zeigern
        char input;
        cout << "eingabe: ";
        cin >> input; 
        input = new char[strlen(input)+1]  // so hab ich mir das gedacht, aber ka ob das richtig is
        strcpy[feld[0],input);
    

    sorry, ich bin noch voll anfaenger, waere trotzdem nett wenn mir nochma jemand helfen koennte..
    danke



  • dein input ist ein einzelner char und kein char*. und nicht vergessen fuer input speicher zu allokieren.

    was auch immer



  • hm... also. Der Compiler meckert, er kann nciht char in char* casten.
    Dann schau dir doch mal die Varibale Input an, und was sie für einen Datentyp hat 🙂



  • #include <iostream>
    
    using namespace std;
    
    int main(void) {
        char *feld;   
        feld = new char[13];
    
        char *input;
        cout << "eingabe: ";
        cin >> input;
        input = new char[strlen(input)+1]  // so hab ich mir das gedacht, aber ka ob das richtig is
        strcpy[feld[0],input);
    

    das gleiche prob .. fehler kommt in der zeile strcpy! hmpf! ich hab schon so viele c++ tutorials durchforstet aber fuer dieses prob find ich einfach nuescht ..



  • Hallo,

    Es macht zwar nicht viel sin aber man kann die Aufgabe auch so verstehen.

    #include<string>
    #include<iostream>
    
    using namespace std;
    
    int main(){
     string *queue[13];
     sring inp;
    
     for(int i=0;i<13;i++){ 
       cout<<"Eingabe: ";
       cin>>inp;
       queue[i]=new string(inp);
     }
     //delete folgt
    }
    

    Und immer schön wieder freigeben mit delete am ende. Oder aber er sollte das Array dynamisch machen. Kann ja auch sein.



  • @icies:
    schau dir mal das zeichen nach strcpy an... da sollte eignetlich eine runde klammer sein, da es ja ein funktionsaufruf sein sollte... also ein einfacher tippfehler



  • bin immer noch am rumbasteln ..

    das feld für die pointer auf die strings soll ja ein char * sein ..

    also ham wir erstmal:

    int main(void) {
        char *feld;  
        feld = new char[13];
    

    dann soll ein string von der console eingelesen werden in ein pufferfeld

    cout << "bitte string eingeben" << endl;
    string pufferfeld;
    cin >> pufferfeld;
    

    jetzt soll die länge vom pufferfeld ermittelt werden, der entspr. speicherplatz dynamisch allokiert werden und den eintrag in die warteschlange eintragen!

    int laenge;
    laenge = strlen(pufferfeld);
    feld[0] = new char[laenge]; // ich bin mir hier nich sicher, kommt auch ein fehler, wie kann ich jetzt feld[0] die länge sagen? ich muss es doch da allokieren?
    strcpy(feld[0], pufferfeld); // ebenfalls fehler "invalid conversion from 'char' to 'char*'
    

    wäre nett wenn mir nochmal jemand helfen könnte, dankö!


Anmelden zum Antworten