Pode me ajudar a resolver essa questao de linguagem c, nao consigo resolver essa questao, revisao pa

1. Pode me ajudar a resolver essa questao de linguagem c, nao consigo resolver essa questao, revisao pa

carssio da silva
carssio da silva

(usa Ubuntu)

Enviado em 14/05/2017 - 22:35h

Criar um programa que leia um conjunto de 10 valores e armazene-os em um matriz. Crie outra matriz cujos dados serão os dados da primeira matriz, porém em ordem inversa à ordem de de leitura. Alguem pode me ajudar nessa questao, eu nao entendi



#include <stdio.h>
int main(void)
{
int a, b;
int matriz1[10]={1,2,3,4,5,6,7,8,9,10};
int matriz2[10]={10,9,8,7,6,5,4,3,2,1};

for (b = 1; b >= 10; b++)

printf("%d\n", valores);
for (a = 1; b >= 10; a--)
printf("%d\n", matriz2[a]);

}

}


  


2. Re: Pode me ajudar a resolver essa questao de linguagem c, nao consigo resolver essa questao, revisao pa

Paulo
paulo1205

(usa Ubuntu)

Enviado em 14/05/2017 - 23:54h

No programa que você mostrou, você não leu nada, e ainda errou no segundo laço de repetição.

O enunciado me parece bem claro: você cria dois arrays de mesmo tamanho, lê os valores que vão ocupar os elementos do primeiro array, e depois copia esses elementos para o segundo, mas dispondo na ordem inversa à do primeiro (por exemplo: o primeiro elemento do array 1 fica na última posição do array 2; o 2º do array 1 na penúltima do array 2; ... ; até que o último do array 1 fique na primeira do array 2).


3. Re: Pode me ajudar a resolver essa questao de linguagem c, nao consigo resolver essa questao, revisa

Vinicius Araujo Lopes
viniciusalopes

(usa Ubuntu)

Enviado em 15/05/2017 - 00:01h

Opa!
Passo 1: Declare os vetores inteiros, com 10 posições cada;
Passo 2: Execute um laço de repetição até 10, lendo a cada passo um numero; Durante a execução do laço, salve o numero lido na primeira posição livre na matriz1 e na última posição livre na matriz2;
Passo 3: Execute outro laço de repetição, até 10, escrevendo os valores da matriz1;
Passo 4: Execute outro laço de repetição, até 10, escrevendo os valores da matriz2;

Só isso.
/******************************************************************************
** AUTOR....: Viniciusalopes **
** DATA.....: 14/05/2017 **
** OBJETIVO.: Criar um programa que leia um conjunto de 10 valores e **
** armazene-os em um matriz. **
** Crie outra matriz cujos dados serão os dados da primeira **
** matriz, porém em ordem inversa à ordem de de leitura. **
******************************************************************************/


#include<stdio.h> //biblioteca padrao de entrada/saida
#include<stdlib.h> //biblioteca para manipulacao de tela

int main(void){
system("clear"); //Limpar a Tela

int i, matriz1[10], matriz2[10]; // Declaração das matrizes

for(i=0;i<10;i++){
printf("Digite o %dº número: ", i+1);
scanf("%d", &matriz1[i]); // Lê o valor digitado e salva na matriz1[posicao i]
matriz2[9-i] = matriz1[i]; // Copia o valor da matriz1[posicao i] para a matriz2[posicao 9-i]
}

// Exibe o conteudo da matriz1
printf("\nMatriz 1: ");
for(i=0;i<10;i++){
printf("[%d] ", matriz1[i]);
}

// Exibe o conteudo da matriz2
printf("\nMatriz 2: ");
for(i=0;i<10;i++){
printf("[%d] ", matriz2[i]);
}

printf("\n------\n Fim.\n------\n");

}

Saída:
Digite o 1º número: 1
Digite o 2º número: 2
Digite o 3º número: 3
Digite o 4º número: 4
Digite o 5º número: 5
Digite o 6º número: 6
Digite o 7º número: 7
Digite o 8º número: 8
Digite o 9º número: 9
Digite o 10º número: 0

Matriz 1: [1] [2] [3] [4] [5] [6] [7] [8] [9] [0]
Matriz 2: [0] [9] [8] [7] [6] [5] [4] [3] [2] [1]
------
Fim.
------


 __________________________________
/ Apresente soluções! \
| Opiniões não resolvem problemas. |
| |
\ --Viniciusalopes /
---------------------------------
\ ^__^
\ (oo)\_______
(__) )/\/
||----w |
|| ||



