Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Bonys02

Dúvida de Programação C

Recommended Posts

Olá senhoras e senhores,

 

 Estou aqui com uma dúvida, preciso fazer a leitura desse exemplo de entrada para meu programa

   

        Computeiros - 2 - 0 - Programadores em C

 

onde a primeira palavra é o primeiro time, o primeiro número, a quantidade de gols correspondente ao primeiro time, o segundo número, a quantidade de gols correspondente à última palavra que é o segundo time. Isso é o que o usuário escreverá, então precisarei que o programa ignore os seis espaços entre as informações e os três hífens, porém não sei como fazê-lo.

 

outra dúvida...

 

está certo fazer assim para guardar vários nomes dentro de uma variável tipo char de um registro?

int time_info(char nome_time[], time codt){    int p, i;    scanf("%d", &p);    printf("\n");    for(i=0;i<p;i++){        scanf(" %[^\n]", nome_time.nome[p]);    }    printf("\n");    return p;}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sobre sua primeira dúvida: Existe um elemento comum, que permite distinguir os campos. Que é o traço.

A partir daí, basta fazer a leitura da variável de entrada e separar os valores.

 

Sobre sua segunda dúvida: No segundo "scanf()" está faltando o identificador de tipo de conteúdo. ("%[^\n]s")

No mais, a lógica parece estar correta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então,  Bonys02, fiz um código aqui que pode te ajudar.

Talvez você precise fazer algumas adaptações, mas ele faz exatamente o que você queria saber.

 

Apenas esqueci de pausar o código no fim, pois uso o Code::blocks, que faz isso automaticamente.

#include <stdio.h>#include <math.h>int i, j;char entrada[100];char nome_time1[100] = {};char nome_time2[100] = {};int gols1 = 0;int gols2 = 0;int tracos = 0;void entrada_da_frase(){    for(i = 0; i < 100; i++)    {        scanf("%c", &entrada[i]);        if(entrada[i] == '\n')        {            break;        }    }    printf("Entrada OK\n");}void separacao_da_frase(){    for(i = 0; i < 100; i++)    {        if( entrada[i] == '-' && tracos == 0)//Separando o nome do time 1.        {            nome_time1[i-1] = 10;            tracos++;            for(j = i-2; j >= 0; j--)            {                nome_time1[j] = entrada[j];            }        }        else if(entrada[i] == '-' && tracos == 1)//Separando o numero de gols do time 1.        {            tracos++;            int aux = 0;            for(j = i-2; j >= 0; j--)            {                if(entrada[j] == '-' || entrada[j] == ' ')                {                    break;                }                gols1 = gols1 + ((int)entrada[j]-48) * pow(10, aux);                aux++;            }        }        else if(entrada[i] == '-' && tracos == 2)//Separando o numero de gols do time 2.        {            tracos++;            int aux = 0;            for(j = i-2; j >= 0; j--)            {                if(entrada[j] == '-' || entrada[j] == ' ')                {                    break;                }                gols2 = gols2 + ((int)entrada[j]-48) * pow(10, aux);                aux++;            }        }        else if(tracos == 3)//Separando o nome do time 2.        {            for(j = 0; ; j++)            {                nome_time2[j] = entrada[j+i+1];                if(entrada[j+i+1] == '\n')                {                    break;                }            }            break;        }    }}void imprimir(){    printf("Nome do time 1: ");    for(i = 0; ;i++)    {        if(nome_time1[i] == '\n')        {            break;        }        printf("%c", nome_time1[i]);    }    printf("\n");    printf("Nome do time 2: ");    for(i = 0; ;i++)    {        if(nome_time2[i] == '\n')        {            break;        }        printf("%c", nome_time2[i]);    }    printf("\n");    printf("Gols1: %i\n", gols1);    printf("Gols2: %i\n", gols2);}int main(){    entrada_da_frase();    separacao_da_frase();    imprimir();    return 0;}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×