Fehlersuche



  • hi leute!

    in folgendem unterprogramm von mir finde ich den fehler nicht( er ist bei der sortierung)

    der converter meldet immer: Lvalue required....

    was mache ich da falsch?

    bitte helft mir...

    void liste(int points,namearray name)
    {
    
    	fstream f;
    	f.open("test.txt", ios::app);
    	f <<endl<<points<<"   		"<<name;
    	f.close();
    	clrscr();
    
    	FILE *datei;
    	int i=1,j,z1=0,z2=0,z3=0,z4=0,n;
    	char cText[100][255]={" "},cHilf[255]={" "};
    
    	datei=fopen("test.txt","r");
    
    	do
    	 {
    		*fgets(cText[i], 253, datei);
    
    		for(j=0;j<1;j++)
    		{		
    			if(cText[i][1]==' ')
    			{
    				z1=cText[i][0];
    				cText[i][90]=z1;
    				break;
    			}
    			if(cText[i][2]==' ')
    			{
    				z1=cText[i][1];
    				z2=cText[i][0];
    				cText[i][90]=z1+z2*10;
    				break;
    			}
    			if(cText[i][3]==' ')
    			{
    				z1=cText[i][2];
    				z2=cText[i][1];
    				z3=cText[i][0];
    				cText[i][90]=z1+z2*10+z3*100;
    				break;
    			}
    			if(cText[i][4]==' ')
    			{
    				z1=cText[i][3];
    				z2=cText[i][2];
    				z3=cText[i][1];
    				z4=cText[i][0];
    				cText[i][90]=z1+z2*10+z3*100+z4*1000;
    				break;
    			}
    			cText[i][90]=10000;
    
    		}
    
    		i++;	
    	 }
    	while(!feof(datei));
    
    	fclose(datei);
    
    for(n=2;n<12;n++)
        {
        if(cText[n-1][90] > cText[n][90])
          {
          cHilf=cText[n-1];
          cText[n-1]=cText[n];
          cText[n]=cHilf;
          n=1;
          }
    }
    


  • hier irgentwo...

    for(n=2;n<12;n++) 
        { 
        if(cText[n-1][90] > cText[n][90]) 
          { 
          cHilf=cText[n-1]; 
          cText[n-1]=cText[n]; 
          cText[n]=cHilf; 
          n=1; 
          }
    


  • der converter meldet immer: Lvalue required....
    was mache ich da falsch?

    Mit "converter" meinst du wohl Compiler?
    Der gibt doch sicher auch die Zeilennummer mit aus, und wir sollen für dich diese Zeile nochmals rausfinden?



  • cHilf=cText[n-1];
    cText[n-1]=cText[n];
    cText[n]=cHilf;

    in all den zeilen einmal Lvalue required



  • cHilf und cText[] sind Characterarrays, welche sich nicht einfach zu zuweisen lassen (in anderen Sprachen mag das funktionieren). Dazu gibt es Stringfunktionen, z.B. memcpy/strncpy.

    Außerdem klappt dein ganzer Ansatz nicht, cText[i][90] ist vom Typ char mit einem Wertebereich -128..127 und dahinein schreibst du Werte > 255.
    Deine mühsam ermittelten Werte in cText[i][90] überschreibst du jedesmal abschließend mit 10000, was wohl nicht beabsichtigt ist.

    In der For-Schleife setzt du die Laufvariable neu, dies ist unschöner Stil.

    Soweit ich den Code verstanden habe, willst du eine Datei mit 1 Integer pro Zeile nach ihrem Wert sortieren, dafür gibt es aber schon reichlich C-Möglichkeiten, zB

    sscanf(zeile,"%d",&integerarray[i])
    

    o.ä. mit anschließendem qsort.


Anmelden zum Antworten