4. Re: Pode me ajudar a resolver essa questao de linguagem c, nao consigo resolver essa questao, revisao pa

Paulo
paulo1205

(usa Ubuntu)

Enviado em 15/05/2017 - 10:02h

viniciusalopes escreveu:

 __________________________________
/ Apresente soluções! \
| Opiniões não resolvem problemas. |
| |
\ --Viniciusalopes /
---------------------------------
\ ^__^
\ (oo)\_______
(__) )/\/
||----w |
|| ||


Prezado Vinícius,

Nunca vi voce por aqui, então imagino que você seja relativamente novo na área.

Nesta comunidade, nós geralmente não incentivamos que se entreguem respostas prontas a exercícios ou trabalhos de outras pessoas. Em lugar disso, nós geralmente estimulamos a pesquisa por conta própria, após algumas dicas que orientem alguém que esteja completamente perdido a pelo menos seguir numa direção específica, mas caminhando com as próprias pernas.

É aquele velho cliché, de ensinar a pescar em vez de dar o peixe. Mas esse ditado, mesmo sendo batido, está mais verdadeiro que nunca, numa época em que Google e seus genéricos, redes sociais e IOT vem deixando as pessoas cada vez mais viciadas em soluções rápidas e fáceis.

Em tempo: você notou que seu programa não faz exatamente o que foi pedido? É verdade que ele faz mais (e, na minha opinião, melhor) do que o que foi pedido. Contudo, minha experiência acadêmica é de que o melhor é se ater ao que o enunciado pede: se ele pede para ler um array (i.e. todos os seus elementos) e depois pede para montar o array invertido, o melhor é fazer o que foi pedido, em lugar de mesclar a montagem do array invertido com a do array original. E isso não é só porque o professor ou monitor que vai corrigir o trabalho espera que você faça dessa forma (por cabeça-dura ou por ignorância -- eu tive um monitor de Prog.I, que corrigia os trabalhos, que era bem fraquinho), mas também porque é mais fácil modularizar tarefas separadas.

Como modularização é uma ferramenta de Engenharia de Software que ajuda na diminuição de custos e de desenvolvimento e de manutenção de software, e ainda possibilita o trabalho mais eficiente e em paralelo, é interessante criar desde cedo a cultura de modularidade. Nos domínios específicos em que o desempenho é o fator mais importante do programa (como HPC ou RT), a ponto de justificar a quebra de modularidade, certamente um bom programador aprenderá as técnicas desses domínios.


5. Re: Pode me ajudar a resolver essa questao de linguagem c, nao consigo resolver essa questao, revisa

Vinicius Araujo Lopes
viniciusalopes

(usa Ubuntu)

Enviado em 16/05/2017 - 00:35h

paulo1205 escreveu:
 __________________________________
/ Apresente soluções! \
| Opiniões não resolvem problemas. |
| |
\ --Viniciusalopes /
---------------------------------
\ ^__^
\ (oo)\_______
(__) )/\/
||----w |
|| ||


ANTES DE MAIS NADA: Já é a segunda vez que interpretam mal minha vaquinha... ISSO NÃO É um ataque pessoal.
É apenas a minha assinatura do VOL. Está no final de todos os meus posts.
Acontece que pessoas que costumam opinar geralmente se incomodam com a minha frase de assinatura... mas nunca foi nada pessoal contra ninguém. É SIMPLESMENTE O QUE EU PENSO!

paulo1205 escreveu:
Nunca vi voce por aqui, então imagino que você seja relativamente novo na área.

R: Se ao dizer 'área', se refere à GNU/Linux, sim, sou novo, afinal comecei a utilizar a partir do ano de 2009.
Se ao dizer 'área', se refere ao VOL, aí já não sou tão novo na área assim... ao menos tenho mais tempo de cadastro que você. Quando você se cadastrou (24/02/2012) eu já estava aqui há exatos 2 anos, pois me cadastrei em 14/02/2010.


paulo1205 escreveu:
Nesta comunidade, nós geralmente não incentivamos que se entreguem respostas prontas a exercícios ou trabalhos de outras pessoas. Em lugar disso, nós geralmente estimulamos a pesquisa por conta própria, após algumas dicas que orientem alguém que esteja completamente perdido a pelo menos seguir numa direção específica, mas caminhando com as próprias pernas.

R: Vocês não incentivam a entrega de respostas prontas, e eu respeito isso. Mas sinto lhe informar que você não fala por todos, visto que eu também faço parte da comunidade, e não compartilho da mesma postura.
EU, posto respostas prontas, para que a pessoa entenda como se faz, a partir do código. O entendimento do funcionamento do código pronto também é uma técnica didática, próxima do que chamamos de ENGENHARIA REVERSA.
Aprendi muito lendo e entendendo códigos prontos.
Ou seja, não concordo com a maioria, e espero que respeitem minha postura.

