Ir ao conteúdo
  • Cadastre-se

Leoveira

Membros Plenos
  • Total de itens

    22
  • Registro em

  • Última visita

  • Qualificações

    N/D
  1. E por que eu dou nome conforme se pede no exercício, a ideia e que ficasse fácil de entender o que cada variável, vetor ou função faz. Como você escreveu em C eu fiquei meio perdido mas acho que entendi mais ou menos, mas o que seria o comando puts? Eu coloquei uma ponteiro para alocar o tamanho do vetor para ver se resolve o problema, mas não resolveu. #include <iostream> #include <stdlib.h> using namespace std; int*alocavetor (int tamanho){ int *aux; //alocação dinamica de memoria aux= (int*) malloc(tamanho *sizeof(int)); //retorna o valor alocado return aux; } int piramidal(int sequencia[]){ int tamanho=0,x,y; //armazenar valores cout << "Digite o numero de elementos: "; cin >> tamanho; cout << "Digite uma sequencia de numeros: "; for(x=0;x<tamanho;x++){ cin >> sequencia[x]; } cout<<"\n"; //exibir int cont=0; for(x=0;x<tamanho;x++){ for(y=0;y<tamanho;y++){ if(x>=y){ cout << sequencia[cont] << " "; cont++;} else if(x == tamanho ||y == tamanho ){ break; } else; } cout<<"\n"; } } int main(){ int tamanho=0, *sequencia,chama_funcao; cout << "\n\t Piramidal\n"; sequencia=alocavetor(tamanho); chama_funcao=piramidal(sequencia); }
  2. Consegui fazer, porém se deu defino 10 elementos ele está exibindo uns valores estranhos depois dos 10 . #include <iostream> using namespace std; int piramidal(int sequencia[]){ int elementos=0,x,y; //armazenar valores cout << "Digite o numero de elementos: "; cin >> elementos; cout << "Digite uma sequencia de numeros: "; for(x=0;x<elementos;x++){ cin >> sequencia[x]; } cout<<"\n"; //exibir int cont=0; for(x=0;x<elementos;x++){ for(y=0;y<elementos;y++){ if(x>=y){ cout << sequencia[cont] << " "; cont++;} else if(x == elementos ||y == elementos ){ break; } else; } cout<<"\n"; } } int main(){ int elementos=0, sequencia[elementos],chama_funcao; cout << "\n\t Piramidal\n"; chama_funcao=piramidal(sequencia); }
  3. /*Uma sequência de n números inteiros não nulos é dita piramidal m-alternante se é constituída por m segmentos: o primeiro com um elemento, o segundo com dois elementos e assim por diante até o m-ésimo, com m elementos. Além disso, os elementos de um mesmo segmento devem ser todos pares ou todos ímpares e para cada segmento, se seus elementos forem todos pares (ímpares), os elementos do segmento seguinte devem ser todos ímpares (pares). Por exemplo, a sequência com n = 10 elementos: 12 3 7 2 10 4 5 13 5 11 é piramidal 4-alternante. A sequência com n = 3 elementos: 7 10 2 é piramidal 2-alternante. A sequência com n = 8 elementos: 1 12 4 3 13 5 12 6 não é piramidal alternante pois o último segmento não tem tamanho 4. (a) Escreva uma função bloco que recebe como parâmetro um inteiro n e lê n inteiros do teclado, devolvendo um dos seguintes valores: 0, se os n números lidos forem pares; 1, se os n números lidos forem ímpares; -1, se entre os n números lidos há números com paridades diferentes. (b) usando a função do item anterior, escreva um programa que, dados um inteiro n > 1 e uma sequência de n números inteiros, verifica se ela é piramidal m-alternante. O programa deve imprimir o valor de m ou dar a resposta não.*/ #include <iostream> using namespace std; int piramidal(int sequencia[]){ int elementos,cont; //armazenar valores cout << "Digite o numero de elementos: "; cin >> elementos; cout << "Digite uma sequencia de numeros: "; for(cont=0;cont<elementos;cont++){ cin >> sequencia[cont]; } //exibir for(cont=0;cont<elementos;cont++){ cout << sequencia[cont]; } int main(){ int elementos=0, sequencia[elementos],chama_funcao; cout << "\n\t Piramidal\n"; chama_funcao=piramidal(sequencia); }
  4. @XenoStory acho que também não expliquei muito claro. Por exemplo se eu colocar para ser 10 elementos e eles vão ter a seguinte sequencia (12, 42, 22, 65, 87, 34, 56, 1, 98 e 23), eu não preciso coloca-los em ordem crescente. Mas preciso que o numero de números exibidos por linha seja crescente. EX.: 12 42, 22 65, 87, 34 56, 1, 98, 23 Com dois laços de repetição eu não consegui, e também não consegui pensar em uma maneira que não parece-se desnecessariamente complicada para limitar. Mas ainda to na luta do raciocínio aqui.
  5. Boa tarde, estou fazendo um exercício que na qual eu preciso definir o numero de elementos e uma sequencia que deve ser impressa assim: Ex: N=10(numero de elementos) 1 23 456 78910 O exercício pede mais coisas, mas creio que consigo fazer o resto. Meu problema e só essas manipulações de vetores que ainda estão me dando trabalho.
  6. @Simon Viegas me salvou de novo. Deu certinho, obrigado.
  7. Funcionou mas agora o erro e esse: error: invalid types 'float[int]' for array subscript
  8. Eu tive esse pensamento, mas só lembrei de colocar o media como float. Nem tinha percebido, obrigado por me lembrar. Obrigado a todos pela ajuda. adicionado 20 minutos depois Só uma duvida coloquei o meu código em uma função é esta dando o erro "error: cannot convert 'float' to 'float*' for argument '1' to 'float suavizacao(float*)' ". #define tam 10 float suavizacao(float vetor[tam]){ int cont; float media=0; for(cont=0;cont<tam;cont++){ if(cont ==0){ media=(vetor[cont]+vetor[cont+1])/2; cout << "\nPosicao no vetor: " << cont << ", suavizacao: " << media; media=0; } else if(cont ==9){ media=(vetor[cont]+vetor[cont-1])/2; cout << "\nPosicao no vetor: " << cont << ", suavizacao: " << media; media=0; } else{ media=(vetor[cont-1]+vetor[cont]+vetor[cont+1])/3; cout << "\nPosicao no vetor: " << cont << ", suavizacao: " << media; media=0; } } return 0; } int main(){ float valores[tam],teste; int cont; cout << "\n\t Suavizacao de vetor\n"; cout << "\nDigite dez valores: "; for(cont=0;cont<tam;cont++){ cin >> valores[cont]; } suavizacao(valores[tam]); }
  9. Boa noite, tenho que fazer a suavização de um vetor de 10 posições. A suavização consiste em substituir o valor atual de uma posição pela média do valor da posição anterior, da posterior e dele próprio. Assumindo que o identificador do vetor é v, então v=(v[i-1]+v+v[i+1])/3, (exceto o primeiro e o último). O primeiro elemento do vetor é suavizado com base na média entre os dois primeiros valores e o último elemento é suavizado com base na média entre os dois últimos. Meu código ficou assim: #include<iostream> using namespace std; int main(){ int tam=10,vetor[tam],cont; float media=0; cout << "\n\t Suavização de vetor\n"; cout << "\nDigite dez valores: "; for(cont=0;cont<tam;cont++){ cin >> vetor[cont]; } for(cont=0;cont<tam;cont++){ if(cont ==0){ media=(vetor[cont]+vetor[cont+1])/2; cout << "\nPosicao no vetor: " << cont << ", suavizacao: " << media; media=0; } if(cont ==9){ media=(vetor[cont]+vetor[cont-1])/2; cout << "\nPosicao no vetor: " << cont << ", suavizacao: " << media; media=0; } else{ media=(vetor[cont-1]+vetor[cont]+vetor[cont+1])/3; cout << "\nPosicao no vetor: " << cont << ", suavizacao: " << media; media=0; } } } Ele não está retornando os valores corretamente, alguém sabe qual pode ser o erro?
  10. @Simon Viegas sobre primeira parte eu costumo fazer isso, mas quando fico perdido eu ignoro isso até resolver e depois volto e arrumo(se eu fizesse desde de o inicio evitava perda de tempo). Mas obrigado de todo jeito, vou tentar ter esse costume em mente. Sobre a segunda parte eu realmente não entendi o que você quis dizer ou insinuar, minha duvida era sobre isso: E minha dificuldade era na lógica, eu estava colocando mais complicação do que havia. Mas agradeço a colaboração de todos, me ajudaram bastante. adicionado 2 minutos depois O código ficou assim: #include <iostream> #include <math.h> using namespace std; #define juizes 5 int main(){ int notas[juizes],cont,media=0,maior=0,menor=0; cout << "\n\t Prova de Atletismo\n"; cout << "Digite 5 notas entre 0 a 9 para o atleta: \n"; //armazenar valores for(cont=0;cont<juizes;cont++){ //if(notas[cont]>10){ cin >> notas[cont]; } //media for(cont=0;cont<juizes;cont++){ media+=notas[cont]; } media=media/juizes; cout << "\nA media do atleta foi de: " << media; //maior for(cont=0;cont<juizes;cont++){ if(notas[cont]>maior){ maior=notas[cont]; } } //menor menor=maior; for(cont=0;cont<juizes;cont++){ if(notas[cont]<menor){ menor=notas[cont]; } } cout << "\nA sua menor nota foi: " << menor << " e a sua maior nota foi: " << maior; //porcentagem de repetidos int nota_alta=8,repet=0,porcen=0; for(cont=0;cont<juizes;cont++){ if(notas[cont]>=nota_alta){ repet++; } porcen=repet*20; //5 notas e igual a 100%, então cada nota e 20% } cout << "\nA porcentagem de notas iguais ou superiores a 8 e: " << porcen<< "%"; //atribuição de notas for(cont=0;cont<juizes;cont++){ if(notas[cont]>=nota_alta){ cout << "\nO juiz numero " << cont << " deu a nota: " << notas[cont]; } } }
  11. @vangodp E isso mesmo, eu que digitei errado. E isso que eu não to entendendo muito bem, pode me dar um exemplo se não for incomodo?
  12. Boa tarde, Estou fazendo um exercício que pede para armazenar 5 notas de juízes ( de 0 a 9) a um atleta em um vetor e depois exiba a media, a maior nota, a menor nota, e a a percentagem de pontuações iguais ou superiores a 8 valores. E essa ultima me pegou de jeito, por que não estou conseguindo montar o trecho de código para identificar repetidos em um vetor. Meu código até então está assim: #include <iostream> #define juiz 5 using namespace std; int main(){ int notas[juiz],cont,media=0,maior=0,menor=0; cout << "\n\t Prova de Atletismo\n"; cout << "Digite 5 notas entre 0 a 9 para o atleta: \n"; //armazenar valores for(cont=0;cont<juiz;cont++){ cin >> notas[cont]; } //media for(cont=0;cont<juiz;cont++){ media+=notas[cont]; } media=media/juiz; cout << "\nA media do atleta foi de: " << media; //maior for(cont=0;cont<juiz;cont++){ if(notas[cont]>maior){ maior=notas[cont]; } } //menor menor=maior; for(cont=0;cont<juiz;cont++){ if(notas[cont]<menor){ menor=notas[cont]; } } cout << "\nA sua menor nota foi: " << menor << " e a sua maior nota foi: " << maior; //repetidos int rep=0; int cont2=notas[0]; for(cont=0;cont<juiz;cont++){ if(notas[cont] == cont2){ rep++; } } } Sei que poderia colocar um outro FOR dentro do primeiro para resolver, mas não estou sabendo montar a lógica correta. Alguma sugestão?
  13. @Simon Viegas @Mauro Britivaldo deu certo aqui. Ficou uma bagunça, mas já me contentei por conseguir. Obrigado pela ajuda de vocês dois!
  14. Desculpem a demoram, vou testar as sugestões e posto o resultado.
  15. @Mauro Britivaldo você me deu uma luz nesse decodificar meu caro, com isso fiz algo assim: #include <iostream> #include <stdlib.h> using namespace std; int main(){ int n,i,num[4]; cout << "\n\t Codificar e Decodificar\n"; cout << "\nDigite um numero: "; cin >> n; //codificar i=0; while(n>0){ num[i]=(n+8)%10; n=n/10; i=i+1; } cout << num[1]<<num[0]<<num[3]<<num[2]; //decodificar i=0; while(i<4){ num[i]=(num[i]+10)-8; i=i+1; } cout <<"\n" << num[3]<<num[2]<<num[1]<<num[0]; } Porém está dando problemas com o digito 1, ex: se eu codificar 1234 na hora de decodificar ele me retorna 11234. @Simon Viegas eu estou fazendo sem funções por que não entendi exercício por completo, assim que conseguir faço as funções necessárias. E o seu cout esta correto.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×