Jump to content
Fórum Script Brasil
  • 0

Ler 20 Inteiros


Leonardo Prass
 Share

Question

16 answers to this question

Recommended Posts

  • 0

eu Tentei fazer com 5 Numeros mais não consegui  também 

#include<stdio.h>
#include<iostream>
int main()

{
    float numeros[5];
    int i;

    for( i=1 ;  i < 5 ;i++ )
{


       std::cout<<"Entre com o numero  " << i <<" : " ;
       std::cin>>  numeros;}
std::cout<<" Numeros Digitados "<< numeros<<"\n" ;


}

Esse eu cheguei mais perto porem eu quero que ele mostre os numeros digitados no final.


#include<iostream>
using namespace std;
int main()
{
    int n,x;

    

    for(x=1;x<=5;x++){
      cout<<"\nDigite: ";
      cin>> n;

      cout<<"NUMEROS DIGITADOS " << n;}


}

Link to comment
Share on other sites

  • 0

Para entender arrays você vai ter que entender o conceito de ponteiros. Recorde isso... Um ponteiro é um tipo de variável que aponta onde esta outra variável. Que quer dizer com isso de que aponta outra variável? Toda variável ela é alojada na memória RAM do computador certo? Como o computador faz para encontrar elas? Todas, repito TODAS variáveis, tem uma direção na memória, é um numero que indica em que parte da memória esta essa variável, esse numero é o que guarda um ponteiro, por isso se diz que ele(O ponteiro) aponta outra variável, porque ele guarda a direção de memória de outra variável, si eu souber a direção de uma variável eu posso manipular ela.

Então... Agora que tomamos uma rápida classe sobre ponteiros, você deve saber que um array é um conjunto de variáveis do mesmo tipo armazenado na memória de forma consecutiva, ou seja que cada variável vem a continuação da outra, estão todas juntas, são como vizinhos. O mais interessante é que a primeira variável do array é apontada por um ponteiro implícito, ou seja você não vê ele de forma clara ou transparente, porem ele ta aí, de outra forma não podíamos acessar a nenhum dos valores do array.

um array é... 

//Si eu criar um array tipo int lembre que será um grupo de variáveis todas juntas e que será apontado por um array ponteiro "invisível" que aponta a primeira posição.
int p[5];

//p é um ponteiro que inicia apontando a primeira das variáveis
p -> [ ][ ][ ][ ][ ]
 

Isso é um mero desenho ilustrativo, serve para ter uma ideia do que é um ponteiro, si eu quero ter acesso a primeira casinha das 5 existentes eu devo fazer p[0].

Então...

p[0] é como si fosse: p -> [ ][ ][ ][ ][ ]

Ai vem a pergunta.... Como faço para acessar a 3º casinha? É fácil, você faz p[2]! Pera ai... p[2] é a 2º não a 3º? Não!! sempre começamos a contar de zero, então p[0] é a primeira, p[1] é a segunda, e o p[2] é a terceira casinha. Em outras palavras p[2] é  [0][1] p ->[2][3][4]. Entendeu? Por isso seu código não funciona, você tem 5 variáveis(nesse caso) e você não está alternando entre elas por que você não esta usando o "índice" que nada mais é que esse numero [x] que vai entre as [] logo depois de p para ir trocando de variável. seu problema é que você faz "p" quando deveria fazer "p[x]"(X porque pode ser qualquer numero, 0, 1, 3...).

Então vamos ver seu problema solucionado.

#include<iostream>

int main(){
    float numeros[5];
    int i;
    
    for ( i = 0;  i < 5 ; i++ ) {//i deve começar de zero sempre!!!
        std::cout << "Entre com o numero  " << i+1 << " : " ; // si quiser ver como 1,2,3... e nao como 0,1,2... engane o usuário somando +1 na hora de mostrar o i então si estiver na posição zero, ao ter mais um somado ao i, vai mostrar 1 ;)
        std::cin >>  numeros[i]; //Isso é o que te faltou simplesmente... O "[i]" índice.
    }
    
    std::cout << " Numeros Digitados " << numeros[0] << std::endl; //primeiro é a posição zero sempre!!
    std::cout << " Numeros Digitados " << numeros[1] << std::endl;
    std::cout << " Numeros Digitados " << numeros[2] << std::endl;        
    std::cout << " Numeros Digitados " << numeros[3] << std::endl;
    std::cout << " Numeros Digitados " << numeros[4] << std::endl; //o ultimo é o 4, porque de 0 a 4 temos 5 números que foi o que vc declarou, não existe a posição[5], si vc acessar a essa casa vc saiu de rango, isso é muito ruim, não faça isso ok. Por isso dentro de for acontece i < 5, porque i nunca deve ser 5, i só vai incrementar enquanto seja menor que 5, até ser 4, quando ele for 4(menor que 5) já não precisamos incrementar mais si não saímos de rango. sinto muito alargar tanto, porem é o lugar correto para comentar.      

    std::cout << "\n\n Outra forma de imprimir" << std::endl;
    for ( i = 0;  i < 5 ; i++ ) {//i deve começar de zero sempre!!!
        std::cout << " Numeros Digitados " << numeros[i] << std::endl;  // É menos código que na versao anterior nao é? =D
    }    

    
    return 0;
}