paulo1205 escreveu:
É aquele velho cliché, de ensinar a pescar em vez de dar o peixe. Mas esse ditado, mesmo sendo batido, está mais verdadeiro que nunca, numa época em que Google e seus genéricos, redes sociais e IOT vem deixando as pessoas cada vez mais viciadas em soluções rápidas e fáceis.

R: Disseste bem: velho cliché(...)batido. As pessoas da época atual buscam soluções rápidas e fáceis.
EU, apresento soluções. Não pretendo ensinar nada, mas sim resolver problemas, assim como a IOT.

paulo1205 escreveu:
Em tempo: você notou que seu programa não faz exatamente o que foi pedido? É verdade que ele faz mais (e, na minha opinião, melhor) do que o que foi pedido. Contudo, minha experiência acadêmica é de que o melhor é se ater ao que o enunciado pede: se ele pede para ler um array (i.e. todos os seus elementos) e depois pede para montar o array invertido, o melhor é fazer o que foi pedido, em lugar de mesclar a montagem do array invertido com a do array original.

R: Notei sim, mas minha experiência profissional é de que o melhor é entregar ao cliente mais do que foi pedido. Surpreendê-lo!
Meu código entrega o mesmo RESULTADO, com menos processamento (afinal ele executa apenas um laço).
Em um programa pequeno não faz diferença mas, minha experiência profissional é de que, em um banco de dados com 200 tabelas e mais de 3.000.000 de tuplas, um laço a mais pode comprometer o funcionamento de um servidor, dependendo do caso.
Profissionais que se atém apenas ao enunciado, são profissionais limitados.
Os profissionais de verdade se destacarão pela capacidade de pensar e entregar soluções melhores que as solicitadas, de forma rápida, fácil, eficaz e eficiente.



paulo1205 escreveu:
(...)é mais fácil modularizar tarefas separadas.

Como modularização é uma ferramenta de Engenharia de Software que ajuda na diminuição de custos e de desenvolvimento e de manutenção de software, e ainda possibilita o trabalho mais eficiente e em paralelo, é interessante criar desde cedo a cultura de modularidade. Nos domínios específicos em que o desempenho é o fator mais importante do programa (como HPC ou RT), a ponto de justificar a quebra de modularidade, certamente um bom programador aprenderá as técnicas desses domínios.

R: Modular seria OUTRA solução. mas para quem está aprendendo seria mais complicado entender o funcionamento de um código cheio de PPRs, PPVs, funções, métodos, etc.

 __________________________________
/ Apresente soluções! \
| Opiniões não resolvem problemas. |
| |
\ --Viniciusalopes /
---------------------------------
\ ^__^
\ (oo)\_______
(__) )/\/
||----w |
|| ||



6. Re: Pode me ajudar a resolver essa questao de linguagem c, nao consigo resolver essa questao, revisa

Paulo
paulo1205

(usa Ubuntu)

Enviado em 16/05/2017 - 11:47h

viniciusalopes escreveu:

ANTES DE MAIS NADA: Já é a segunda vez que interpretam mal minha vaquinha... ISSO NÃO É um ataque pessoal.
É apenas a minha assinatura do VOL. Está no final de todos os meus posts.
Acontece que pessoas que costumam opinar geralmente se incomodam com a minha frase de assinatura... mas nunca foi nada pessoal contra ninguém. É SIMPLESMENTE O QUE EU PENSO!


Ninguém disse que é pessoal. Eu mantive essa parte da sua mensagem na minha resposta porque ela funciona como um símbolo daquilo que você fez, dar a resposta de bandeja -- algo que a comunidade “C / C++” do VoL historicamente repudia, como você poderá facilmente constatar pelo histórico do fórum.

Também muito interessante do ponto de vista simbólico é a citação de si mesmo, num contexto totalmente relacionado ao que você tinha acabado de fazer.

paulo1205 escreveu:
Nunca vi voce por aqui, então imagino que você seja relativamente novo na área.

R: Se ao dizer 'área', se refere à GNU/Linux, sim, sou novo, afinal comecei a utilizar a partir do ano de 2009.
Se ao dizer 'área', se refere ao VOL, aí já não sou tão novo na área assim... ao menos tenho mais tempo de cadastro que você. Quando você se cadastrou (24/02/2012) eu já estava aqui há exatos 2 anos, pois me cadastrei em 14/02/2010.


