Iniciante C/ Problema com Vetor  XML
Índice dos Fóruns » Outras Linguagens
Autor Mensagem
cristhianetais
Entusiasta Java

Membro desde: 17/11/2010 11:32:06
Mensagens: 23
Offline

Oi Pessoal,
Sou nova aqui no fórum e gostaria muito de contar com a gentileza e ajuda de vocês.
Estou fazendo uma cadeira de algoritmo na faculdade e estou com dificuldade num exercício que segue abaixo:
Escreva um programa que crie um vetor (com 10 ocorrências), com números inteiros e aleatórios
entre 1 e 6.
Crie um segundo vetor (com 6 ocorrências) que deverá armazenar, na ocorrência
correspondente a cada número, quantas vezes este aparece no primeiro vetor.

Esse foi o codigo que fiz até agora... mas o segundo vetor não conta o conteúdo do primeiro.

Me ajudem.... PLEASE !!!

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>


main()
{
clrscr();
int vet[10], vet2[6], i, j, cont=0;
randomize();


printf("\nNumeros sorteados entre 1 a 6:");
printf("\n\n");
for(i = 0; i < 10; i++)
{
vet[i] = ((rand() % 6) + 1);
printf("%d\t", vet[i]);
}

printf("\n\n");
for(i = 0; i < 6; i++)
{
for(j = 0; j < 10; j++)
{
if(vet[i] == vet[j])
{
cont++;
}
vet2[i] = cont;

}
}

for(i = 0; i < 6; i++)
{
printf("%3d\t", vet2[i]);
}

getch();
}
[Thumb - Screenshot_2010-11-17_11-40-53.jpg]
 Nome do arquivo Screenshot_2010-11-17_11-40-53.jpg [Disk] Download
 Descrição Exemplo
 Tamanho 14 Kbytes
 Baixado:  33 vez(es)

[Email] [MSN]
entanglement
GUJ Hacker

Membro desde: 26/09/2009 09:18:56
Mensagens: 5750
Offline

Tio, seu problema com contagens é de algoritmo, não de programação.
Além disso, nomes bons para as variáveis ajudam a programar melhor. vet1 e vet2 são nomes de clínicas veterinárias . Use nomes como "entrada" e "contagem".

Vamos fazer isso no papel, que ele aceita melhor as coisas.

Pra começar, vamos criar um vetor com 6 posições, e preenchê-las com 0.

0 0 0 0 0 0

A seguir, vamos percorrer o tal vetor de entrada ( 4 3 1 3 6 5 3 4 1 5 )
Pegamos o valor 4. Então incrementamos a 4a. posição do vetor de 6 posições (ou seja, o elemento [3]. Fica então:

0 0 0 1 0 0

A seguir, pegamos o valor 3. Então incrementamos a 3a. posição (o elemento [2]). Fica:

0 0 1 1 0 0

Vá fazendo isso até chegar ao final. Deve ficar algo como:

2 0 3 2 2 1

Que era o tal resultado esperado.


cristhianetais
Entusiasta Java

Membro desde: 17/11/2010 11:32:06
Mensagens: 23
Offline

entanglement,

Pra começar é TIA,

Desculpa, mas acho que não leu o enunciado do exercício... Numeros aleatórios....

E não entendi o exemplo que tu deu... que tem problema de algoritmo é verdade... mas minhas variaveis acredito que mudar agora só iria me confundir mais, pois como coloquei no assunto no tópico sou uma mera iniciante.

Alguém que saiba explicar poderia me ajudar?

This message was edited 1 time. Last update was at 17/11/2010 13:22:06

[Email] [MSN]
entanglement
GUJ Hacker

Membro desde: 26/09/2009 09:18:56
Mensagens: 5750
Offline

Dona Cris,

Desculpe eu não ter reparado que seu nome é Cristhiane Taís. É que normalmente eu desligo os avatares (por exemplo, nem sei se você usa um avatar ou não) e não vejo o nome até para ser o mais imparcial possível. Imagine se eu resolvesse não responder só porque o nick do rapaz é "satan665+1" ou coisa parecida

Sim, eu sei que são números aleatórios.

Mas para você entender o algoritmo, eu usei aqueles números que você pôs naquela figura.

Pra começar, uma forma de resolver problemas é você quebrar o problema em pedaços. (O famoso método "Jack o Estripador"). A seguir, resolver cada pedaço separadamente, e depois (com um pouco de sorte), juntar os pedaços (às vezes fica igual a um Frankenstein, mas isso é outra história).

Então seu problema, por exemplo, pode ser quebrado em:

a) Gerar os números aleatórios (isso você deve ter feito direitinho, não vi seu código com muita atenção).
b) Zerar o vetor de contagens.
c) Efetuar a contagem dos números, como o algoritmo que mostrei acima.
entanglement
GUJ Hacker

Membro desde: 26/09/2009 09:18:56
Mensagens: 5750
Offline

Vou dar um exemplo de como você poderia resolver esse problema. (O meu compilador não tem conio.h , portanto talvez você tenha de corrigir alguma coisa ).
Só 2 minutos.
getAdicted
Virtual Machine Man
[Avatar]

Membro desde: 07/09/2010 13:49:22
Mensagens: 556
Offline

Olá Chris,

O entanglement irá resolver seu problema, esse site, eu acredito, deva ser muito útil a você como foi para mim: http://www.cplusplus.com/reference/clibrary/

[]'s

--
Desenvolvedor de Sistemas
Cursando Bacharelado em Análise de Sistemas e Tecnologia da Informação pela Faculdade de Tecnologia de São Paulo
entanglement
GUJ Hacker

Membro desde: 26/09/2009 09:18:56
Mensagens: 5750
Offline



