Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá !
Galera,estou com uma dúvida.Tenho um exercio de C para fazer e nele eu tenho que gerar números aleatorios inteiros e alguns números aleatorios negativos além de ordenalos.
Consigo gerar normalmente os números positivos,porém ainda não obtive sucesso em gerar os números negativos,alguém poderiem e ajudar nisso? Tenho que gerar números entre -10 e 390.
Abraços o/
Para gerar, você pode utilizar a função rand da stdlib. E para tranformar em negativo, multiplique por (-1).
Mais ai ele vai transformar o número gerado em negativo.Neste caso que propus,ele já teria que ser gerado negativo e entre -10 até 0.
Abraços! o/
Encontrei um post no Clube do Hardware que aborda este assunto.
Veja se o ajuda:
http://forum.clubedohardware.com.br/funcao-rand-gere/810851?s=d819f786b8702c8e190412a595560e5a&
>
Encontrei um post no Clube do Hardware que aborda este assunto.
Veja se o ajuda:
http://forum.clubedohardware.com.br/funcao-rand-gere/810851?s=d819f786b8702c8e190412a595560e5a&
E ai!
Eu vi esse post lá,mais não me ajudou muito.Eu tenho que gerar um número inteiro.Pra gerar números positivos eu,faço desse jeito:
Exemplo:
a = (rand() % 385 + 15);
Dessa maneira consigo obter números positivos inteiros que variam entre 15 e 400.
Pensei em usar algo desse tipo ai,você saberia como ? :)
Abraços.
\o/
Que tal algo assim:
a = (rand () % 400 - 10);
Você vai ter um número entre 0 e 400, mas que será subtraído 10, ficando entre -10 e 390
>
Que tal algo assim:
a = (rand () % 400 - 10);
Você vai ter um número entre 0 e 400, mas que será subtraído 10, ficando entre -10 e 390
Vlw cara! O código rodou sussa o/
Bom, meu código está assim:
/*
Faça um programa que gere 6 números inteiros aleatórios, os
3 primeiros números entre 15 e 400 e os 3 últimos entre -10 e 390.
Escreva na tela os 6 números na ordem em que foram gerados.
Em seguida escreva os 6 números ordenados de modo DECRESCENTE.
Obs. Usar comando de repetição.
Usar a função ‘rand( )’ para gerar números inteiros aleatórios ou “randômicos”.
*/
#include <stdio.h>
int main(){
srand(time(NULL));
int a,b,c,d,f,e,aux;
a = (rand() % 385 + 15);
b = (rand() % 385 + 15);
c = (rand() % 385 + 15);
// numeros negativos
d = (rand () % 400 - 10);
e = (rand () % 400 - 10);
f = (rand () % 400 - 10);
printf("Programacao estruturada");
printf("\nTEX 04\n");
printf("\nGerar 6 numeros aleatorios e ordenalos de forma descresente");
printf("\n\n");
printf("Numeros gerados aletoriamente: ");
printf("\n\n");
printf("Numero a: %d\n",a);
printf("Numero b: %d\n",b);
printf("Numero c: %d\n",c);
printf("Numero d: %d\n",d);
printf("Numero e: %d\n",e);
printf("Numero f: %d\n",f);
printf("\nNumeros em ordem:");
printf("\n\n");
printf("A: %d B: %d -- C: %d -- D: %d -- E: %d -- F: %d\n\n",a,b,c,d,e,f);
// Comparação e ordenação
while((a>b) || (b>c) || (c>d) || (d>e) || (e>f)){
if(a>b){
aux = a; a = b; b = aux;
}
if(b>c){
aux = b; b = c; c = aux;
}
if(c>d){
aux = c; c = d; d = aux;
}
if(d>e){
aux = d; d = e; e = aux;
}
if(e>f){
aux = e; e = f; f = aux;
}
}
printf("Numeros em ordem Crescente:");
printf("\n\n");
printf("A: %d -- B: %d -- C: %d -- D: %d -- E: %d -- F: %d\n\n",a,b,c,d,e,f);
printf("Numeros em ordem Decrescente:");
printf("\n\n");
printf("A: %d -- B: %d -- C: %d -- D: %d -- E: %d -- F: %d\n",f,e,d,c,b,a);
printf("\nTecle ENTER para sair do programa.\n");
getch(); return 0;
}
Se alguém tiver um dica,sugestão,critica que possa vir a melhorar o programa,é só comentar o/
Abraços!
FreedomFSA,
Uma dica de uma boa prática de programação.
Tente utilizar nomes de variáveis que tenha relaçam com a função delas.
Utilizar nomes como a, b, c, d, ...., não recomendo. Hoje você sabe para que elas servem, mas pense daqui a seis meses ou um ano, quando precisar alterar o código novamente. Vai lembrar a função da variável 'c'?
Flw!
>
FreedomFSA,
Uma dica de uma boa prática de programação.
Tente utilizar nomes de variáveis que tenha relaçam com a função delas.
Utilizar nomes como a, b, c, d, ...., não recomendo. Hoje você sabe para que elas servem, mas pense daqui a seis meses ou um ano, quando precisar alterar o código novamente. Vai lembrar a função da variável 'c'?
Flw!
Vlw pela dica GBecker!!
E já aproveitando o tópico,alguém poderia me axuliar em como listar vetores?
Tenho um array de 40 indices,e der a média aritmética,o que é sussa,más,na hora de listar os vetores que estão acima e abaixo da média a coisa compica...
meu código atual está assim:
/*
TEX05
Fazer um programa que gere um vetor com 40 inteiros aleatórios entre 1 e 99.
Escrever os valores na ordem gerada. Escrever a Média Aritmética dos 40 valores.
Escrever a quantidade de valores acima da Média, bem como listá-los na tela,
em suas respectivas posições no vetor.
Escrever a quantidade de valores abaixo da Média, bem como listá-los na tela,
em suas respectivas posições no vetor.
*/
#include <stdio.h>
int main(){
int vet[40],i=0,aux,soma,result;
srand(time(NULL));
do{
vet[i] = rand() % 100;
printf("vet[%d] = %d\n\n",i,vet[i]);
i++;
}while(i<40);
for(i=0,soma=0;i<40;i++) {
soma = soma + vet[i];
}
do{
printf("%d",vet[i]);
i++;
}while(vet[i]>result);
printf("soma dos vetores e:%d",soma);
printf("\n\n");
result = soma/40;
printf("A media dos vetores e:%d",result);
// acima da media
getch(); return 0;
}
Tentei usar a seguinte função para listar os vetores abaixo da média:
do{
printf("%d",vet[i]);
i++;
}while(vet[i]>result);
Mas não deu certo,o código compila de boa e não indica nem um erro nesta funcionalidade.
Acho que a coisa é mais ou menos nesse rumo ai... mais ainda to perdido :/
o/
Está no caminho sim. Mas deve atentar para duas coisas.
Você está trabalhado com variável de índice para percorrer o vetor (a variável 'i'), você deve ter cuidado de zerar ela toda vez que for utilizar para varrer o vetor. Senão, iniciará na última posição que foi utilizada no vetor anterior.
Para o objetivo da "varredura" do vetor que está fazendo, o do...while não seria uma boa escolha. Da forma que você fez, digamos que ele encontre um valor maior na primeira posição do vetor. Vai sair do laço de repetição e todo o resto do vetor não será analisado.
Recomendo você utilizar um for, semelhante a quando utiliza para obter a soma dos valores. Limitando em quarenta.
E dentro do laço utlizar um if, para comparar se é menor que a média ou não. Como vai utlizar a variável do for para varrer o vetor, já terá a posição onde o valor é menor que a média.
Espero ter ajudado, FLW!
>
FreedomFSA,
Uma dica de uma boa prática de programação.
Tente utilizar nomes de variáveis que tenha relaçam com a função delas.
Utilizar nomes como a, b, c, d, ...., não recomendo. Hoje você sabe para que elas servem, mas pense daqui a seis meses ou um ano, quando precisar alterar o código novamente. Vai lembrar a função da variável 'c'?
Flw!
E ai GBecker!
Ajudou bastante cara ! o código rodou sussa após as devidas alterações o/
Porém,algumas vezes ele listou mais de 40 índices,achei estranho.Era pra ele estar listando do indice 0 até o 39,mas acaba que ele lista do 1 até o 40, e outras do 1 até 41 ou 42...se poder da uma olhada ai :D
Atualmente o código se encontra da seguinte maneira:
#include <stdio.h>
int main(){
int vet[40],i=0,aux,soma,cont=0;
srand(time(NULL));
printf("Pragramacao Estruturada\n");
printf("\nTEX05\n");
printf("==================================");
printf("\n\n");
printf("Lista dos vetores: ");
printf("\n\n");
do{
vet[i] = rand() % 100;
printf("vet[%d] = %d\n\n",i,vet[i]);
i++;
}while(i<40);
for(i=0,soma=0;i<40;i++) {
soma = soma + vet[i];
}
printf("\n\n");
printf("A soma dos vetores e: %d\n\n",soma);
printf("A media dos vetores e: %d ",soma/40);
printf("\n\n");
printf("Vetores acima da media:\n\n");
for(i=0;i<40;i++){
if(vet[i] >= soma/40){
cont++;
printf("vet[%d] = %d\n",cont,vet[i]);
}
}
printf("\n\nVetores abaixo da media:\n\n");
for(i=0;i<40;i++){
if(vet[i] <= soma/40){
cont++;
printf("vet[%d] = %d \n",cont,vet[i]);
}
}
getch(); return 0;
}
Abraços ! o/
Para gerar, você pode utilizar a função rand da stdlib. E para tranformar em negativo, multiplique por (-1).