Não. Eu me referia à comunidade “C / C++” do VoL, na qual você nunca havia postado anteriormente.

Mas você também parece ser relativamente novo no Fórum do VoL em geral. Mesmo tendo uma conta criada em 2010, todas as 81 postagens no fórum do VoL (até as 09:50 de hoje) listadas pelo seu perfil público são do ano de 2017. E dessas 81 postagens, havia apenas duas na comunidade “C / C++”: exatamente as duas deste tópico.

R: Vocês não incentivam a entrega de respostas prontas, e eu respeito isso. Mas sinto lhe informar que você não fala por todos, visto que eu também faço parte da comunidade, e não compartilho da mesma postura.


Eu falo como moderador da comunidade “C / C++”, de comum acordo com outros moderadores da comunidade, e num espírito compartilhado pela maioria dos membros de longa data. E esse princípio está expresso claramente no texto descritivo da comunidade, nos seguintes termos (com grifos meus).

Atenção ao fato de que a comunidade repudia práticas ilegais e antiéticas, tais como pirataria, invasão não-autorizada de sistemas ou atendimento de pedidos de respostas prontas a trabalhos, testes e exercícios escolares.


Então, meu caro, eu não estou inventando nada novo contra você.

EU, posto respostas prontas, para que a pessoa entenda como se faz, a partir do código. O entendimento do funcionamento do código pronto também é uma técnica didática, próxima do que chamamos de ENGENHARIA REVERSA.


Engenharia reversa é outra coisa, praticada por quem necessariamente conhece as ferramentas e técnicas básicas, a fim de compreender o funcionamento de um mecanismo específico. Não é o contexto de um novato, que está enrolado com as próprias ferramentas básicas.

Aprendi muito lendo e entendendo códigos prontos.


Idem. Mas o caso é de linguagem. Assim como se aprendem as línguas naturais (Português, Inglês, Mandarim ou qualquer outro idioma) por imitação e prática, o mesmo é verdadeiro com linguagens de programação.

Outro ponto relevante, particularmente no caso de programação, e possivelmente com um grau de importância um pouco diferente do que nas linguagens naturais, é que a linguagem em si não é tão importante quanto aquilo que se está tentando expressar, isto é, os passos individuais a serem tomados para construir um algoritmo, o qual, depois de pronto, pode ser expresso em qualquer linguagem, natural ou de máquina.

A organização mental para saber arrumar essas coisas não se adquire por engenharia reversa, mas muito mais por ensino, orientação bem dada, pela prática, pela apresentação de alternativas, com o estudo de vantagens e desvantagens de cada uma, e ainda conta com um componente importante, ainda que não-essencial, do talento e da afinidade para esse tipo de atividade.

Ou seja, não concordo com a maioria, e espero que respeitem minha postura.


As regras desta comunidade já estavam dadas antes de você participar dela. Você diz que respeita, mas exige o direito de fazer diferente daquilo que a maioria espera que todos façam, em nome da boa convivência no longo prazo.

O tipo de acordo que se tem nesta comunidade específica não é diferente do que você vai encontrar em outro locais da Internet: a maioria dos fóruns de programação não vê com bons olhos os pedidos e a entrega de respostas prontas, preferindo apontar caminhos em lugar de resolver problemas, para estimular o crescimento que pode fazer a diferença entre o programador hábil e um que copia e cola código alheio.

Experimente chegar no Stack Overflow -- para falar de um fórum de programação famoso -- e comece a entregar respostas prontas. E experimente ainda exigir o direito de se manter fazendo assim. Se o fizer, certamente vai tomar reprimendas públicas e duras, vai ser mal avaliado, e vai acabar sofrendo banimento.

R: Disseste bem: velho cliché(...)batido. As pessoas da época atual buscam soluções rápidas e fáceis.


Por “batido”, eu quis dizer simplesmente que é antigo. Mas não é ultrapassado, e muito menos falso. Como eu disse, é “mais verdadeiro que nunca”.

Quanto a todo mundo querer soluções rápidas e fáceis, eu mesmo disse isso. Mas eu critico esse imediatismo, principalmente quando ele é usado pela simples preguiça de estudar ou de pensar.

EU, apresento soluções. Não pretendo ensinar nada, mas sim resolver problemas, assim como a IOT.


Isso entra em tensão com o que você escreveu acima, quando disse que posta soluções “para que as pessoas entendam como se faz”, defendendo que seria uma “técnica didática”. Fazer entender por meio de didática soa muito parecido com ensinar.

R: Notei sim, mas minha experiência profissional é de que o melhor é entregar ao cliente mais do que foi pedido. Surpreendê-lo!