Pode que o conceito de ponteiros seja muito avançado para seu nível atual, relaxe, não queime a cabeça com isso, só não esqueça de usar o índice para trocar entre variáveis de um array, porque você tem muitas variáveis e não uma só. Ponteiros acho que é uma das armas mais poderosas da programação, porem muitos tem dificuldade de aprender o que é. Quando chegar lá e sua cabeça começar a queimar, lembre que um ponteiro nada mais é que uma variável que aponta outra variável, ou seja que guarda a direção de outra variável, isso vai simplificar muito aquele montão de teoria que você vai aprender sobre tema de ponteiros.

 

 

 

Edited by vangodp
Link to comment
Share on other sites

  • 0

Aproveitando esse tópico como resolver esse programa 

Criar um programa que leia o nome de pessoas e a sua profissão. Quando o usuário digitar “fim” no campo nome, o programa deve terminar. Ao terminar escrever o número de advogados cadastrados. Exemplo de tela de saída: Nome: Fernando Profissão: professor Nome: Luiz Profissão: advogado Nome: Marcos Profissão: advogado Nome: Ana Profissão: dentista Nome: fim O número de advogados cadastrados é 2.

 

eu ate tentei fazer mais não deu certo  mais eu acho que a logica esta correta:

#include<iostream>
using namespace std;
int main(){

    char nome [30];
    char prof ;
    while(nome!='fim');{
    cout<<" Digite Seu Nome ";
    cin>>nome;
    cout<<"Digite Sua Profissao ";
    cin>>prof;
    cout<< nome;
    cout<< prof;
    if (prof=='advogado'){
cout<< nome;
cout<< prof++;}
}

}

 

se eu coloco prof e declaro o numero de espacos não funciona da mesma maneira ele so le 1 letra tem como faze ele ler a palavra inteira?

Link to comment
Share on other sites

  • 0

while(nome!='fim');{... esta errado, é while ( !strcmp( nome, "fim" ) ){... Para comparar chars estilo C, precisamos usar as funções que nos brinda C para comparar strings, si em vez de C_string você usar a classe string aí é outra coisa, então seria while(nome!="fim"){.

Link to comment
Share on other sites

  • 0

ok isso seria para finalizar mais como eu faco para ele ler a profissao advogado eu repito a mesma coisa dentro do if?

da mesma forma n funcionou quando digito fim ele n finhaliza e sim continua o programa  

#include<iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
int main(){

    char nome [30];
    char prof [30] ;

    do{
    cout<<" Digite Seu Nome ";
    cin>>nome;
    cout<<"Digite Sua Profissao ";
    cin>>prof;

    }while ( !strcmp( nome, "fim" ) );

cout<< "Nome:" <<nome<<"\n";
cout<<"Profissao: " <<prof;}



 

e não teria como usar um case para a palavra advogado ex; case 'advogado'; vai somando ++

Edited by Leonardo Prass
Link to comment
Share on other sites

  • 0

eu coloquei ==0 e funcionou  porem  a ideia quando digitasse fim finalizar e não ir para profissao e como eu leio a palavra advogado para conseguir somala?

#include<iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
int main(){

    char nome [100];
    char prof  ;

    do{
    cout<<" Digite Seu Nome ";
    cin>>nome;
    cout<<"Digite Sua Profissao ";
    cin>>prof;
 cout<< "Nome:" <<nome<<"\n";
  cout<<"Profissao: " <<prof<< "\n";
    }while ( !strcmp( nome,"FIM"  )==0 );
if (prof=='a'){
cout<< "Nome:" <<nome<<"\n";
cout<<"Profissao: " <<prof<< "\n";}}



 

já tive um progresso maior mais ainda n consegui resolver 

#include<iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
int main(){

    char nome [100];
    char prof  ;

    do{
    cout<<"\nDigite Seu Nome: ";
    cin>>nome;
    cout<<"\nDigite Sua Profissao:";
    cin>>prof;
 cout<< "\nNome:" <<nome;
  cout<<"\nProfissao: " <<prof<< "\n";

if (prof=='advogado'){prof++;}{
cout<< "Nome:" <<nome<<"\n";
cout<<"Profissao: " <<prof<< "\n";}
}while ( !strcmp( nome,"FIM"  )==0 );}


 

Link to comment
Share on other sites

  • 0

strcmp retorna 3 tipos de valor conforme o caso si temos 2 string de esta forma:

char s1[10] = "abc";
char s2[10] = "abb";

E usamos strcmp(s1, s2) devemos saber que resultados van a dar. Para saber como funciona strcmp você tem que saber o procedimento que ele usa. O strcmp compara letra a letra um string com outro, exemplo ele pega a primeira letra de s2 e compara com a primeira letra de s1, si é menor o função para a comparação, já que em s2 uma letra é menor que s1, então se diz que s2 é menor que s1, strcmp retorna -1, porem si a letra encontrada for maior então s2 é maior, nesse caso strcmp retorna 1, si ambas letras são iguais se passa a analisar a seguinte letra de ambos strings, e assim até acabar todas as letras, nesse caso retorna zero pois não existe letras maiores ou menores em ambos strings, são iguais.

Comparar "abc" com "abb" strcmp retorna -1 pois a 3º letra del segundo string é menor que a do que a 3ª letra do primeiro string. strcmp("abc", "abb") retorna -1, 'b' é menor que 'c'.

strcmp("abc", "abd") retorn 1 a 'd' é maior que a 'c'.

strcmp("abc", "abc") retorna 0 pois ambos são iguais.

E por ultimo

!strcmp("abc", "abc") retorna 1, pois o simbolo ! adiante de strcmp é o operador de negação, ele "inverte" o resultado, como são iguais e strcmp retorna um 0(false), o operador transforma o false em true(1).

Aqui você errou:

if (prof=='advogado')

é

if ( !strcmp(prof, "advogado") )

para indicar que ambos são iguais, recorde que si são iguais o resultado de strcmp será zero, então não funcionaria if, aí o operador de negação transforma esse falso em true para que ele entre no if quando sejam iguais. Em outras palavras, isso

!strcmp(prof, "advogado")

é igual a isso

strcmp(prof, "advogado") == 0

ok? Tente arrumar isso.

Link to comment
Share on other sites

  • 0

ba cara eu enrendi o que e o comando mais não entendi como aplicalo.

#include<iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
int main(){

    char nome [100];
    char prof [30]  ;

    do{
    cout<<"\nDigite Seu Nome: ";
    cin>>nome;
    cout<<"\nDigite Sua Profissao:";
    cin>>prof;
 cout<< "\nNome:" <<nome;
  cout<<"\nProfissao: " <<prof<< "\n";

if ( !strcmp(prof, "advogado") ) {prof++;}{
cout<< "Nome:" <<nome<<"\n";
cout<<"Profissao: " <<prof<< "\n";}
}while ( !strcmp( nome,"FIM"  )==0 );}


 

Link to comment
Share on other sites

  • 0

Criar um programa que leia o nome de pessoas e a sua profissão. Quando o usuário digitar “fim” no campo nome, o programa deve terminar. Ao terminar escrever o número de advogados cadastrados. Exemplo de tela de saída: Nome: Fernando Profissão: professor Nome: Luiz Profissão: advogado Nome: Marcos Profissão: advogado Nome: Ana Profissão: dentista Nome: fim O número de advogados cadastrados é 2.

basicamente eu quero que ele reconheca profissao digitada e se for advogado ele some o total e se for professor so imprima quando digitar fim

Edited by Leonardo Prass
Link to comment
Share on other sites

  • 0

o mais proximo que consegui foi esse porem quando digito fim ele vai pra profissao igual e so depois finaliza e segundo eu não consigo somar o numero de advogados também da error imcompatible types in assigments como posso resolver esses poblemas?

#include<iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
int main(){

    char nome [100];
    char prof [30]  ;

do{
    cout<<"\nDigite Seu Nome: ";
    cin>>nome,100;

    cout<<"\nDigite Sua Profissao:";
    cin>>prof,30;
 cout<< "\nNome:" <<nome;
  cout<<"\nProfissao: " <<prof<< "\n";
 if  ( strcmp(prof, "advogado") ) {prof++;}{
cout<< "Nome:" <<nome<<"\n";
cout<<"Profissao: " <<prof<< "\n";}
  }while (strcmp(nome , "fim"));



}

 

saquei como somar eu tinha que declarar um inteiro para isso mais porem ainda da erro e ele n reconhece a palavra advogado ainda 

#include<iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
int main(){

    char nome [100];
    char prof [30]  ;
    int advogados;
do{
    cout<<"\nDigite Seu Nome: ";
    cin>>nome;

    cout<<"\nDigite Sua Profissao:";
    cin>>prof;
 cout<< "\nNome:" <<nome;
  cout<<"\nProfissao: " <<prof<< "\n";
 if  ( strcmp(prof, "advogado") ){advogados++;} {
cout<< "Nome:" <<nome<<"\n";
cout<<"Profissao: " <<advogados<< "\n";}
  }while (strcmp(nome , "fim"));



}

 

Qualquer coisa q você digita ele considera como advogado.

Link to comment
Share on other sites

  • 0

e quanda digita fim ele finaliza mais antes ele pede para escrever a profissao como eu posso resolver isso?

#include<iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
int main(){

    char nome [100];
    char prof [30]  ;
    int advogados=0;
do{
    cout<<"\nDigite Seu Nome: ";
    cin>>nome;

    cout<<"\nDigite Sua Profissao:";
    cin>>prof;
 cout<< "\nNome:" <<nome;
  cout<<"\nProfissao: " <<prof<< "\n";

  }while (strcmp(nome , "fim"));
if  ( strcmp(prof, "advogado") ){advogados++;} {
cout<<"Numero de Advogados: " <<advogados<< "\n";}}

 

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.

 Share

  • Forum Statistics

    • Total Topics
      149.6k
    • Total Posts
      646.2k
×
×
  • Create New...