Jump to content
Fórum Script Brasil
  • 0

Não encontro o erro :@


Júlia Lopes

Question

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 to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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.

Edited by rodrigo_fabiam
Link to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...