Ir ao conteúdo
  • Cadastre-se

Dúvida de Programação C


Bonys02

Posts recomendados

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;}
Link para o comentário
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.

Link para o comentário
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;}
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...