roccoC/C++ Posted September 1, 2012 Report Share Posted September 1, 2012 (edited) Progrma Vetores Vem mostrando aos iniciantes em linguagem c como declarar, inicializar e utilizar um conjunto de strings e de dígitos, armazenados numa variável para vetor, e isto eu mostro na prática. Note que estes dígitos referido são os salários dos profissionais citados no vetor de string, Note também que eu os declarei como global, sendo assim, é permitido o uso em qualquer outra parte do código, inclusive sub - algorítimos.Este programa é simples más me custou muitas horas para deixá - lo funcionando perfeitamente como está. Você verá algumas linhas em comentários, deixei assim de propósito para que o leitor programador possa está fazendotestes em seus códigos. A IDE usada foi Visual Studio 2010 Ultimate, que apresentou 3 warnings, habituais, no eclipse, também foi testado e rodou liso, leso e solto sem nenhum impedimento, portanto aproveite bem o código que é 100% funcionalcomo todos os outros que aqui postei, aliás só posto o que sei fazer, e o que sei fazer, compartilho com todos os amantes de linguagem c."Como não sabia que aquilo era impossível de fazer, foi lá e fez."http://codigosfontes-ccplus-plus.blogspot....ma-vetores.html Edited December 1, 2012 by roccoC/C++ Quote Link to comment Share on other sites More sharing options...
0 Marcelo Utikawa da Fonseca Posted September 2, 2012 Report Share Posted September 2, 2012 Boa tarde!Legal o seu programa. Como eu já te falei, ótima iniciativa divulgar programas prontos! Com certeza ajuda muitos... :)Eu queria fazer alguns comentários sobre o seu programa. Existem pontos que você podia melhorar ele.Inicialmente com relação à declaração dos vetores. O seu programa declara 4 vetores:char String1[] [66] = {"Uma Empresa Construtora resolveu aumentar os salários de alguns"}; char String2[] [55] = {"Profissionais em 10%, tecle Enter para ver como ficou:"}; int Salario[5] [5] = {{900},{1200},{1500},{1700},{1900}}; char Profissionais[][22] = {"Ajudante", "Pedreiro", "Carpinteiro", "Armador", "Telhadista", " Salários Atuais","Salários Atualizados", "Tecle Enter", "PROGRAMA VETORES" }; Todos seus vetores foram declarados com duas dimensões, ou seja, têm dois pares de colchetes. Isso significa que eles são listas de vetores. Por exemplo: int Salario[5] [5] = {{900},{1200},{1500},{1700},{1900}}; Você definiu que Salario será 5 listas com 5 itens cada. Durante o seu programa você usa apenas Salario[0] e Salario[1]. Assim você tem 3 itens em cada Salario que não são utilizados e podem ser descartados. Portanto seu programa poderia declarar Salario assim: int Salario[5] [2] = {{900},{1200},{1500},{1700},{1900}}; Outra coisa que você fez é declarar vetores sem dimensão como no caso de: char String1[] [66] = {"Uma Empresa Construtora resolveu aumentar os salários de alguns"}; Isso significa que, o tamanho do vetor declarado como [] será definido pelo número de itens utilizados na inicialização. Como a sua inicialização passa apenas 1 item (o texto entre chaves), então será um vetor de apenas 1 elemento. Assim não há necessidade de declarar esse vetor com duas dimensões. Além disso, a dimensão informada ([66]) refere-se ao tamanho da string e é complicado ficar contando as letras para saber o que colocar. Para evitar isso, pode ser utilizada o recurso de não definir a dimensão do vetor nesse caso, ficando assim: char String1 [] = "Uma Empresa Construtora resolveu aumentar os salários de alguns"; O mesmo pode ser feito para String2. Para profissionais você também usou o recurso de não definir o tamanho de uma dimensão porém ainda existe o problema de definir o tamanho para caberem as letras das strings, além do nulo no final. Isso pode te gerar problemas! O ideal é que você definisse a dimensão que informa o número de itens e deixar o tamanho das strings sem dimensão. Assim poderia declarar da seguinte forma: char Profissionais[9][] = {"Ajudante", "Pedreiro", "Carpinteiro", "Armador", "Telhadista", " Salários Atuais","Salários Atualizados", "Tecle Enter", "PROGRAMA VETORES" }; Mais uma coisa: o ideal é que você declare um outro vetor para os textos no final desse array. Se você quiser aumentar uma profissão iria te dar bastante trabalho pois ia ter acertar a posição dos textos "Tecle Enter" e "PROGRAMA VETORES" no programa ou colocar a profissão depois desses textos, o que também daria trabalho pois o for ia exibir os textos como profissões. Finalmente: o seu for que exibe as profissões na verdade não está fazendo o loop. Ele já retorna falso na segunda passagem! Assim ele não tem utilidade. E internamente ao for você está duplicando as chamadas a printf e incrementando o i, variável do for. Assim você poderia mudar o código para que o for fizesse o loop, evitando a duplicidade. O loop ficaria assim: for (i = 0; i < 5; i++){ // Este for percorre cada posição na matriz Salario e permite que printf imprima seus valores Sleep(800); gotoxy(8,8+(i*2)); printf("%s %d\t\t %d\t\t\t%d", Profissionais [i], Salario[i] [0], Salario[i] [1], Salario[i] [0] + Salario[i] [1]); } textcolor(LIGHTGREEN);gotoxy(33,20); printf("%s", Profissionais [7]); gotoxy(33,21);Perceba que usei o i como índice de Profissionais também.Eu também usei o i para calcular o valor de y. Como a cada aumento em i tinha que aumentar y em 2, multipliquei i por 2 e somei 8, gerando o resultado esperado.Espero que meus comentários tenham te ajudado! :)Abraços,Marcelo Utikawa da Fonseca Quote Link to comment Share on other sites More sharing options...
0 roccoC/C++ Posted September 2, 2012 Author Report Share Posted September 2, 2012 (edited) Ola, boa tarde, você errou nestas linhas sujeridas:char Profissionais[9] = {"Ajudante", "Pedreiro", "Carpinteiro", "Armador", "Telhadista", " Salários Atuais","Salários Atualizados", "Tecle Enter", "PROGRAMA VETORES" }; Não sei onde você compilou, más aqui no Visual Studio 2010 ultimate e no eclipse não compila. Erro mostrado no eclipse: inicializadores demais para 'char [9] "main.cpp / main / src linha 7 C / C + + Problema. // Traduzido Erro mostrado no Visual Studio 2010: Erro 1 erro C2078: também inicializadores muitos C: \ Users \ Samuel Lima \ documentos \ Visual Studio 2010 \ Projects \ principal \ principal \ main.cpp 7 // Traduzido Ignorando esta declaração sujerida por você: char Profissionais[9] = {"Ajudante", "Pedreiro", "Carpinteiro", "Armador", "Telhadista", " Salários Atuais","Salários Atualizados", "Tecle Enter", "PROGRAMA VETORES" }; e usando a original que eu usei: char Profissionais[][22] = {"Ajudante", "Pedreiro", "Carpinteiro", "Armador", "Telhadista", " Salários Atuais","Salários Atualizados", "Tecle Enter", "PROGRAMA VETORES" }; O programa Compila, más trava na execução, e os erros estão relacionados as outras sujestões que você passou: char String1 [] = "Uma Empresa Construtora resolveu aumentar os salários de alguns"; Note a falta das chaves para início e fim, E onde você disse que no caso O mesmo pode ser feito para String2. Você Também disse que o meu for não esta fazendo loop, e que não está servindo para nada, então ignore ele e compile o programa para você ver o que acontece: //for (i = 0; i < 1; i++){ // Este for percorre cada posição na matriz Salario e permite que printf imprima seus valores //} Na minha opinião correta você só acertou nesta linha sujerida: int Salario[5] [2] = {{900},{1200},{1500},{1700},{1900}}; Assim eu havia declarado: int Salario[5] [5] = {{900},{1200},{1500},{1700},{1900}};E como sou educado e gosto do que é certo vou editar o código colocando esta sua sujestão correta.Me desculpe más seus comentários não ajudaram em nada.ABRAÇOS. Edited September 2, 2012 by roccoC/C++ Quote Link to comment Share on other sites More sharing options...
0 Marcelo Utikawa da Fonseca Posted September 3, 2012 Report Share Posted September 3, 2012 Olá roccoEu não havia compilado pois em casa eu uso apenas o linux para programar. Por isso que poderia haver algum engano como realmente houve.No vetor Profissionais eu havia dito para ser Profissionais[9][] e não apenas Profissionais[9]. De qualquer forma o correto seria *Profissionais[9] ou mesmo *Profissionais[]. Isso acontece pois me esqueci que apenas a primeira dimensão pode ser indefinida. Normalmente eu uso ponteiros como eu falei agora então por isso que me confundi.Quanto às minhas outra recomendações, estão corretas.Sobre String1 e String2: as chaves não são necessárias. Você utilizaria as chaves apenas se fosse colocar caracter por caracter como abaixo:char String[] = { 'r', 'o', 'c', 'c', 'o', 0 }; Se for atribuir a string diretamente, não precisa. Talvez o erro que ocorreu com String1 e String 2 é que, como passou a ser um vetor simples, você deveria ter alterado seu printf de: textcolor(LIGHTBLUE);gotoxy(8,10); printf("%s", String1 [0]); textcolor(LIGHTBLUE);gotoxy(8,11); printf("%s", String2 [0]); Para: textcolor(LIGHTBLUE);gotoxy(8,10); printf("%s", String1 ); textcolor(LIGHTBLUE);gotoxy(8,11); printf("%s", String2 ); Sobre o for, realmente não faz loop. Veja seu for: for (i = 0; i < 1; i++){Você inicializa o i com zero e fala para ocorrer o loop enquanto i for menor do que 1, ou seja, executa apenas 1 vez.O erro que você comentou que ocorre se tira o for é que, quando você comentou ele, a variável i deixou de ter seu valor carregado em zero e esse é que foi o problema.Retire o for mas carregue zero em i e verá que funciona normalmente...E como eu disse, são recomendações para melhorar seu programa.Se não ajudei, desculpe!Abraços,Marcelo Utikawa da Fonseca Quote Link to comment Share on other sites More sharing options...
0 roccoC/C++ Posted September 3, 2012 Author Report Share Posted September 3, 2012 é, não ajudou, programo assim, assim aprendi, nunca entrei em forum algum pedindo ajudame viro sozinho por aqui, eu e Deus, e meus códigos são 100% funcionais. Antes de você fazer comentáriosprocure ter certeza absoluta no que você escreve, eu me responsabilizo pelo que posto, não sou de blá -blá -blá,e não colo pesquisa de internet, posto o que sei, e o que posso provar. Estive ontem muito ocupado preparando um novo código,e acredito que ele é ainda melhor que este, em breve estarei postando. Quote Link to comment Share on other sites More sharing options...
Question
roccoC/C++
Progrma Vetores Vem mostrando aos iniciantes em linguagem c como declarar, inicializar e utilizar
um conjunto de strings e de dígitos, armazenados numa variável para vetor, e isto eu mostro na prática.
Note que estes dígitos referido são os salários dos profissionais citados no vetor de string, Note também que eu
os declarei como global, sendo assim, é permitido o uso em qualquer outra parte do código, inclusive sub - algorítimos.
Este programa é simples más me custou muitas horas para deixá - lo funcionando perfeitamente como está.
Você verá algumas linhas em comentários, deixei assim de propósito para que o leitor programador possa está fazendo
testes em seus códigos. A IDE usada foi Visual Studio 2010 Ultimate, que apresentou 3 warnings, habituais, no eclipse, também
foi testado e rodou liso, leso e solto sem nenhum impedimento, portanto aproveite bem o código que é 100% funcional
como todos os outros que aqui postei, aliás só posto o que sei fazer, e o que sei fazer, compartilho com todos os amantes de linguagem c.
"Como não sabia que aquilo era impossível de fazer, foi lá e fez."
http://codigosfontes-ccplus-plus.blogspot....ma-vetores.html
Edited by roccoC/C++Link to comment
Share on other sites
4 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.