web-dev-qa-db-fra.com

Erreur: stray '\ 240' dans le programme

Il est demandé à moi d'implémenter la fonction suivante:

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

Les paramètres a, r, c et f sont entrés et b est restitués. “A” et “b” sont des matrices 2d avec “r” lignes et “c” Colonnes. "F" est un pointeur de fonction qui peut pointer sur n'importe quelle fonction du type suivant:

double function‐name ( double x ) { 
    … 
} 

La fonction calc convertit chaque élément de la matrice a, c’est-à-dire aij, en bij = f (aij) dans la matrice b.


J'implémente la fonction calc comme suit et la mets dans un programme pour la tester:

#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;
}

Le problème est que je ne peux pas le compiler. Voici le résultat de DevC++ lorsque je clique sur le bouton Compile and Execute:

 compilation errors referring to invalid characters

Qu'est-ce qui ne va pas?

J'apprécie tout commentaire visant à rendre la mise en œuvre plus efficace.

6
Abraham

Il semble que vous ayez des caractères illégaux dans votre source. Je ne peux pas comprendre quel caractère \240 devrait être, mais apparemment, c'est au début de la ligne 10

Dans le code que vous avez posté, le problème n'existe pas: Live On Coliru

4
sehe

Comme mentionné dans une réponse précédente, cela se produit généralement lors de la compilation du code copié par copie. Si vous avez un shell bash, la commande suivante fonctionne généralement:

iconv -f utf-8 -t ascii//translit input.c > output.c
5
the sudhakar

L'erreur /240

au lieu de

  printf ("n'importe quoi");

Cette erreur est courante lorsque vous avez copié et collé le code dans l'EDI.

4
Vishesh Gautam

Votre programme contient des caractères non valides/invisibles. Vous auriez probablement capté ces caractères invisibles lorsque vous copiez et collez du code provenant d'un autre site Web ou parfois d'un document. Copier le code du site dans un autre document texte, puis le copier-coller dans votre éditeur de code peut donner des résultats, mais en fonction de la longueur de votre code, vous devriez simplement le saisir en utilisant Word pour Word. 

2
Abraham Solomon

J'ai eu la même erreur quand je viens de copier la ligne complète, mais quand je réécris le code, c'est-à-dire au lieu de copier-coller, en l'écrivant complètement, l'erreur n'était plus présente.

Conclusion: Il pourrait y avoir des mots inacceptables dans la langue copiée, ce qui donnerait lieu à cette erreur.

1
Ajay

J'ai rencontré le même problème en raison d'espaces illégaux dans tout mon code.

Je l'ai corrigé en sélectionnant l'un de ces espaces et en utilisant find and replace pour remplacer toutes les correspondances par des espaces normaux.

0
Simon van Eeden