Beiträge von Kaliber
-
-
//edit gab es nicht im Dezember irgendwo ein Thread mit einer Mittelsmann Seite Entwicklung?? wo große Worte gespuckt wurden.
-
Gibts da Probleme mit den Compilern oder der Ausfuehrung?
Naja..wenn es der Compiler falsch interpretiert..gibts natürlich Probleme mit der Ausführung

Es kommt halt darauf an, was für einen Compiler du verwendest...wenn du einen C99 Compiler verwendest, dann sollte es da keine Probleme geben.
Dennoch ist dies manchmal ein möglicher Fehlergrund, wenn der Compiler eben falsch eingestellt ist...
-
jedoch wird auch da bei mir der Teil in der Schleife leider nicht geprintet.
Doch wird er...es wird nur nicht schön dargestellt...hier:
Schreib das über die untere for-Loop:
printf("\n\nSortiert:\n");
-
Versuchs doch mal so:
C
Alles anzeigen//Falls du IsNull nicht hast: #define IsNull(%0) (!%[0]||(%0[0]=='\1'&&!%0[1])) //Befehl ocmd:me(playerid, params[]) { if(IsNull(params)) return SendClientMessage(playerid, COLOR_GREY, "[OOC] Befehl: /me [Text]"); new string[144+1], Float:X, Float:Y, Float:Z; GetPlayerPos(playerid, X, Y, Z),GetPlayerName(playerid, string, MAX_PLAYER_NAME); format(string, sizeof(string), "* %s %s *", string, params); foreach(Player, i) { if(IsPlayerInRangeOfPoint(i, 6.5, X, Y, Z)) SendClientMessage(i, COLOR_ME, string); } return 1; } -
Alles anzeigen
int loop2;
for(loop2=0;loop2<size;loop2++)
{
printf("%d",array[loop2]);
}while(loop2<size)
{
printf("%d",array[loop2]);
loop2++;
}Also als 1. du resettest nicht die Variable loop2 (also setzt diese nicht wieder auf 0 vor der while Schleife
2. Wieso nutzt du da eine while-Schleife? Die Aufgabe ist perfekt für eine for-Schleife?
3. Wieso nutzt du da überhaupt noch eine Schleife? Schließlich steht das 1:1 über der While - Schleife..du hast da 2x den selben Code...
Und du verwendest wieder C99 Stil...lass doch mal Variablen-Deklarationen aus den Schleifen

Hier, schreib es so:
C
Alles anzeigenint main() { int size=0,loop,qrand; int *array; printf("Array-Groesse eingeben: "); scanf("%d", &size); // Allocate memory array = (int *) malloc(size * sizeof(int)); if(array != NULL) { printf("\nSpeicher ist reserviert\n"); printf("\nFilling array.\n"); for(loop=0;loop<size;loop++) { qrand=rand() %20; array[loop]=qrand; printf("%d",qrand); } } else printf("\nKein freier Speicher vorhanden.\n"); heapsort(array,size); for(loop=0;loop<size;loop++) { printf("%d",array[loop]); } printf("\nSpeicher ist freigegeben\n"); free(array); return 0; } -
DIALOG_STYLE_INPUT
Nein

Das hat etwas damit zu tun, dass du den String nicht richtig formatierst....
format(string,sizeof(string),"{EB0000}Der Fahrpreis muss zwischen 1$ und 1000$ liegen.\n");
format(string,sizeof(string),"%s{FFFFFF}Um als Taxifahrer zu arbeiten, gib hier den Fahrpreis ein. Du erhälst ihn alle 15 Sekunden.", string); -
Woran kann das liegen? Ich weiss aktuell nicht wo der Fehler liegt
Also bei mir wird es fehlerfrei ausgeführt.
Eventuell mal keinen C99 Stil verwenden
C
Alles anzeigenint main () { int zf,r,zn; printf("\n Filling array with %lu elements \n",sizeof(heaparray)); for(zf=0;zf<sizeof(heaparray);zf++) { r = rand() % 20; heaparray[zf]=r; printf("%d",r); } printf("\n\n "); printf("\nSorting..\n"); printf("\n\n "); if(sizeof(heaparray) != sizeof(heaparray)) return printf("Something went wrong during filling"); heapsort(heaparray,sizeof heaparray); printf("\n\n "); for(zn=0;zn<sizeof(heaparray);zn++) { printf("%d",heaparray[zn]); } return 0; } -
Naja, hier gäbe es 2 gute Möglichkeiten.
1. Du erstellst ein 2D-Array...1D = Kills...2D = ID und dann sortierst das nach Kills und hast die ID

2. Du durchsuchst einfach nur das Array:
C
Alles anzeigen//Initialisierung #define UNDEFINED -1 new killArray[MAX_PLAYERS] = {UNDEFINED, ...}; main() { //Test-Daten killArray[0] = 5; killArray[5] = 9; killArray[7] = 4; //Eigentliche Prozedur new playerid,kills; findMostKills(killArray,playerid,kills); printf("Spieler mit meisten Kills: %d (%d)",playerid,kills); //Out->"Spieler mit meisten Kills: 5 (9)" } //Such Funktion stock findMostKills(const arr[],&playerid,&kills,const size = sizeof(arr)) { playerid=0, kills=arr[0]; for(new i=1; i<size; i++) if(arr[i] > kills) kills=arr[i],playerid=i; } -
Map/HUD wie bekomme ich die schwarz ? Bzw. Kann man den HUD(Nur die kleine Karte) irgendwie ausblenden?
Entweder über den SpecateModus, dadurch verschwindet die HUD oder ein schwarzes TextDraw / Sprite drüber (gibt ein rundes sprite)

Vielleicht ist ein Fehler im Code?
Nein. Hier mal ein Zitat, was das ganz gut erklärt:
Im Durchschnitt ist Heapsort nur dann schneller als Quicksort, wenn Vergleiche auf den zu sortierenden Daten sehr aufwendig sind und gleichzeitig eine für Quicksort ungünstige Datenanordnung besteht (z. B. viele gleiche Elemente). In der Praxis ist bei unsortierten oder teilweise vorsortierten Daten Quicksort oder Introsort um einen konstanten Faktor (2 bis 5) schneller als Heapsort.
-
-
Da gibt es noch andere Möglichkeiten

Zum Beispiel, wenn eine Zeile zu lang ist kann auch der Compiler abkratzen, das leider ein kleiner Bug vom Compiler...
Es kann auch am Kompatibilitätsmodus von Pawno liegen, eventuell den mal auf Windows 7 stellen

Oder du hast eine ( / ) vergessen...oder die " xD
Es kann echt extrem viele Gründe haben

-
Da stellt sich mir jedoch die Frage: Inwiefern ist das mit sscanf besser als alles mit strtok zu machen? Ist das schneller und/oder ressourcensparender?
Also mal zu dir...sscanf ist schneller und hat viel mehr Möglichkeiten als strtok.
Zum anderen ist ocmd/zcmd/ycmd oder what ever viel schneller als strcmp (&dcmd da dcmd nur ein Makro von strcmp ist).
Mal zu Erklärung...bei strcmp sieht das z.B. so aus:
new cmd="/hallo";if(cmd == "/test")
if(cmd == "/hust")
if(cmd == "/admin")
if(cmd == "/hallo")
Das heißt, er muss von oben an alle cmds prüfen bis er beim richtigen ist..und wenn /hallo ganz unten von 500 Commands steht..muss er vorher 500 andere prüfen..und das kann schon ein weilchen dauern...
Bei ocmd/zcmd/ycmd springt er direkt an die Adresse wo der Command startet..und das ist natürlich wesentlich schneller, egal wie viele commands man hat
Aber wieso ?
Jaa das ein Rundungsfehler

Der hat nicht 0.04 auf dem Schirm, sondern 0.039999999

Also mach einfach sowas:
#define FLOAT_ERROR 0.00000001
format(string,sizeof(string),"Du hast %0.2f€ auf dein Konto eingezahlt.",floatstr(inputtext)+FLOAT_ERROR);
-
Kann man dann auch z.B. mit arrays machen? array1={0101} XOR array2={1011} = array3={1110} ? Also wie kann man sowas in PAWN realisieren?
Ja, das geht sehr gut in Pawn

Mit dem PI, du musst %f nutzen

Ich empfehle dir übrigens ein MAKRO

#define PI 3.14159265359
//Nutzung:
printf("Pi: %f",PI);PS: Nutze ocmd/zcmd (kein dcmd) ist schneller und schau dir die basics von der sscanf Anwendung an

-
ein richtiges Garagen Tor
Probier mal 9093

-
Hab den Code mal so getestet, ich bekomme da keine Fehler

Hast du eventuell in einem anderen Enum / Globalen-Variable schon den Namen itemWeight vewendet?

-
Zeig mal wie du Items deklariert hast und wie das enum dazu aussieht

-
IV. Generell verbotene Inhalte
- Rechtsfragen, und Rechtsberatung, Beratung zu Krankheiten oder Verletzungen sowie seelischen Problemen sind verboten.
-
Dir fehlt das Plugin: http://forum.sa-mp.com/showthread.php?t=92246
-