Ir para conteúdo
Fórum Script Brasil
  • 0

PROGRAMA VETORES


roccoC/C++

Pergunta

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

Editado por roccoC/C++
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

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

Link para o comentário
Compartilhar em outros sites

  • 0

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.

Editado por roccoC/C++
Link para o comentário
Compartilhar em outros sites

  • 0

Olá rocco

Eu 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

Link para o comentário
Compartilhar em outros sites

  • 0

é, não ajudou, programo assim, assim aprendi, nunca entrei em forum algum pedindo ajuda

me viro sozinho por aqui, eu e Deus, e meus códigos são 100% funcionais. Antes de você fazer comentários

procure 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.

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...