Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

A entrada contém vários casos de teste e termina com EOF

Estou com uma duvida nesse exercicio:

Para cada teste, a saída consiste de uma linha dizendo "vai ter copa!" caso não haja reclamações para a presidente. Caso haja reclamações, a saída deverá dizer "vai ter duas!".

Como consigo parar o programa se o usuário não digitar nada? No C colocaria != EOF no caso do c# como que ficaria?

#include<stdio.h>
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF){
        if(n==0)printf("vai ter copa!\n");
        else if(n>0)printf("vai ter duas!\n");
    }
    return 0;
}
4 respostas

Olá, Emillyn. Tudo bom?

No C# o código fica um pouco diferente. Uma das alternativas é:

static void Main(string[] args)
{
    while (true)
    {
        string textoAno = Console.ReadLine();

        if (textoAno == String.Empty)
        {
            break;
        }

        int ano = int.Parse(textoAno);
        Console.WriteLine(".");
        // Lógica com a variável ano
    }
}

Ficamos no loop while(true) até o usuário dar enter com uma linha vazia. Neste caso, a condição textoAno == String.Empty é satisfeita e a aplicação sai do loop e da aplicação.

O que você acha?

Obrigada me ajudou muito, tem outro jeito de fazer sem precisar declarar uma string depois converter para int?

solução!

Não conheço uma forma simples de se obter um int da Console sem usar o ReadLine e o int.Parse.

Mas, uma alternativa seria:

while (true)
{
    if (!int.TryParse(Console.ReadLine(), out int ano))
    {
        break;
    }

    Console.WriteLine(".");
    // Lógica com a variável ano
}

O TryParse retorna um booleano indicando se a conversão foi feita com sucesso ou não. O argumento out int ano cria a variável ano e passa sua referência para o método.

Obrigada, me ajudou muito :D