Programar em C - Funções que Recebem Vetores como Argumento - Aula 36
HTML-код
- Опубликовано: 6 ноя 2024
- Quando uma função tem um vetor como parâmetro as coisas podem mudar um pouco. Nessa aula você verá funções que recebem vetores como argumento.
Se você estiver aprendendo com as vídeo aulas não deixe de curtir e favoritar o vídeo. Isso ajuda muito o canal a crescer! Valeu!!!
=========POSTE SUAS DÚVIDAS NO FÓRUM:========
goo.gl/bVuG6
===========CONECTE-SE COM O CANAL===========
FACEBOOK - DeAlunoParaAluno
Blog - dealunoparaalun...
TWITTER - AlunoParaAluno
GOOGLE + - goo.gl/rUJzN
=============================================
==============NOSSOS PARCEIROS==============
BLOG DE CÓDIGO:
Site - blogdecodigo.wo...
Facebook - BlogDeCodigo
BRASIL PENTEST
Site - brasilpentest.com/
Facebook - BrasilPentest
=============================================
Já estamos em 2021 e suas aulas quebraram um galho grande aqui com minhas atividades da faculdade! Muito obg cara! O seu trabalho atravessou quase uma década! Kkkkkkkkkkkkkkk
uma decada já , ta me salvando na mesma em 2023 kkkkk
@@matheusplazaCC mais então 2024 kkkkkkkkkkkkkkkk
meu deus eu simplesmente nao sei como agradecer a esse cara. eu não conseguia entender muito bem essa tecnica de flag de jeito algum, mas vc clareou minha cabeça de uma forma que pqp. sei que é simples mas programação é isso: as vezes vc se perde em topicos simples. obrigado cara!
Uma década depois e seus vídeos ainda são os melhores
nossa cara parabéns suas aulas tem me aberto a mento para o melhor entendimento tanto aqui na web aula quando na facul, ainda mais porque tenho uma parte em trabalho onde preciso criar uma função valeu mesmo cara ta de parabens
Meu prazer em ter ajudado :D
Caso precisa ver mais sobre comportamento de vetores e funções de uma checada nas listas de reprodução na página do canal ;)
Aula incrível!! estou aprendendo muito sobre a linguagem C com as suas aulas prof. Muito obrigado por compartilhar um conteúdo tão rico e acessível para todos!
Muito bom! Eu estava tendo um pouco de confusão na hora de passar vetores como parâmetros no C, mas essa aula me ajudou muito!
Gostei muito, esses vídeos ajuda muita gente a aprender a desenvolver programas de maneira simples, eficiente e objetiva. Parabéns.
Só tem uma observação importante: Nesse contesto, vetores são os elementos do array (assumindo que os itens da lista estão arranjados em linha). Portanto, passar a variável de nome vetor como argumento significa que você está passando um array. Contudo, se fosse passado como argumento o elemento vetor[i], necessariamente seria um vetor a ser passado como argumento. Um grande exemplo de se passar um vetor genérico como argumento para uma função escrita em linguagem C seria passar um apontador.
+RICARDO NEIVA realmente eu também aprendi a colocar o cabeçalho antes do main... Acho o correto o cabeçalho antes do Main.
Parabéns pelas aulas! Creio que assim com eu, esteja ajudando muita gente!
Valeu Lidiane!
exatamente ;) acho que 1 ou 2 aulas a frente vou flar sobre isso
eu vi..cara.. realmente sei código está 100%
o pior de tudo é que executei o seu código no Xcode e no Code Blocks e funcionou perfeitamente :/
Excelente aula! Li vários tutoriais e vídeos! este é um dos melhores! ^^
Além do que, quanto mais a gente pesquisa e estuda, mais fácil o conteúdo vai absorvendo na nossa mente com o tempo! parabéns pelo canal, tem me ajudado bastante a entender a lógica a ser utilizada :D
cara... vc no excel explicou o método da bolha e no código fez o método de seleção
Beleza! Já postei lá no forum o meu codigo, o topico tá com o titulo de: Problema com codigo da aula 36 - Linguagem C
Cara, muito obrigado pela ajuda. Seus vídeos são muito bons!! Tem a minha inscrição e os meus likes!!
cara no segundo for esta "j
hmm.... estranho.. tem como você postar seu código pra eu dar uma olhada.. é bem provável que tenha algo diferente haha :D
tente postar o código aqui no RUclips.. se não der certo poste no fórum(link na descrição)
aux = vetor[i];
vetor[i] = vetor[j];
vetor[j] = aux;
nessa parte uma analogia interessante seria usando copos, no caso a "temporaria" (que eu chamei de aux) seria um copo vazio.
Ola. Professor. Tem material desse curso disponível?
Maravilhoso
Parabéns cara, excelente aula
muito bom
aew! Parabéns cara!
Mano gostei muito, a sua didática é excelente!!!!
Parabéns pelas explicações, muito bom!! :)
PAASSEI GROSSI! E PASSEI BEM AINDA! TU É O CARA!
boa professor
Dúvida: existem duas funções neste exercício: main e ordemCrescente. A função ordemCrescente é chamada levando como um dos parâmetros o VETOR[10] = {6, 4, 1, 9, 8, 0, 5, 7, 3, 2}. Este vetor está DEFINIDO em MAIN. Como, após chamar ordemCrescente e reorganizar/alterar os valores dentro desta função, posso, dentro de MAIN, imprimir estes valores no laço for, sendo que VETOR[10] = {6, 4, 1, 9, 8, 0, 5, 7, 3, 2} não é estático? Essa estrutura (VETOR) já é estática por definição? Está implícito?
só coloquei um *#define** TAM* a mais...para nao precisar criar o *int n* e facilitar nas operações
Eu recebi algumas mensagens lá na página do Facebook pedindo pra usar Windows... Eu prefiro utilizar o Mac mas mudei apenas porque pediram pra mudar :/
E caso eu tenha uma função e queira retornar o vetor para a função principal? Como faço?
Deu certo! :)
Ei minha professora sempre pede pra gente gerar "randomicamente" os vetores usando a função, e outra pra mostrar o vetor, sao elas:
void GerarVetor(int Vet[], int Tam, int Div){
int i;
srand(time(NULL));//gerar a semente para a função rand() 0 a 32768
for(i=0;i
ìtalo eu aprendi na facul ao invés de declarar a função e depois chama-lá,chamo a função normal ai protótipo ela,ou seja declara todas as funções antes da função main.
Também faço assim, nunca lanço os protótipos dentro de outra função.
Como o vetor ordenado pela função conseguiu aparecer no main?
+Marcelo Silva é pq o vetor vai por referencia
a funçao foi chamada pelo main, ordenou o vetor, a main mostrou o vetor
Me desculpa pela dúvida irrelevante, mas por que você parou de usar o mac ?
mas porque os valores de vetores são alterados naquela função ? quando a gente envia o vetor estamos mandando o endereço de memoria do vetor ?
No meu compilador fica conflitando o i da função principal e da função ordemCrescente e ainda diz que n não tá declarado sendo que foi declarado na função principal e na própria função ainda, não entendo, talvez seja o compilador
podia ter sido uma função pra ordenar palavra
teria matado metade do meu trabalho de escola kkkkkk
mt boa as aulas, to vendo a playlist td
Italo, caso eu quisesse ordenar em ordem decrescente, seria necessário apenas modificar a condição do if para:
if (vetor[i] < vetor[j]) ? eu fiz apenas essa alteração e está exibindo vetor em ordem decrescente corretamente... no entanto, estou achando estranho que no for tudo permaneça igual...
Sim. Esta correto dessa forma, já que ele vai fazer no sentido contrário! O for deve permanecer de mesma forma já que ele ainda vai fazer a verificação do membro a frente e então colocá-lo dessa vez na ordem decrescente.
É possível retornar um vetor?
o meu deu um problema esquisito, enves de aparecer os numeros em ordem crescente, como foi proposto pelo programa, o meu apareceu escrito dez vezes "&i", sem as aspas, o que deve ser isso? Eu já verifiquei o codigo, vi se tava igual ao seu, e tava, então, eu não to entendendo o que pode estar acontecendo, se puder me ajudar, eu te agradeço muito, valeu! E, até mais!
Genial
aula 38 vai responder sua pergunta ;)
por que essa função nao retorna nada? não deveria retornar a variavel vetor?
no segundo for acho q ta errrado, devia ser:
for(j = i + 1; j < n+1; j++)
Wendell Andrade Creio que não, porque o vetor vai até 9, se você coloca n+1, o for vai buscar fora do vetor.
por que vc nao retorno nada na função ordem crescente?
Alguém me tira uma dúvida? qual a diferença entra uma função int/float, pra uma função void? Sos
Void=vazio. A funçao nao retorna nada. Em geral ela recebe os argumentos e os modifica sem precisar retornar. A int/float retorna valor do tipo int/float, nesse tipo de funcao ela recebe os argumentos e faz alguma coisa usando eles para "parir" um novo valor e este será retornado
Bem, não deu, vou postar lá no forum mesmo
#include
#include
#include
int main(void)
{
//Funções
setlocale(LC_ALL, "");
void ordenaVetor(int vetor[]);
//Vetor:
int vetor[10] = {4,8,9,3,5,7,2,1,6,10};
ordenaVetor(vetor);
for (int i = 0; i < 10; ++i){
printf("%i ", vetor[i]);
}
return 0;
}
//Função Ordenação de Vetores:
void ordenaVetor(int vetor[]) {
int suporte = 0;
for(int i = 0; i < 10; ++i){
for(int j = i+1; j < 10; ++j){
if(vetor[i] > vetor[j]){
suporte = vetor[i];
vetor[i] = vetor[j];
vetor[j] = suporte;
}
}
}
}
Essa é a técnica bubble short?
Sim, são bem parecidas e o conceito é o mesmo.
Meu código ta igual, porém não ordena, não sei pq, tentei fazer sem chamar a função e nada, uso o DEV pra compilar, acho que pode ser meu programa.
#include
int main(){
int vetor[10] = {6, 4, 1, 9, 8, 0, 5, 7, 3, 2};
int i;
void ordemCrescente(int vetor[], int n); // chamei a função
ordemCrescente(vetor, 10); // quanto passo o vetor, posso passar apenas o nome.
for (i = 0; i
Você escreveu
```
if (vetor[i] > vetor[i])
```
E deveria ser
```
if (vetor[i] > vetor[j])
```
Tenta aí e dá um retorno
Para que serve o, system("pause")
pra fazer com que o sistema pare o que ele estiver fazendo
Isso
olá!! para que criaar uma varoável temporária?
Economia de memoria e processamento. A variável não fica armazenada durante o programa todo, alias, o uso de variáveis globais em C aquelas que você cria lá no início, devem ser evitadas ao máximo.
A variável temporária nesse caso esta auxiliando na inversão dos valores, já que com apenas o vetor[i] e o vetor[j] não é possível fazer a inversão. Sendo necessário recorrer a uma nova variável para isto.
maluco me confundiu cara pq eu estudo ads porem as funçoes são todas fora do main agora fiquei loko ate rasguei o exercicio e o mesmo mas ainda nao sei faze funçao
+RICARDO NEIVA neste canal têm várias aulas diferentes, se você voltar na aula que fala sobre funções vai entender isso que te deixou doido.
fmz
socorro! O meu não pega e eu fiz igual ao da tela!
#include
int main (void){
int vetor[10]={1,4,3,2,5,6,7,8,9};
int i;
void ordemCrescente(int vetor[],int n);
ordemCrescente(vetor, 10);
for(i=0;i
Tem uma chave no 2ºFOR antes do IF que não era pra estar ali..
no meu dev c++ o código system("pause") n funciona
pra fazer funcionar é só colocar a biblioteca:
Gente eu copiei igual o código e não ta rodando:
# include
void ordemCrescente(int vetor[], int n){
int i, j, temporaria;
for (i = 0; i < n; ++i){
for (j = i+1; j < n; ++j){
if (vetor[i] > vetor[j]){
temporaria = vetor[i];
vetor[i] = vetor[j]; ]
temporaria = vetor[i];
}
}
}
}
int main (void){
int vetor[10] = {2, 3, 6, 4, 5, 9, 8, 1, 0, 7};
int i;
ordemCrescente(vetor, 10);
for (i=0; i
nessa parte:
temporaria = vetor[i];
vetor[i] = vetor[j]; ]
temporaria = vetor[i];
vc usou temporaria 2 vezes, na terceira troca por vetor[j] = temporaria;
q vai dar certo
e na segunda linha apague o ]
# include
void ordemCrescente(int vetor[], int n){
int i, j, temporaria;
for (i = 0; i < n; ++i){
for (j = i+1; j < n; ++j){
if (vetor[i] > vetor[j]){
temporaria = vetor[i];
vetor[i] = vetor[j]; ]
temporaria = vetor[i];
}
}
}
}
int main (void){
int vetor[10] = {2, 3, 6, 4, 5, 9, 8, 1, 0, 7};
int i;
ordemCrescente(vetor, 10);
for (i=0; i vetor[j]){
temporaria = vetor[i];
vetor[i] = vetor[j]; ]
temporaria = vetor[i];
}
}
}
}
int main (void){
int vetor[10] = {2, 3, 6, 4, 5, 9, 8, 1, 0, 7};
int i;
ordemCrescente(vetor, 10);
for (i=0; i
volta pelo amor de Deus
Esse simbolo [ ] não é chave e sim colchete. Isso é chave { }.
alguem poderia me dizer o que deu de errado
#include
#include
#include
int main(void){
int vetor[10] = {5, 6, 0, 2, 8, 1, 3, 9, 4, 7};
int i;
void ordemcrecente(int vetor[], int n);
ordemcrecente(vetor, 10);
for(i = 0; i < 10; ++i){
printf("%i", vetor[i]);
}
getch();
return 0;
}
void ordemcrecente(int vetor[], int n){
int i, j, temporaria;
for(i = 0; i < n; ++n){
for(j = i + 1; j < n; ++j){
if(vetor[i] > vetor[j]){
temporaria = vetor[i];
vetor[i] = vetor[j];
vetor[j] = temporaria;
}
}
}
return 0;
}
Lucas tira o getch();
e no primeiro for de ordenação vc colocou ++n
seria ++i
como vc deve estar usando windows antes do return 0 da função principal use o system ("pause"); e retira esse return 0; da função de ordenação
Espero que eu tenha respondido a tempo e que tenha dado para entender
abraço.
Danilo Brito valeu
Bubble Sort
for(i=0;i