php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > ASP, PERL, CGI, C und alles andere
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


ASP, PERL, CGI, C und alles andere Wolle ma net so sein. Obwohl Perl, ASP, C und TCL zu den minderwertigen Internet-Skriptsprachen zählen, dürfen ab sofort hierzu auch Fragen gestellt werden. ;)

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 01-05-2010, 18:25
Jessy_87
 Registrierter Benutzer
Links : Onlinestatus : Jessy_87 ist offline
Registriert seit: May 2010
Beiträge: 9
Jessy_87 befindet sich auf einem aufstrebenden Ast
Standard Sortieren von Zeichenketten (Array)

Hallo ihr lieben,

ich versuche schon seit Stunden mein kleines Script fertig zu bekommen, aber scheitere am richtigen Einsatz der for-schleife

die Zeichenketten sind in a[i] gespeichert (i steht für die anzahl der zk, kleine zählvariable). die zeichenketten sollen lexikografisch sortiert werden.

der pseudocode sieht bisher folgerndermaßen aus:

PHP-Code:
for(j=0<= i-1j++) {
 
strcmp(a[erstes element], a[nächstes element]);

aber wie spreche ich in der schleife immer das erste element und das folgende des arrays an, vergleiche die beiden und tausche gegebenfalls?
also bei
j=0 --> a[0] und a[1];
j=1 --> a[1] und a[2];

hier mal nen kleines beispiel, was rauskommen sollte:

Eingabe: --> wird zu:
Code:
aab                    aaa
aaa                    aab
adc                    adc
czw                    czw
würde mich über ne kleine hilfestellung sehr freuen

edit: mir fällt grad ein, das folgende variante laufen sollte:

for(j=0; j <= i-1; j++) {
strcmp(a[0+j], a[1+j]);
}

Geändert von Jessy_87 (01-05-2010 um 18:29 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 01-05-2010, 18:27
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.576
h3ll befindet sich auf einem aufstrebenden Ast
Standard

PHP: sort - Manual
Mit Zitat antworten
  #3 (permalink)  
Alt 01-05-2010, 18:34
Jessy_87
 Registrierter Benutzer
Links : Onlinestatus : Jessy_87 ist offline
Registriert seit: May 2010
Beiträge: 9
Jessy_87 befindet sich auf einem aufstrebenden Ast
Standard

das problem ist dabei, dass ich nicht in php schreibe, sondern in C, sich aber die grundlegende Syntax nicht unterscheidet...
Mit Zitat antworten
  #4 (permalink)  
Alt 01-05-2010, 18:48
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.576
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Jessy_87 Beitrag anzeigen
das problem ist dabei, dass ich nicht in php schreibe, sondern in C
Dann bist du hier im Forum wohl ein wenig falsch.
Mit Zitat antworten
  #5 (permalink)  
Alt 01-05-2010, 18:51
Jessy_87
 Registrierter Benutzer
Links : Onlinestatus : Jessy_87 ist offline
Registriert seit: May 2010
Beiträge: 9
Jessy_87 befindet sich auf einem aufstrebenden Ast
Standard

naja im c-forum ist recht wenig los und wie schon gesagt, die syntax ist letztlich die gleiche

also wie würde es ohne die sort()-fkt gehen?
Mit Zitat antworten
  #6 (permalink)  
Alt 01-05-2010, 18:54
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.576
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Jessy_87 Beitrag anzeigen
naja im c-forum ist recht wenig los und wie schon gesagt, die syntax ist letztlich die gleiche

also wie würde es ohne die sort()-fkt gehen?
Du kannst dir ja den Source-Code von sort() anschauen. PHP ist auch nur in C programmiert.
Mit Zitat antworten
  #7 (permalink)  
Alt 01-05-2010, 19:03
Jessy_87
 Registrierter Benutzer
Links : Onlinestatus : Jessy_87 ist offline
Registriert seit: May 2010
Beiträge: 9
Jessy_87 befindet sich auf einem aufstrebenden Ast
Standard

ehm....

rein theoretisch müsste der folgende code mit einer hilfsvariablen doch richtig sein, oder?

Code:
for (j=0; j<=i-1; j++) {
            if (strcmp(a[0+j], a[1+j]) == 1) {       // zweites element ist größer als erstes
               char tmp = a[0+j];
               a[0+j] = a[1+j];
               a[1+j] = tmp;
            }
        }
Mit Zitat antworten
  #8 (permalink)  
Alt 01-05-2010, 19:30
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.721
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Also wenn es hier um C geht, ist das definitiv das falsche Forum. Daher * verschieb *

Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #9 (permalink)  
Alt 01-05-2010, 20:06
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

C selbst hat keine eingebaute Sortierfunktion. Aber die Standard-Library hat eine. Der übergibst du einen Zeiger auf deine Vergleichsfunktion. Insofern ist die Vorgehensweise tatsächlich so ähnlich (aber nicht gleich) wie in PHP.

Mit einer For-Schleife bekommst du jedenfalls in beiden nichts sortiert. Mit zwei verschachtelten schon. Dieses Verfahren nennt sich Bubblesort.
Mit Zitat antworten
  #10 (permalink)  
Alt 01-05-2010, 20:24
Jessy_87
 Registrierter Benutzer
Links : Onlinestatus : Jessy_87 ist offline
Registriert seit: May 2010
Beiträge: 9
Jessy_87 befindet sich auf einem aufstrebenden Ast
Standard

habe es mittlerweile raus...
und ja ich hab zwei verschaltelte for-schleifen
Mit Zitat antworten
  #11 (permalink)  
Alt 01-05-2010, 21:15
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Zitat:
Zitat von Jessy_87 Beitrag anzeigen
habe es mittlerweile raus...
und ja ich hab zwei verschaltelte for-schleifen
Quellcode oder nie passiert.

Mit nur einer for-Schleife kann man ein C-Array nicht sortieren. Und strcmp() eignet sich nicht zur lexikographischen Sortierung -- es vergleicht "ASCII-betisch".
Mit Zitat antworten
  #12 (permalink)  
Alt 01-05-2010, 21:36
Jessy_87
 Registrierter Benutzer
Links : Onlinestatus : Jessy_87 ist offline
Registriert seit: May 2010
Beiträge: 9
Jessy_87 befindet sich auf einem aufstrebenden Ast
Standard

ok, das versteh ich nicht so recht
bei mir funktioniert es einwandfrei...

PHP-Code:
void sortieren(){
   for (
k=0i-1k++) {                        
        for (
j=0j<i-1j++) { 
            if (
strcmp(a[j], a[j+1]) == 1) {       
               
char *tmp a[j];
               
a[j] = a[j+1];
               
a[j+1] = tmp;
            }
        }
   }

davon abgesehen, dass bubble-sort echt nen blöder algorithmus ist (laufzeit)...

Geändert von Jessy_87 (01-05-2010 um 21:39 Uhr)
Mit Zitat antworten
  #13 (permalink)  
Alt 02-05-2010, 18:30
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Zitat:
Zitat von Jessy_87 Beitrag anzeigen
...
bei mir funktioniert es einwandfrei...
Erlaubst du mir, dies zu bezweifeln?

Zitat:
PHP-Code:
void sortieren(){
   for (
k=0i-1k++) {                        
        for (
j=0j<i-1j++) { 
            if (
strcmp(a[j], a[j+1]) == 1) {       
               
char *tmp a[j];
               
a[j] = a[j+1];
               
a[j+1] = tmp;
            }
        }
   }

Meine C-Kenntnisse sind nicht sehr gut, aber irgendwas sagt mir, dass das Aus-dem-Hut-Zaubern bspw. der Variablen a einen ordentlich konfigurierten Compiler dazu veranlassen dürfte, mindestens eine Warnung auszuspucken. Das Gleiche gilt für "k < i - 1" ohne vorherige Deklaration und Initialisierung von i. Und strcmp() liefert bei Ungleichheit durchaus auch andere Werte als nur 1.

Da ich keine Lust auf Warnungen und Fehlermeldungen eines C-Compilers hatte, hab ich das mal in PHP nachgebaut:

PHP-Code:
function sortieren($a) {
    for (
$k 0$k $i 1$k++) {
        for (
$j 0$j $i 1$j++) {
            if (
strcmp($a[$j], $a[j+1]) === 1) {
                
$tmp $a[$j];
                
$a[$j] = $a[$j 1];
                
$a[1] = $tmp;
            }
        }

    }
    return 
$a;
}

// dein Ausgangsarray
$a preg_split('/\s+/''
aab                    aaa
aaa                    aab
adc                    adc
czw                    czw
'
, -1PREG_SPLIT_NO_EMPTY);

// die Funktion aufrufen
$x sortieren($a);

//
var_dump($x); 
Bei Ausführung dieses Scripts wird ein nicht initialisiertes $i bemäkelt.

Außerdem ist das Ergebnis-Array in der gleichen Reihenfolge sortiert, wie das Ausgangs-Array ...

Einwandfreies Funktionieren stelle ich mir etwas anders vor ...

Zitat:
davon abgesehen, dass bubble-sort echt nen blöder algorithmus ist (laufzeit)...
Seine Laufzeit dürfte der deines Ansatzes gleich kommen -- zwei verschachtelte For-Schleifen über ein Array von Zeichenketten ...
Warum benutzt du nicht, wie von mir vorgeschlagen, die in der Standard-Lib eingebaute Sortierfunktion?
Mit Zitat antworten
  #14 (permalink)  
Alt 02-05-2010, 18:53
Jessy_87
 Registrierter Benutzer
Links : Onlinestatus : Jessy_87 ist offline
Registriert seit: May 2010
Beiträge: 9
Jessy_87 befindet sich auf einem aufstrebenden Ast
Standard

alle benötigten variablen wurden vor der main()-fkt deklariert und initialisiert...
dein quellcode in php ist doch genau der gleiche wie auch meiner
nur die qsort-fkt sollte ich mir mal anschauen...
Mit Zitat antworten
  #15 (permalink)  
Alt 02-05-2010, 22:56
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Zitat:
Zitat von Jessy_87 Beitrag anzeigen
alle benötigten variablen wurden vor der main()-fkt deklariert und initialisiert...
Globale Variablen ...?
*wegrenn*
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Array sortieren und Zuordnung zu einem weiteren Array erhalten webdino PHP Developer Forum 6 17-02-2010 15:19
Array durch anderes Array sortieren Johny PHP Developer Forum 3 08-07-2006 01:06
Array sortieren ... nicker PHP Developer Forum 14 16-07-2004 23:55
array sortieren, gleich wie ein anderes array Viper1985 PHP Developer Forum 5 06-11-2003 14:38
Array sortieren Robson PHP Developer Forum 5 22-05-2002 16:59

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 03:04 Uhr.