2015-12-20 2 views
0

Это программа, над которой я работаю, для моего школьного проекта. Я получаю сообщение об ошибке, которое я действительно не понимаю. Я использую Bloodshed Dev- C++ 4.9.9.2 и ошибка, которую я получаю, это «В функции» voidCaesar() «слишком много аргументов для функции« int esteLitera() »в этот момент в файле» (ссылаясь на строку 55).слишком много аргументов error в dev-C++

#include<iostream> 
#include<conio.h> 
#include<string.h> 
#include<stdlib.h> 
#include<math.h> 
#include<ctype.h> 
#include<stdio.h> 
using namespace std; 

void afisareMeniu(); 
void criptCaesar(); 
void criptMansfield(); 
void decriptTranspozitie(); 
int esteLitera(char); 

#define CRIPTCAESAR 1 
#define CRIPTMANSFIELD 2 
#define DECRIPTTRANSPOZITIE 3 
#define IESIRE 4 
int main() 
{ 
int nrOptiune; 
for(;;){ 
     afisareMeniu(); 
     std::cout<<endl<<"\n\n\n"; 
     cin>>nrOptiune; 
     if(nrOptiune==CRIPTCAESAR)criptCaesar(); 
     if(nrOptiune==CRIPTMANSFIELD)criptMansfield(); 
     if(nrOptiune==DECRIPTTRANSPOZITIE)decriptTranspozitie(); 
     if(nrOptiune==IESIRE)break; 
     }//for 
     return 0; 
}//int main 
void afisareMeniu() 
{ 
system("cls"); 
cout<<"\n Proiect Programarea Calculatoarelor"<<endl<<"Calculatoare 1.1.1"; 
cout<<"\n\n 1.Criptare Caesar"<<endl; 
cout<<"\n\n 2.Criptare Mansfield"<<endl; 
cout<<"\n\n 3.Decriptare prin transpozitie cu 2 jumatati"<<endl; 
cout<<"\n\n 4.Iesire"<<endl; 
} 
void criptCaesar() 
{ 
system("cls"); 
cout<<"\n\n Ati ales criptare Caesar"<<endl; 
char s1[100]; 
char s2[100]; 
cout<<"\n\n Introduceti textul pentru criptare"<<endl; 
cin.get(); 
cin.get(s1,100); 
strupr(s1); 
int L=strlen(s1); 
int i; 
for(i=0;i<L;i++) 
if(esteLitera(s1[i]==1)){ 
       if(s1[i]=='X')s2[i]='A'; 
       else if(s1[i]=='Y')s2[i]='B'; 
       else if(s1[i]=='Z')s2[i]='C'; 
       else s2[i]=s1[i]+3;} 
else s2[i]=s1[i]; 
cout<<"Textul criptat este: "<<s2<<endl; 
cout<<"Apasati o tasta pentru a reveni la meniu."; 
getch(); 
} 

void criptMansfield() 
{ 
system("cls"); 
int i,j,k,x=0; 
char rez[200],c[100]; 
char a[5]={'A','E','I','O','U'}; 
char b[5]={'A','E','I','O','U'}; 
char p[5][5]={'A','B','C','D','E', 
       'F','G','H','I','J', 
       'K','L','M','N','O', 
       'P','R','S','T','U', 
       'V','W','X','Y','Z' } ; 

    cout<<"  "<<"Criptare Mansfield"<<endl<<endl; 
    cout<<"Introduceti textul pentru criptare:"; 
    cin.get(); 
    cin.get(c,100); 
    strupr(c); 
    for (k=0;k<strlen(c);k++) 
    if ((c[k]>='A')&&(c[k]<='Z')) 
    for (i=0;i<=4;i++) 
    for (j=0;j<=4;j++) 
     if (c[k]==p[i][j]){rez[x]=a[i]; 
          x++; 
          rez[x]=b[j]; 
          x++;} 
     else; 
     else{rez[x]=c[k]; 
      x++;} 

    rez[x]=0; 
    cout<<rez; 
    getch(); 
} 

void decriptTranspozitie() 
{ 
system("cls"); 
char s[101],x[51],y[51]; 
int i,j,optiune; 
cout<<"Decriptare transpozitie cu doua jumatati"<<endl<<endl; 
cout<<"Dati textul pentru decriptat:"; 
cin.get(); 
cin.get(s,100); 
strupr(s); 
    if(strlen(s)%2==0){ 
    for(i=0;i<strlen(s);i+=2) 
     cout<<s[i]; 
    for(j=1;j<strlen(s);j+=2) 
     cout<<s[j]; 
        } 

else if(strlen(s)%2!=0){ 
for(i=0;i<strlen(s);i+=2) 
    cout<<s[i]; 
    for(j=1;j<strlen(s);j+=2) 
     cout<<s[j]; 
    cout<<s[j];  } 
    cout<<"\n\n\nPentru a reveni la meniu apasati tasta 1!\n"; 
    cin>>optiune; 
    switch (optiune) 
{case (1) : { afisareMeniu(); break; } } 
} 
int esteLitera(char x) 
{ 
if((x>='A')&&(x<='Z')) 
return 1; 
else return 0; 
} 

ответ

1

Ваше заявление esteLitera неверно. Вы объявляете эту функцию как

int esteLitera(); 

Затем вы пытаетесь называть это аргументом. Измените объявление в

int esteLitera(char); 

Кроме того, you're вызова esteLitera с логическим аргументом, а не полукокса:

if(esteLitera(s1[i]==1)){ 
+0

Я получил программу для работы с использованием ваших advice.Thanks. – hyddenblue

Смежные вопросы