2015-12-06 44 views
2

请帮助我需要阻止传入的字母数和负数 的错误处理或东西在这里 是代码我怎样才能错误处理字母和负数?

{ 
printf("\nEnter number of Processes:"); 
scanf("%d", &n); 
for(i=0;i<n;i++) 


{ 
    printf("\nEnter Process ID %d :",i+1); 
    scanf("%d", &process[i]); 
    printf("\nEnter Process Time %d:",i+1); 
    scanf("%d",&ptime[i]); 
} 

for(i=0;i<n-1;i++) 
{ 
    for(j=i+1;j<n;j++) 
    { 
     if(ptime[i]>ptime[j]) 
     { 
      temp = ptime[i]; 
      ptime[i] = ptime[j]; 
      ptime[j] = temp; 
      ptemp = process[i]; 
      process[i] = process[j]; 
      process[j] = ptemp; 
     } 
    } 
} 
    wtime[0]=0; 
for(i=1;i<n;i++) 
{ 
    wtime[i]=wtime[i-1]+ptime[i-1]; 
    total=total+wtime[i]; 
} 
avg=(float)total/n; 
printf("\nProcess ID\t Process TIME\t Waiting TIME\n"); 
for(i=0;i<n;i++) 
    printf(" %d\t   %d\t   %d\n", process[i], ptime[i], wtime[i]); 
printf("\nTotal Waiting Time: %d \nAverage Waiting Time: %f", total, avg); 

由于需要提前完成它呵呵呵

回答

0

简单的办法:检查错误和如果有一些错误终止。

// add #include <cstdlib> at the beginning of your code to use exit() 

{ 
printf("\nEnter number of Processes:"); 
if(scanf("%d", &n)!=1 || n<0)exit(1); 
for(i=0;i<n;i++) 


{ 
    printf("\nEnter Process ID %d :",i+1); 
    if(scanf("%d", &process[i])!=1 || process[i]<0)exit(1); 
    printf("\nEnter Process Time %d:",i+1); 
    if(scanf("%d",&ptime[i])!=1 || ptime[i]<0)exit(1); 
} 

UPDATE:

要通过一个exit()做出来,用一个标志是一个好主意。 通过这种方式,可以更容易地执行其他操作,例如打印错误消息。

// add #include <cstdlib> at the beginning of your code to use exit() 

{ 
bool error_found = false; 
printf("\nEnter number of Processes:"); 
if(scanf("%d", &n)!=1 || n<0)error_found = true; 
else 
{ 
    for(i=0;i<n;i++) 


    { 
     printf("\nEnter Process ID %d :",i+1); 
     if(scanf("%d", &process[i])!=1 || process[i]<0){error_found = true; break;} 
     printf("\nEnter Process Time %d:",i+1); 
     if(scanf("%d",&ptime[i])!=1 || ptime[i]<0){error_found = true; break;} 
    } 
} 
if (error_found) { 
    // some error exists 
    puts("MUST NOT ALPHABET OR NEGATIVE NUMBER!"); 
    exit(1); 
} 
+0

如果我想添加一条消息我该怎么做?例如不得使用字母或负数! –

0

尝试使用字符串类型获取输入,然后将字符串转换为您想要的结果。例如:

#include <string> 
#include <iostream> 
#include <sstream> 
#include <exception> 
using namespace std; 

int main() { 
    int processed_input; 
    string input; 
    cin >> input; 
    stringstream ss(input); 
    try { 
     ss >> processed_input; 
     if(processed_input < 0) throw "Negative number"; 
    } catch(exception &e) { 
     cout << "Error : non-numeric characters inputted"; 
    } catch(const char* msg) { 
     cout << "Error : " << msg << " inputted"; 
    } 
    return 0; 
}