Ir para conteúdo
Fórum Script Brasil
  • 0

Não encontro o erro :@


Júlia Lopes

Pergunta

Ei pessoal,

estou com um programa aqui, e eu consegui fazer grande parte dele, só o final que tá pegando... o programa deveria mostrar os dados do cadastrado ao final, mas to tendo problema em fazê-lo mostrar os telefones... pra tentar explicar melhor, o programa pede pra pegar os dados de uma agenda (nome, empresa e telefones), e depois mostrar os dados, o problema é que eu não consigo fazer o programa mostrar TODOS os telefones (o programa permite ao usuário cadastrar até 10 números por pessoa)... só mostra o primeiro...

#include <stdio.h>
#include <stdlib.h>
struct agenda {
    char responsavel[40], empresa[30];
    int telefone[9];
    };

int main ()
{
    struct agenda contato[2];
    int i, j;

    for (i=0; i<2; i++){
        fflush (stdin);
        printf ("Nome:");
        gets (contato[i].responsavel);
        printf ("\n");

        printf ("Empresa:");
        gets (contato[i].empresa);
        printf ("\n");

        fflush (stdin);

        for (j=0; j<10; j++){

        printf ("Telefone (para sair digite qualquer letra e tecle ENTER):");
        scanf ("%d", &contato[i].telefone[j]);
        printf ("\n");
              }
    }
     
        for (i=0;i<2; i++){

        printf ("Nome: %s\n", contato[i].responsavel);
        printf ("Empresa: %s\n", contato[i].empresa);
            for (j=0; j<10; j++){
        printf ("Telefone: %d", contato[i].telefone[j]);
        printf ("\n");

        }
        }

            return 0;
            }

esse ai é o programa... se puderem me ajudar a identificar o erro ficarei grata ;p

Abraços,

Júlia L.

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Fiz uma mudança mínima Júlia:

#include <stdio.h>
#include <stdlib.h>
struct agenda {
    char responsavel[40], empresa[30];
    int telefone[10];\\Você sempre deve criar os arrays com o valor 1 número maior do que você precisa
    };

int main ()
{
    struct agenda contato[2];
    int i, j;

    for (i=0; i<2; i++){
        fflush (stdin);
        printf ("Nome:");
        gets (contato[i].responsavel);
        printf ("\n");

        printf ("Empresa:");
        gets (contato[i].empresa);
        printf ("\n");

        fflush (stdin);

        for (j=0; j<10; j++){

        printf ("Telefone (para sair digite qualquer letra e tecle ENTER):");
        scanf ("%d", &contato[i].telefone[j]);
        fflush(stdin);
        printf ("\n");
              }
    }

        for (i=0;i<2; i++){

        printf ("Nome: %s\n", contato[i].responsavel);
        printf ("Empresa: %s\n", contato[i].empresa);
            for (j=0; j<10; j++){
        printf ("Telefone: %d", contato[i].telefone[j]);
        printf ("\n");

        }
        }

            return 0;
            }

O único problema é ao digitar 2 ou mais zeros como o telefone, pois sendo uma int, o compilador interpreta com 1 zero só, pois 2,3,4,n zeros tem o mesmo valor. Para isso funcionar, bastaria mudar o telefone para um array de chars também. Desculpe não poder ajudar com isso, mas C não é meu forte.

Abraços,

Pedro

Link para o comentário
Compartilhar em outros sites

  • 0

Julia,

Sua declaração da linha 5: int telefone[9];

Isso não é uma lista com telefones. é apenas um vetor de inteiros. Ele guarda 9 digitos inteiros: Ex: 112389776.

Nessa struct, o que você consegue é apenas guardar 1 numero de telefone por pessoa, e esse numero contem 9 digitos.

Editado por rodrigo_fabiam
Link para o comentário
Compartilhar em outros sites

  • 0

#include <stdio.h>
#include <stdlib.h>
struct agenda {
    char responsavel[40], empresa[30];
    int telefone[10];
    };

void main ()
{
    struct agenda contato[2];
    int i, j;

    for (i=0; i<2; i++){
        fflush (stdin);
        printf ("Nome:");
        gets (contato[i].responsavel);
        printf ("\n");

        printf ("Empresa:");
        gets (contato[i].empresa);
        printf ("\n");

        fflush (stdin);

        for (j=0; j<10; j++){

        printf ("Telefone (para sair digite qualquer letra e tecle ENTER):");
        scanf ("%d", &contato[i].telefone[j]);
        fflush(stdin);
        printf ("\n");
              }
    }

        for (i=0;i<2; i++){

        printf ("Nome: %s\n", contato[i].responsavel);
        printf ("Empresa: %s\n", contato[i].empresa);
            for (j=0; j<10; j++){
        printf ("Telefone: %d", contato[i].telefone[j]);
        printf ("\n");

        }
        }
    system("pause");
       
  }

Funcionou aqui.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...