shreyas s Ответов: 1

[Новичок] ошибка с выводом в программе на языке Си.


Я хочу, чтобы программа завершилась, когда я наберу "END".
Но в моей программе "Selected for Redteam" отображается после окончания.

Кроме того, что делать, если имя человека - "конец",
Я не хочу, чтобы код останавливался, когда я набираю "конец". Как заставить компилятор понять, что "конец" отличается от "конца".

Что я уже пробовал:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int no=0;
    int blueteam=0;
    int redteam=0;
    char name[15];
    char END;
    
    printf("Type END to exit\n");
    printf("Note:Make sure the first alphabet is in Uppercase.\n");
    
    do
    { 
        printf("\nStudent Number:%d\t Redteam:%d\t Blueteam:%d",no,redteam,blueteam);
        printf("\nEnter the First name:");
        scanf(" %s", name);
        
        if(name[0] > 'M')
        {
            printf("Selected for Blueteam\n");
            blueteam++;
        }
        else
        {
// So if name[0] is 'E' for END, you will come here
            printf("Selected for Redteam\n");
            redteam++;
        }    
        no++;
    } while(name[2]=="END"); // this won't work
    return 0;
}

Richard MacCutchan

Ваш код все еще неправильный: }while(name[2]=="END");
Вы не можете сравнить один символ (}name[2]); со строкой ("END"), то есть три символа.

shreyas s

Вот дерьмо, ты прав! Я такой тупой.

Richard MacCutchan

Мы все совершаем ошибки.
Я привел в порядок ваш отступ и добавил пару комментариев, чтобы вы могли посмотреть.

shreyas s

Большое спасибо, сэр. Ты просто чудо!!!!

Richard MacCutchan

Нет, я просто занимаюсь этим немного дольше, чем ты.

1 Ответов

Рейтинг:
10

Richard MacCutchan

}while(name[2]==END);

Это неверное утверждение. Кроме того, если имя[0] не больше, чем "М", то он напечатает строку о красной команде. Попробуйте правильно сделать отступы в коде, и нелогичность станет очевидной.


shreyas s

Попробовал кое-что отредактировать, но безуспешно.

Richard MacCutchan

Подумайте о том, что вам нужно сделать, и запишите каждый шаг на бумаге. Прочтите его и проверьте, имеет ли логика смысл. Затем, когда вы будете довольны этим, попробуйте превратить его в настоящий код.

Что касается вашего вопроса о "конце" и "конце" или "конце". Компьютеры видят символы верхнего и нижнего регистра как разные элементы, поэтому вам не нужно беспокоиться о том, что вы ошибетесь в своих сравнениях. Однако, если вы хотите принять любую комбинацию строк верхнего и нижнего регистра, содержащих варианты 'E', 'N' и 'D', есть функция для преобразования их всех в верхний или нижний регистр.

shreyas s

Ладно, сделаем.
Спасибо за быстрый ответ.