O lugar onde você usou "randomize" eu usei "srand (time (NULL))", mas é porque meu compilador não tem conio.h. Esteja à vontade para mudar.
cristhianetais
Entusiasta Java

Membro desde: 17/11/2010 11:32:06
Mensagens: 23
Offline

entanglement

Desculpa se fui ríspida demais (e sei que fui). Mas só queria uma explicação que eu entendesse e não algo como se eu tivesse que nascer sabendo... como se fosse uma obrigação. Como disse, estou engatinhando na linguagem C e em algoritmos, e por vezes, quando necessito de uma explicação, seja de professor, seja de alguém que já programa, estas pessoas acham tão bobas minhas dúvidas que me acho uma estúpida. Não sei se isso é normal... Mas vou ter que aprender a lidar com isso.

Bom, quanto ao código... Era isso mesmo e tinha razão quanto as variáveis também. Ficaram muito melhores de entender.

Deu certinho. Eu já tinha feito o código com esta linha:
contagem [n-1] = contagem [n-1] + 1;

Porém tentei zerar o cont do meu codigo e incremetando ele... o que não deu certo.

Não sei se me fiz entender....

Muito obrigado de coração... Passei uma semana fazendo esta pergunta a programadores que não me explicavam nada... Quase arrancando meus cabelos... pq quando não consigo resolver até o sono perco... heheh



This message was edited 1 time. Last update was at 17/11/2010 17:52:48

[Email] [MSN]
cristhianetais
Entusiasta Java

Membro desde: 17/11/2010 11:32:06
Mensagens: 23
Offline

getAdicted

Já estou entrando no site e colocando nos meus favoritos...

Pretendo seguir meus estudos e assim que melhorar em algoritmos pretendo começar a estudar outra linguagem: Java? PHP?

Ainda não sei. Aceito conselhos....

Abraço aí...
[Email] [MSN]
entanglement
GUJ Hacker

Membro desde: 26/09/2009 09:18:56
Mensagens: 5750
Offline

Na faculdade não dão Java não? Eu sou do tempo que Pascal era novidade, mas hoje em dia Java é quase onipresente nas faculdades.
cristhianetais
Entusiasta Java

Membro desde: 17/11/2010 11:32:06
Mensagens: 23
Offline

Algoritmo é C.
Java acho que só em estrutura de dados talvez. Só mais para frente...
E nas férias já quero começar a estudar algo mais, apesar de gostar bastante de C.

Tenho alguns livros de PHP em casa... Mas dizem que Java é mais promissor.
[Email] [MSN]
GradeBook
JavaChild

Membro desde: 08/07/2009 15:27:10
Mensagens: 142
Offline

cristhianetais wrote:
Como disse, estou engatinhando na linguagem C e em algoritmos, e por vezes, quando necessito de uma explicação, seja de professor, seja de alguém que já programa, estas pessoas acham tão bobas minhas dúvidas que me acho uma estúpida. Não sei se isso é normal... Mas vou ter que aprender a lidar com isso.


Oi Cristhiane

Você não é estúpida, suas dúvidas não são bobas. Você é uma iniciante com dúvidas de iniciante, só isso. O problema é que tem muita coisa pra se aprender em muito pouco tempo daí a matéria acaba sendo enfiada goela abaixo, você que se lasque pra aprender/acreditar no que está sendo dito.
Normal esse tipo de atitude não é mas acabou se tornando comum principalmente na internet.
sidzuza
Debugger
[Avatar]

Membro desde: 01/11/2008 22:36:37
Mensagens: 58
Offline

Oi Cris!

Provavelmente você vai ter Programação Orientada a Objetos em Java

Eles usam C para Algoritmos para o aluno não se perder nos conceitos de orientação a objetos e sim na lógica de programação. E pra isso, uma linguagem estruturada com o C é melhor.

Abraço!

"Uma lei imutável nos negócios é que palavras são palavras, explicações são explicações, promessas são promessas - mas somente o desempenho é realidade." - Harold S. Green
entanglement
GUJ Hacker

Membro desde: 26/09/2009 09:18:56
Mensagens: 5750
Offline

sidzuza wrote:Oi Cris!

Provavelmente você vai ter Programação Orientada a Objetos em Java

Eles usam C para Algoritmos para o aluno não se perder nos conceitos de orientação a objetos e sim na lógica de programação. E pra isso, uma linguagem estruturada com o C é melhor.

Abraço!


Se bem que nada impede o professor de começar direto com Java só que usando um monte de "static" pra lá e pra cá - se fizer isso, um programa Java fica igualzinho a um programa C, exceto pelo fato que você ainda é obrigado a alocar arrays com new em Java - infelizmente, não dá para escrever um programa em Java sem um único "new" se você tiver arrays no meio.
Uma coisa que acho terrível em C é que você fica brigando muito com bugs que simplesmente travam seus programas, e você fica sem absolutamente pista nenhuma para resolvê-los (nada de stack trace, etc.)
Isso é intolerável, em minha opinião.

This message was edited 1 time. Last update was at 18/11/2010 13:36:02

sidzuza
Debugger
[Avatar]

Membro desde: 01/11/2008 22:36:37
Mensagens: 58
Offline

Fala entanglement!

Então, eu disse pois comigo foi assim. Tive C em algoritmos mas não nos aprofundamos na linguagem. Os problemas que você citou não cheguei a ver, mas acredito que seja como disse.

Concordo em relação ao Java, mas aí confundiria legal a cabeça do aluno quando chegasse na linguagem Java de fato. E realmente o new do array ia quebrar as pernas

Abraço!

"Uma lei imutável nos negócios é que palavras são palavras, explicações são explicações, promessas são promessas - mas somente o desempenho é realidade." - Harold S. Green
 
Índice dos Fóruns » Outras Linguagens
Ir para:   
Powered by JForum 2.1.8 © JForum Team