A academia não é o mercado.

Eu fui bem claro quando falei que existem professores que exigem que faça o que foi pedido. E eu falei e falo tanto por experiência própria quanto pelo que já ouvi de terceiros em fóruns como este. Por exemplo, eu tive professor cabeça-dura que me tirou ponto na prova porque eu não dispus visualmente o código em Pascal do jeito como ele o teria disposto, mesmo funcionando de modo 100% correto. No mesmo semestre, meu monitor de Prog. I simplesmente não sabia programar (repetiu Prog. II enquanto era meu monitor de Prog. I, e depois, quando fez Prog. II junto comigo, estava se afundando de novo). Como eram os monitores que “corrigiam” os trabalhos feitos no laboratório, ele tirava pontos dos programas que não entendia (e eu suspeito que, nos últimos programas do semestre, ele simplesmente atribuía notas aleatórias, independentes inclusive de se os programas produziam resultados corretos ou não).

Pelo que várias pessoas relatam aqui e alhures, esse meu professor e o monitor não são raridades.

Profissionais que se atém apenas ao enunciado, são profissionais limitados.


Eu não sugeri que o profissional se ativesse ao enunciado. Até porque um profissional analista de sistemas não é um mero programador, que codifica aquilo que o cliente pede. O bom analista compreende o negócio do seu cliente, e o ajuda a refinar seus processos. Em vez de codificar a ineficiência do cliente, a fim de que ele produza mais ineficiência de modo informatizado, o bom analista elimina as ineficiências no sistema que vai entregar, melhorando os processos do cliente. E cobra por isso.

Eu sugeri que um aluno talvez não deva querer divergir do professor. Depois de lançada a nota, aí, sim, ele é livre. Antes, depende de alguém, que pode ser muito menos capaz do que ele próprio, para determinar seu progresso rumo ao futuro.

Os profissionais de verdade se destacarão pela capacidade de pensar e entregar soluções melhores que as solicitadas, de forma rápida, fácil, eficaz e eficiente.


O que você chama de “profissionais de verdade”? Aqueles de carne e osso, ou aqueles do mundo ideal?

Mesmo no mercado, você tem de ser realista. Não sei que tipo de profissional você é ou em qual empresa trabalha. Talvez você seja dono do seu próprio negócio e seja um profissional com a rara habilidade de nunca se enrolar com prazos apertados, orçamentos estourados, equipes inconstantes.

Se você não for tão diferente da maioria, entregar mais do que o cliente pediu pode ser simplesmente trabalhar de graça.

R: Modular seria OUTRA solução. mas para quem está aprendendo seria mais complicado entender o funcionamento de um código cheio de PPRs, PPVs, funções, métodos, etc.


Concordo. E será mais complicado se o aprendiz não aprender a, desde cedo, dividir bem tarefas distintas. Se ele já tiver uma mente que sabe compartimentalizar, a modularização será mais fácil de assimilar. E a orientação a objetos será mais fácil de assimilar. E programação funcional será mais fácil de assimilar. E a programação orientada a eventos será mais fácil de assimilar.

E não há nenhuma originalidade nisso, nem é uma questão de opinião. Basta olhar para a história das técnicas e linguagens de programação.


7. Re: Pode me ajudar a resolver essa questao de linguagem c, nao consigo resolver essa questao, revisa

Vinicius Araujo Lopes
viniciusalopes

(usa Ubuntu)

Enviado em 16/05/2017 - 17:56h

paulo1205 escreveu:
Eu falo como moderador da comunidade “C / C++”, de comum acordo com outros moderadores da comunidade, e num espírito compartilhado pela maioria dos membros de longa data. E esse princípio está expresso claramente no texto descritivo da comunidade, nos seguintes termos (com grifos meus).

Atenção ao fato de que a comunidade repudia práticas ilegais e antiéticas, tais como pirataria, invasão não-autorizada de sistemas ou atendimento de pedidos de respostas prontas a trabalhos, testes e exercícios escolares.


Então, meu caro, eu não estou inventando nada novo contra você.


Neste ponto, especificamente, você tem razão. Está bem claro no descritivo e, contra fatos não há argumentos.
O restante do texto trata de suas opiniões sobre diversos assuntos, e neste caso, não estou disposto estender a discussão.
Obrigado!

 __________________________________
/ Apresente soluções! \
| Opiniões não resolvem problemas. |
| |
\ --Viniciusalopes /
---------------------------------
\ ^__^
\ (oo)\_______
(__) )/\/
||----w |
|| ||







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts