Leonardo Prass Postado Setembro 3, 2015 Denunciar Share Postado Setembro 3, 2015 Tem Alguma foram em c++ para ler 20 numeros inteiros sem declarar 1 por 1 sou iniciante em c.ex; int num1,num2,num3.....e assim vai tem alguma forma ?não sei se fui claro na minha duvidaquero ler 20 inteiros so que não declare 1 por 1. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 vangodp Postado Setembro 3, 2015 Denunciar Share Postado Setembro 3, 2015 tem... Isso se chama arrays, ou vetores. Busque no google "vetores em C++" ou "vetores linguagem C". Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Leonardo Prass Postado Setembro 5, 2015 Autor Denunciar Share Postado Setembro 5, 2015 EU pesquisei porem não consegui aplicar nos meu codigos poderia dar um exemplo? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Leonardo Prass Postado Setembro 6, 2015 Autor Denunciar Share Postado Setembro 6, 2015 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;}} Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 vangodp Postado Setembro 6, 2015 Denunciar Share Postado Setembro 6, 2015 (editado) 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áveisp -> [ ][ ][ ][ ][ ] 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. Editado Setembro 6, 2015 por vangodp Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Leonardo Prass Postado Setembro 7, 2015 Autor Denunciar Share Postado Setembro 7, 2015 (editado) Obrigado vc explica com uma excelência incomparável e uma duvida teria como imprimir os numeros na mesma linha? separadamente um do outro Editado Setembro 7, 2015 por Leonardo Prass Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 vangodp Postado Setembro 7, 2015 Denunciar Share Postado Setembro 7, 2015 troquestd::cout << " Numeros Digitados " << numeros << std::endl;porstd::cout << " Numeros Digitados " << numeros << ", ";é o std::endl que faz o salto de linha. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Leonardo Prass Postado Setembro 7, 2015 Autor Denunciar Share Postado Setembro 7, 2015 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? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 vangodp Postado Setembro 7, 2015 Denunciar Share Postado Setembro 7, 2015 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"){. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Leonardo Prass Postado Setembro 7, 2015 Autor Denunciar Share Postado Setembro 7, 2015 (editado) 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 ++ Editado Setembro 7, 2015 por Leonardo Prass Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Leonardo Prass Postado Setembro 7, 2015 Autor Denunciar Share Postado Setembro 7, 2015 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 );} Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 vangodp Postado Setembro 7, 2015 Denunciar Share Postado Setembro 7, 2015 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 issostrcmp(prof, "advogado") == 0ok? Tente arrumar isso. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Leonardo Prass Postado Setembro 7, 2015 Autor Denunciar Share Postado Setembro 7, 2015 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 );} Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 vangodp Postado Setembro 8, 2015 Denunciar Share Postado Setembro 8, 2015 Depende do que você quer fazer... si descrever o problema que já nem lembro hahaha Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Leonardo Prass Postado Setembro 8, 2015 Autor Denunciar Share Postado Setembro 8, 2015 (editado) 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 Editado Setembro 8, 2015 por Leonardo Prass Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Leonardo Prass Postado Setembro 8, 2015 Autor Denunciar Share Postado Setembro 8, 2015 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Leonardo Prass Postado Setembro 8, 2015 Autor Denunciar Share Postado Setembro 8, 2015 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";}} Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Leonardo Prass
Tem Alguma foram em c++ para ler 20 numeros inteiros sem declarar 1 por 1 sou iniciante em c.
ex; int num1,num2,num3.....
e assim vai tem alguma forma ?
não sei se fui claro na minha duvida
quero ler 20 inteiros so que não declare 1 por 1.
Link para o comentário
Compartilhar em outros sites
16 respostass a esta questão
Posts Recomendados
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.