2013-11-28 7 views
1

Я расстроился по поводу требования, которое запрещало такой же идентификатор студента.Проверьте данные для пользователей

Предположим, мне нужно набрать 3 студента ID:

  • Первая: 1234
  • Второе: 4567
  • Третье: 1234 (такой же попросить пользователя ввести имя студента снова)

Но я понятия не имею, как я могу сканировать все предыдущие данные и сравнивать типы пользователей данных. Спасибо за помощь.

#include<stdio.h> 
int main() 
{ 
    int Num; 
    printf("Enter a number for student:"); //enter the number of student 
    scanf("%d",&Num); 
    int i,a,CheckId; 
    int myArr[Num]; 

    for(i=0;i<Num;i++) 
    { 
     printf("\n\nEnter student ID:");//type the StudentID 
     scanf("%d",&myArr[i]); 
    } 

    //This part i want to check whether the data is same 
    do 
    { 
     printf("Enter a number"); 
     scanf("%d",&CheckId); 
     if(CheckId==myArr[i])//Assume the number is same 
     { 
      break; 
     } 
    }while(CheckId!=myArr[i]);//Assnume the number is not same and continue 
    //But how can i check the previous data 
} 
+0

Добро пожаловать в Переполнение стека. Пожалуйста, используйте теги, чтобы описать язык программирования или технологию, о которой идет речь. Я повторил ваш вопрос как 'C'; не стесняйтесь настраивать, если вы используете определенный диалект. –

+0

Какое требование? О чем ты говоришь? –

+0

Тот же идентификатор студента не допускается. – user3041923

ответ

0

Вам нужно добавить вложенную for петли внутри do-while петли, а затем сравнить введенное значение со всеми значениями массива внутри этого for цикла.

Кроме того, вы можете использовать while(1) в конце вместо условия вы написали, так как это условие не может быть false, так как, вы break из цикла, если он false.

EDIT: (На комментарий ФП в)

В вашей do-while вы использовали while(CheckId!=myArr[i]), я предложил вам заменить его while(1), однако, что не является необходимым.

Вам необходимо непрерывно (бесконечно) принимать входные данные от пользователя до тех пор, пока он не будет равен одному из значений в массиве.

Вы можете выйти из внутренней for петли на успешном сравнении, но перед вами break, вы установили flag = 1;, который вам нужно контролировать во внешнем do-while петли, чтобы break из него.

Вы можете сделать это двумя способами:
1.

do { 
... 
if(flag == 1) 
     break; 
} 
while(1); 

2.

do { 
... 
} 
while(flag != 1); 
+0

Я могу проверить данные сейчас. Мне жаль, что я не могу понять часть while (1) – user3041923

+0

Я исправляю проблему. Но я, похоже, ошибался. Потому что мне нужно продолжать вводить данные и проверять данные (ли у меня уже выход) в моем проекте. Могу дать мне некоторые подсказки для этого. Спасибо – user3041923

+0

Итак, когда вы хотите выйти из 'do-while', я имею в виду, на каком условии? –

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