Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » HIILLFFEEEE

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] [ 2 ] [ 3 ] [ 4 ] > 5 < [ 6 ] [ 7 ]
040
20.05.2006, 23:53 Uhr
~Stephi
Gast


Ohje Ohje,
schon wieder muss ich nerven!
Wieso gibt er mir diesmal mein nach dem Alphabet sortiertes Feld nicht aus?

Code:

void SortStringAlpha(char AszEingabeStrings[ANZAHL][81],int iAnzahlStrings)
{
int i,j;
   char *temp;
   for(i = 0; i < iAnzahlStrings; i++) {
      for(j = i + 1; j < iAnzahlStrings; j++) {
        if( (strcmp(AszEingabeStrings[i][81],AszEingabeStrings[iAnzahlStrings][j]) > 0) ) {
           temp=AszEingabeStrings[j][81];
           AszEingabeStrings[i][81]=AszEingabeStrings[j][81];
          
          AszEingabeStrings[j][81]=temp;
        }
      }
   }
   for(i = 0; i < iAnzahlStrings; i++)
      printf("\n%s",StringUmdrehen(AszEingabeStrings[j]));


}




Also hier nochmal im Zusammenhang!

Gruß Stephi


Code:

# include <stdio.h>
# include <string.h>
# define ANZAHL 5

size_t halbwegs_sichere_eingabe(char s[81])
{
    int len=0;
    char buf[1024];
    gets(buf); //gets ist gefaehrlich!
    len=strlen(buf);
    if(len>80)
    {
        strncpy(s,buf,80);
        s[80]='\0';
    }
    else
    {
        strncpy(s,buf,len);
        s[len]='\0';
    }
    return len;
}

void Abfrage(char arr[ANZAHL][81])
{
    size_t i=0;
    while (i<ANZAHL)
    {
        if(!halbwegs_sichere_eingabe(arr[i]))
            break;
        else
            ++i;
    }
}

char* StringUmdrehen(char string[81])
{
    int i;
    int j=0;
    char *pszstring;
    char *psztemp;
    char stringtemp[81];

    int laenge = strlen(string);

    strcpy(stringtemp, string);
    pszstring=string;
    psztemp=stringtemp;

    for (i = laenge-1; i >= 0; i--)
    {
    *(pszstring+j)=*(psztemp+i);
    j++;
      
    }
    return string;
}

void SortStringAlpha(char AszEingabeStrings[ANZAHL][81],int iAnzahlStrings)
{
int i,j;
   char *temp;
   for(i = 0; i < iAnzahlStrings; i++) {
      for(j = i + 1; j < iAnzahlStrings; j++) {
        if( (strcmp(AszEingabeStrings[i][81],AszEingabeStrings[iAnzahlStrings][j]) > 0) ) {
           temp=AszEingabeStrings[j][81];
           AszEingabeStrings[i][81]=AszEingabeStrings[j][81];
          
          AszEingabeStrings[j][81]=temp;
        }
      }
   }
   for(i = 0; i < iAnzahlStrings; i++)
      printf("\n%s",StringUmdrehen(AszEingabeStrings[j]));


}

void ZeigeHilfe()
{
    printf("******PARAMETER HILFE***********\n");
    printf("-u              dreht Woerter um\n");
    printf("-l     sortiert nach Wort-Laenge\n");
    printf("-a        sortiert nach Alphabet\n");
    printf("-h           zeigt die Hillfe an\n");
    
    }


