2015-03-27 4 views
5

Es von mir will, um die folgende Funktion implementieren:Fehler: Streu ' 240' in Programm

void calc ( double* a, double* b, int r, int c, double (*f) (double) ) 

Parameter a, r, c und f eingegeben werden und b ausgegeben wird. "A" und "b" sind 2d Matrizen mit "r" Zeilen und "c" Spalten. „F“ eine Funktion ist, die Zeiger auf jede Funktion des folgenden Typs zeigen kann:

double function‐name ( double x ) {  
    …  
}  

Funktion calc in Matrix ein jedes Element umwandelt, das heißt, aij, bij, um = f (aij) in einer Matrix b.


ich die calc Funktion wie folgt implementieren, und es in einem Programm setzen, es zu testen:

#include <stdlib.h> 
#include <iostream> 

using namespace std; 

double f1(double x){ 
    return x * 1.7; 
} 

void calc ( double* a, double* b, int r, int c, double (*f) (double) )  
{ 
    double input; 
    double output; 

    for(int i=0;i<r*c;i++) 
    { 
     input=a[i]; 
     output=(*f)(input); 
     b[i]=output; 
    } 
} 

int main() 
{ 
    //input array: 
    int r=3; 
    int c=4; 
    double* a = new double[r*c]; 
    double* b = new double[r*c]; 

    //fill "a" with test data 
    //... 

    for (int i=0;i<r*c;i++) 
    { 
     a[i]=i; 
    } 


    //transform a to b 
    calc (a, b, r, c, f1); 

    //print to test if the results are OK 
    //... 

    for (int i=0;i<r*c;i++) 
    { 
     b[i]=i; 
    } 

    return 0; 
} 

Das Problem ist, dass ich es nicht zusammenstellen können. Dies ist die Ausgabe von DEVC++, wenn ich auf Compile klicken und Ausführen Taste:

compilation errors referring to invalid characters

Was ist los?

Ich freue mich über jeden Kommentar, um die Implementierung effizienter zu machen.

+10

'\ 240' ist nicht brechender Raum in der iso8859-1 Kodierung, also ist das Geheimnis, wie diese ganz speziellen Charaktere dort hineingekommen sind. Hast du den Code in Word geschrieben oder so? – Wintermute

+0

@Wintermute hehe Ich habe tatsächlich überprüft, dass das OP nicht dasselbe war [Person, die ich vor 16m traf] (http://StackOverflow.com/questions/29311287/bad-access-either-in-stdmap-or-stdstring -destructor # comment46816709_29311287) :) – sehe

+1

Der Code kompiliert für mich gut (g ++ -o test.exe test.cpp) ohne irgendwelche Änderungen. Hast du die Linie 10 überprüft? – jensa

Antwort

3

Es scheint, dass Sie illegale Zeichen in Ihrer Quelle haben. Ich kann nicht herausfinden, was Charakter \240 sein soll, aber anscheinend ist es um den Start der Linie 10

Im Code, den Sie geschrieben, wird das Problem nicht existiert: Live On Coliru

+0

Sie haben Recht. Ich überschreibe die 10. Zeile (Die Zeile, auf die sich Fehler beziehen) und das Problem ist gelöst. Vielen Dank. BTW Ist die Implementierung korrekt? (Wie es sein wollte) – Abraham

+0

Versucht zu sagen "Ich weiß nicht. Wie richtig wollte es sein?". Schauen Sie sich – sehe

+2

Sieht gut aus, aber ziemlich plump und fehleranfällig, ich würde ** mindestens ** [diese (Live-Demo)] (http://coliru.stacked-crooked.com/a/58500d4fb13d356d) oder sogar bevorzugen besser [C++ Stil] (http://coliru.stacked-crooked.com/a/e6df7890349cbe11) oder sogar [warum einen Zielvektor verwenden] (http://coliru.stacked-crooked.com/a/2e3cb4aa7c4261f1) – sehe

3

Der /240 Fehler ist durch illegale Räume vor jedem Code der Zeile.

z.

printf("Anything");

statt

 printf("Anything");
Do

Dieser Fehler üblich ist, wenn Sie den Code in dem Compiler kopiert und eingefügt.

0

Ich sah das gleiche Problem aufgrund illegaler Leerzeichen in meinem gesamten Code.

Ich habe es durch Auswahl eines dieser Leerzeichen behoben und find and replace verwenden, um alle Übereinstimmungen durch normale Leerzeichen zu ersetzen.

1

Ich habe den gleichen Fehler, wenn ich nur die komplette Zeile kopiert, aber wenn ich den Code neu schreiben, d. H. Anstelle von Copy-Paste, vollständig schreiben dann war der Fehler nicht mehr vorhanden.

Fazit: Es könnte einige unakzeptable Wörter in die Sprache kopiert werden, die zu diesem Fehler führen.

2

Ihr Programm enthält ungültige/unsichtbare Zeichen. Wahrscheinlich hätten Sie diese unsichtbaren Zeichen beim Kopieren und Verarbeiten von Code von einer anderen Website oder manchmal auch von einem Dokument übernommen.Das Kopieren des Codes von der Site in ein anderes Textdokument und das Kopieren und Einfügen in den Code-Editor funktioniert zwar, aber je nachdem, wie lange der Code ist, sollten Sie ihn wortwörtlich eingeben.

3

Wie in einer früheren Antwort erwähnt, kommt dies in der Regel beim Kompilieren von kopiertem Code. Wenn Sie eine Bash-Shell haben, funktioniert der folgende Befehl im Allgemeinen:

iconv -f utf-8 -t ascii//translit input.c > output.c 
+0

Dies sollte die Antwort sein, @Abraham, da es nicht nur den Grund erklärt, sondern auch ** die Lösung ** gibt. Du hast meinen Tag gerettet, sudhakar! – xpt

-1

LÖSUNG: DASS Codezeile DELETE [* WENN SIE ES AUS EINEM ANDEREN QUELLE Dokument kopiertes] und geben Sie ES SICH.

Fehler: stray '\ 240' in Programm ist einfach eine Zeichencodierungsfehlermeldung.

Aus meiner Erfahrung ist es nur eine Frage der Zeichencodierung. Wenn Sie beispielsweise einen Codeabschnitt von einer Webseite kopieren oder ihn zuerst in einem Texteditor schreiben, bevor Sie ihn in eine IDE kopieren und einfügen, kann er mit der Zeichencodierung des Quelldokuments oder des Editors geliefert werden.

+0

Dies wurde bereits beantwortet - den ganzen Weg zurück in 2015. –

+1

Also wirklich @DerekBrown Ich will nicht kleinlich oder unhöflich sein. Aber warum werden Sie mich dafür stimmen, dass Sie nur etwas klarstellen, was bereits beantwortet wurde? Sah es so aus, als hätte ich die Antwort von dir oder von irgendwem kopiert? Warum können Sie nicht einfach die Tatsache schätzen, dass jemand hilft, ein Forum aufzubauen, für das andere nützlich sein werden? Alles rächt sich irgendwann. Erinnere dich daran! – rocksyne