Programação Progressiva
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Programação Progressiva

Fórum para dúvidas dos sites: Programação Progressiva, Java Progressivo, C Progressivo


Você não está conectado. Conecte-se ou registre-se

onde esta o erro?

2 participantes

Ir para baixo  Mensagem [Página 1 de 1]

1onde esta o erro?  Empty onde esta o erro? Ter Ago 04, 2015 7:01 pm

neogalax



/*2. Etiqueta - Elabore um programa que pede seu nome, endereço, CEP e telefone.
Ele deve imprirmir seu nome completo na primeira linha, seu endereço na segunda, e o CEP e telefone na terceira.*/

#include <iostream>
#include <string>

#define MAX 100

using namespace std;

// funcoes declaradas
string usuario(string nome[MAX], string endereco[MAX]);

int dados(int cep, int telefone);







int main(){

// variaveis para receber os dados das funcoes
//*************************************
int cep, telefone;
string nome[MAX], endereco[MAX];
//*************************************


cout <<"Nome digitado e endereco:" << usuario(nome[MAX], endereco[MAX]);
cout << "Cep edigitado e Telefone:" << dados (cep,telefone);


}





// desenvolvimento das funcoes
string usuario(string nome[MAX], string endereco[MAX]){
           cout << "Informe um nome:"<< endl;
           cout << "Informe o endereco:" << endl;
           cin >> nome[MAX] >> endereco[MAX];

           return (nome[MAX], endereco[MAX]);
}

int dados(int cep, int telefone){
        cout << "Informe o Cep:" << endl;
        cout << "Informe o telefone" << endl;
        cin >> cep >> telefone;

     return (cep, telefone);


}

2onde esta o erro?  Empty Re: onde esta o erro? Sáb Ago 08, 2015 6:07 am

AbnerRMS



Então, neogalax, não sei se você já encontrou a resposta, mas vamos lá: tive que fazer várias alterações  pra funcionar...
Código:
/*2. Etiqueta - Elabore um programa que pede seu nome, endereço, CEP e telefone.
Ele deve imprirmir seu nome completo na primeira linha, seu endereço na segunda, e o CEP e telefone na terceira.*/

#include <iostream>
#include <string>

#define MAX         100

using namespace std;

// funcoes declaradas
void usuario(char nome[], char endereco[]);
void dados(string *cep, string *telefone);

int main()
{
    // variaveis para receber os dados das funcoes
    //*************************************
    char nome[MAX], endereco[MAX];  // mudei de string pra vetor de char pra usá-las na função "cin.getline"
    string cep, telefone;             // aqui vamos usar string já que não seram feitas operações matemáticas
    //*************************************

    // quando for passar um vetor pra uma função use só o nome,
    usuario(nome, endereco);  // não assim "endereco[MAX]"

    dados(&cep, &telefone);  // aqui passamos o endereço das váriáveis pra que as alterações feitas dentro da
                                      // função continuem valendo na volta

    cout <<"\nNome digitado e endereco: " << nome << " - " << endereco << endl;
    cout << "Cep edigitado e Telefone: " << cep << " - " << telefone << endl;

    return 0;
}

// desenvolvimento das funcoes
void usuario(char nome[], char endereco[])
{
    cout << "Informe um nome: "<< endl;
    cin.getline(nome, MAX);    // "cin.getline", porque "cin >>" só pega até encontrar um espaço

    cout << "Informe o endereco: " << endl;
    cin.getline(endereco, MAX);
}

void dados(string *cep, string *telefone)
{
    cout << "Informe o Cep: " << endl;
    cin >> *cep;

    cout << "Informe o telefone: " << endl;
    cin >> *telefone;
}

Isso:
Código:
return (cep, telefone);
Não dá certo porque só é possível retornar um valor por vez.

Tipo:
Código:
return (cep);

3onde esta o erro?  Empty Re: onde esta o erro? Sáb Ago 08, 2015 3:34 pm

neogalax



vlw pela dica =) estou 4 anos parado, retornei os estudos agora =) obrigado pela dica, vou estudar o codigo =)

4onde esta o erro?  Empty Re: onde esta o erro? Sáb Ago 08, 2015 3:42 pm

neogalax



ultima coisa analisando o código eu vi você faz dua entrada

cout << "Informe um nome: "<< endl;
cin.getline(nome, MAX);

e

cout << "Informe o endereco: " << endl;
cin.getline(endereco, MAX);

pude analisar que você usa o MAX para dizer que que o vetor tem o tamaho 100.

5onde esta o erro?  Empty Re: onde esta o erro? Sáb Ago 08, 2015 6:32 pm

AbnerRMS



Na verdade é a quantidade máxima de caracteres a ser lida, pra evitar o tal "estouro de buffer".
Mas só foi necessário porque eu usei um vetor de char, que eu acho que é o que você queria fazer quando escreveu:
Código:
string nome[MAX], endereco[MAX]; // só que assim cria-se vetores de string

Enfim, poderia ser feito de outro jeito:
Código:
string nome, endereco;  // com o tipo "string" - que na verdade é uma classe
Código:

// desenvolvimento das funcoes
void usuario(string *nome, string *endereco)
{
    cout << "Informe um nome: "<< endl;
    std::getline(cin, *nome);

    cout << "Informe o endereco: " << endl;
    std::getline(cin, *endereco);
}

Conteúdo patrocinado



Ir para o topo  Mensagem [Página 1 de 1]

Permissões neste sub-fórum
Não podes responder a tópicos