int main(int arg, char *szString[])
{
    char szAbfrage[ANZAHL][81];
    int j=0, iAnzahlStrings=0;
    if(arg > 1)
{
    

    if(strcmp(szString[1],"-u")==0)
    {
        Abfrage(szAbfrage);
        for (j=0;j<ANZAHL&&(strlen(szAbfrage[j])>0);++j)
            printf("\n%s",StringUmdrehen(szAbfrage[j]));
    }
    else if(strcmp(szString[1],"-l")==0)
        printf("Und tschuess");
    

     else if(strcmp(szString[1],"-a")==0)
     {
        Abfrage(szAbfrage);  
        for (j=0;j<ANZAHL&&(strlen(szAbfrage[j])>0);++j)
        SortStringAlpha(szAbfrage[j], iAnzahlStrings);
        iAnzahlStrings=j++;
     }
     else if(strcmp(szString[1],"-h")==0)
        ZeigeHilfe();

    else
        printf("Unbekannter Parameter\n");
}
else
    printf("kein Argument uebergeben\n");
    
  return 0;
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
041
21.05.2006, 14:28 Uhr
Spacelord
Hoffnungsloser Fall



C++:
void SortStringAlpha(char AszEingabeStrings[ANZAHL][81])
{
   int i,j;
   char temp[81];
   for(i = 0; i < ANZAHL; i++) {
      for(j = i + 1; j < ANZAHL && strlen(AszEingabeStrings[j])>0; j++) {
        if( (strcmp(AszEingabeStrings[i],AszEingabeStrings[j]) > 0) ) {
           strncpy(temp,AszEingabeStrings[j],81);
           strncpy(AszEingabeStrings[j],AszEingabeStrings[i],81);
           strncpy(AszEingabeStrings[i],temp,81);
        }
      }
   }
  
}

.......
    else if(strcmp(szString[1],"-a")==0)
     {
        Abfrage(szAbfrage);  
        SortStringAlpha(szAbfrage);
        for (j=0;j<ANZAHL&&(strlen(szAbfrage[j])>0);++j)
            printf("%s\n",szAbfrage[j]);
     }


Nur um es nochmal zu verdeutlichen:
AszEingabeStrings[i][81] ist ein einzelnes char.
AszEingabeStrings[i] ist ein C String.
strcmp vergleicht C Strings.....

Gruss Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
042
21.05.2006, 14:57 Uhr
~Stephi
Gast


Hey und guten Morgen

Vielen Dank habs nun so hnbekommen:
Nun fehlt nur noch das sortieren nach der Wortlänge

Gruß Stephi



Code:

# include <stdio.h>
# include <string.h>
# define ANZAHL 5

size_t halbwegs_sichere_eingabe(char s[81])
{
    int len=0;
    char buf[1024];
    gets(buf); //gets ist gefaehrlich!
    len=strlen(buf);
    if(len>80)
    {
        strncpy(s,buf,80);
        s[80]='\0';
    }
    else
    {
        strncpy(s,buf,len);
        s[len]='\0';
    }
    return len;
}

int Abfrage(char arr[ANZAHL][81])
{
    size_t i=0;
    while (i<ANZAHL)
    {
        if(!halbwegs_sichere_eingabe(arr[i]))
            break;
        else
            ++i;
    }
    return i;
}

char* StringUmdrehen(char string[81])
{
    int i;
    int j=0;
    char *pszstring;
    char *psztemp;
    char stringtemp[81];

    int laenge = strlen(string);

    strcpy(stringtemp, string);
    pszstring=string;
    psztemp=stringtemp;

    for (i = laenge-1; i >= 0; i--)
    {
    *(pszstring+j)=*(psztemp+i);
    j++;
      
    }
    return string;
}

void SortStringAlpha(char AszEingabeStrings[ANZAHL][81],int iAnzahlStrings)
{
   int i=0,j=0, k=0;

   for(i = 0; i < iAnzahlStrings; i++)
   {
      for(j = i + 1; j < iAnzahlStrings; j++)
      {
         if( (strcmp(AszEingabeStrings[i],AszEingabeStrings[j]) > 0) )
         {
            char temp[81];
            strcpy(temp, AszEingabeStrings[i]);
            strcpy(AszEingabeStrings[i], AszEingabeStrings[j]);
            strcpy(AszEingabeStrings[j], temp);
         }
      }


   }
  
      for(i = 0; i < iAnzahlStrings; i++)
      printf("\n%s",AszEingabeStrings[i]);  
}

void ZeigeHilfe()
{
    printf("*********PARAMETER HILFE***********\n");
    printf("-u                 dreht Woerter um\n");
    printf("-l        sortiert nach Wort-Laenge\n");
    printf("-a           sortiert nach Alphabet\n");
    printf("-h              zeigt die Hillfe an\n");
    
}


int main(int arg, char *szString[])
{
    
    char szAbfrage[ANZAHL][81];
    int j=0, iAnzahlStrings=0;
    if(arg > 1)
{
    

    if(strcmp(szString[1],"-u")==0)
    {
        Abfrage(szAbfrage);
        for (j=0;j<ANZAHL&&(strlen(szAbfrage[j])>0);++j)
            printf("\n%s",StringUmdrehen(szAbfrage[j]));
    }
    else if(strcmp(szString[1],"-l")==0)
        printf("Und tschuess");
    

     else if(strcmp(szString[1],"-a")==0)
      {      
         iAnzahlStrings=Abfrage(szAbfrage);  
         SortStringAlpha(szAbfrage, iAnzahlStrings);
      }

     else if(strcmp(szString[1],"-h")==0)
         ZeigeHilfe();

          
        

    else
     ZeigeHilfe();

}
else
   ZeigeHilfe();
    
    
  return 0;
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
043
21.05.2006, 15:07 Uhr
Spacelord
Hoffnungsloser Fall


Aha.....um 14:57 "Guten Morgen"
Deutet auf ein studentisches Lotterleben hin.... Sodom und Gomorrha sozusagen

Gruss Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
044
21.05.2006, 15:41 Uhr
kronos
Quotenfisch
(Operator)



Zitat von Spacelord:
Aha.....um 14:57 "Guten Morgen"
Deutet auf ein studentisches Lotterleben hin.... Sodom und Gomorrha sozusagen

Hm... also, ich komm auch grad aus'm Bett. Bist du sicher, dass sich das nach dem Studium ändert? Werden da die Samstagabende langweiliger und die Betten weniger kuschelig???
--
main($)??<-$<='?'>>2?main($-!!putchar(
(("$;99M?GD??(??/x0d??/a:???;a"+'?'/4)
??($??)+'?'/3-2-1+$%2)??''?')):'?';??>
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
045
21.05.2006, 16:24 Uhr
Spacelord
Hoffnungsloser Fall



Zitat von kronos:
Werden da die Samstagabende langweiliger und die Betten weniger kuschelig???


Wenn du die ganze Woche über um 4-5 aufstehst ändert sich dein Biorythmus fast zwangsweise .
Vielleicht liegt es aber auch daran dass ich alt bin

Gruss Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
046
21.05.2006, 16:56 Uhr
~Stephi
Gast


Also jetzt doch nochmal was zum knobeln:
Meine Unterfkt void SortStringLaenge sortiert zwar was, aber nicht so wie sie soll..Ausnahmsweise. Sieht jemand den Fehler im Algorithmus?


Code:

# include <stdio.h>
# include <string.h>
# define ANZAHL 5

size_t halbwegs_sichere_eingabe(char s[81])
{
    int len=0;
    char buf[1024];
    gets(buf); //gets ist gefaehrlich!
    len=strlen(buf);
    if(len>80)
    {
        strncpy(s,buf,80);
        s[80]='\0';
    }
    else
    {
        strncpy(s,buf,len);
        s[len]='\0';
    }
    return len;
}

int Abfrage(char arr[ANZAHL][81])
{
    size_t i=0;
    while (i<ANZAHL)
    {
        if(!halbwegs_sichere_eingabe(arr[i]))
            break;
        else
            ++i;
    }
    return i;
}

void SortStringLaenge(char AszEingabeStrings [ANZAHL][81], int iAnzahlStrings)
{
int i =0, j=0;

   for(i = 0; i < iAnzahlStrings; i++)
   {
      for(j = i + 1; j < iAnzahlStrings; j++)
      {
         if( (strlen(AszEingabeStrings[i],AszEingabeStrings[j]) > 0) )
         {
            char temp[81];
            strcpy(temp, AszEingabeStrings[i]);
            strcpy(AszEingabeStrings[i], AszEingabeStrings[j]);
            strcpy(AszEingabeStrings[j], temp);
         }
      }


   }
  
      for(i = 0; i < iAnzahlStrings; i++)
      printf("\n%s",AszEingabeStrings[i]);  

    
}




char* StringUmdrehen(char string[81])
{
    int i;
    int j=0;
    char *pszstring;
    char *psztemp;
    char stringtemp[81];

    int laenge = strlen(string);

    strcpy(stringtemp, string);
    pszstring=string;
    psztemp=stringtemp;

    for (i = laenge-1; i >= 0; i--)
    {
    *(pszstring+j)=*(psztemp+i);
    j++;
      
    }
    return string;
}

void SortStringAlpha(char AszEingabeStrings[ANZAHL][81],int iAnzahlStrings)
{
   int i=0,j=0;

   for(i = 0; i < iAnzahlStrings; i++)
   {
      for(j = i + 1; j < iAnzahlStrings; j++)
      {
         if( (strcmp(AszEingabeStrings[i],AszEingabeStrings[j]) > 0) )
         {
            char temp[81];
            strcpy(temp, AszEingabeStrings[i]);
            strcpy(AszEingabeStrings[i], AszEingabeStrings[j]);
            strcpy(AszEingabeStrings[j], temp);
         }
      }


   }
  
      for(i = 0; i < iAnzahlStrings; i++)
      printf("\n%s",AszEingabeStrings[i]);  
}

void ZeigeHilfe()
{
    printf("*********PARAMETER HILFE***********\n");
    printf("-u                 dreht Woerter um\n");
    printf("-l        sortiert nach Wort-Laenge\n");
    printf("-a           sortiert nach Alphabet\n");
    printf("-h              zeigt die Hillfe an\n");
    
}


int main(int arg, char *szString[])
{
    
    char szAbfrage[ANZAHL][81];
    int j=0, iAnzahlStrings=0;
    if(arg > 1)
{
    

    if(strcmp(szString[1],"-u")==0)
    {
        Abfrage(szAbfrage);
        for (j=0;j<ANZAHL&&(strlen(szAbfrage[j])>0);++j)
            printf("\n%s",StringUmdrehen(szAbfrage[j]));
    }
    else if(strcmp(szString[1],"-l")==0)
    {    
    iAnzahlStrings=Abfrage(szAbfrage);
    SortStringLaenge(szAbfrage,iAnzahlStrings);

    }

     else if(strcmp(szString[1],"-a")==0)
      {      
         iAnzahlStrings=Abfrage(szAbfrage);  
         SortStringAlpha(szAbfrage, iAnzahlStrings);
      }

     else if(strcmp(szString[1],"-h")==0)
         ZeigeHilfe();

          
        

    else
     ZeigeHilfe();

}
else
   ZeigeHilfe();
    
    
  return 0;
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
047
21.05.2006, 17:05 Uhr
Karldin Shinowa
Professional Noob


bin zu faul mir die seiten davor durchzulesen. warum verwendest eigentlich nicht die string containerklasse?????
--
Ich will die Welt verbessern, doch Gott gibt mir nicht den Code.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
048
21.05.2006, 17:11 Uhr
~Stephi
Gast


Kann / darf ich laut Aufgabenstellung nicht verwenden.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
049
21.05.2006, 17:14 Uhr
Spacelord
Hoffnungsloser Fall



Zitat von ~Stephi:

Meine Unterfkt void SortStringLaenge sortiert zwar was, aber nicht so wie sie soll..

Da der entsprechende Part syntaktisch einfach nicht korrekt ist habe ich so meine Zweifel dass da irgendwas sortiert wird...

Naja,zum Abschluss:

C++:
void SortStringLaenge(char AszEingabeStrings [ANZAHL][81], int iAnzahlStrings)
{
int i =0, j=0;

   for(i = 0; i < iAnzahlStrings; i++)
   {
      for(j = i + 1; j < iAnzahlStrings; j++)
      {
         if( (strlen(AszEingabeStrings[i]) > strlen(AszEingabeStrings[j]) ) )
         {
            char temp[81];
            strcpy(temp, AszEingabeStrings[i]);
            strcpy(AszEingabeStrings[i], AszEingabeStrings[j]);
            strcpy(AszEingabeStrings[j], temp);
         }
      }
   }
      for(i = 0; i < iAnzahlStrings; i++)
      printf("%s\n",AszEingabeStrings[i]);  
}



Gruss Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] [ 2 ] [ 3 ] [ 4 ] > 5 < [ 6 ] [ 7 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: