Ir ao conteúdo
  • Cadastre-se

Alberto Estenio

Membro Pleno
  • Posts

    24
  • Cadastrado em

  • Última visita

Tudo que Alberto Estenio postou

  1. Escreva a seguinte função, que avalia uma posição em um jogo de xadrez: int avaliaPosicao(char tabuleiro[8][8]) tabuleiro representa uma configuração de peças em um tabuleiro de xadrez, sendo que as letras Q, R, B, N e P representam as peças pretas, enquanto as letras q, r, b, n e p representam as peças brancas. A função avaliaPosicao deve somar os valores das peças pretas (Q = 9, R = 5, B = 3, N = 3, P = 1). E também deve somar os valores das peças brancas (q = -9, r = -5, b = -3, n = -3, p = -1). A função deve retornar a diferença entre os dois números obtidos. Este valor será positivo se as peças pretas estiverem em vantagem e negativas se estiverem em desvantagem) // No DEV C++ ta acusando problema como no print //No CODE BLOCKS ele roda, porém quando insere o primeiro valor da bug Qual será o problema desse código? #include <stdio.h> #include <string.h> #include <ctype.h> int avaliaPosicao(char tabuleiro[8][8]); int avaliaPosicao(char tabuleiro[8][8]){ int Q= 9,R= 5,B= 3, N= 3, P= 1; //pretas int q=-9,r=-5,b=-3, n=-3, p=-1; //brancas int i,j,pretas=0,brancas=0,vantagem=0; for(i=0;i<8;i++){ for(j=0;j<8;j++){ if(tabuleiro[i][j] == tabuleiro['Q']['q']) {vantagem = vantagem + (Q+q);} if(tabuleiro[i][j] == tabuleiro['Q']['r']) {vantagem = vantagem + (Q+r);} if(tabuleiro[i][j] == tabuleiro['Q']['b']) {vantagem = vantagem + (Q+b);} if(tabuleiro[i][j] == tabuleiro['Q']['n']) {vantagem = vantagem + (Q+n);} if(tabuleiro[i][j] == tabuleiro['Q']['p']) {vantagem = vantagem + (Q+p);} if(tabuleiro[i][j] == tabuleiro['R']['q']) {vantagem = vantagem + (R+q);} if(tabuleiro[i][j] == tabuleiro['R']['r']) {vantagem = vantagem + (R+r);} if(tabuleiro[i][j] == tabuleiro['R']['b']) {vantagem = vantagem + (R+b);} if(tabuleiro[i][j] == tabuleiro['R']['n']) {vantagem = vantagem + (R+n);} if(tabuleiro[i][j] == tabuleiro['R']['p']) {vantagem = vantagem + (R+p);} if(tabuleiro[i][j] == tabuleiro['B']['q']) {vantagem = vantagem + (B+q);} if(tabuleiro[i][j] == tabuleiro['B']['r']) {vantagem = vantagem + (B+r);} if(tabuleiro[i][j] == tabuleiro['B']['b']) {vantagem = vantagem + (B+b);} if(tabuleiro[i][j] == tabuleiro['B']['n']) {vantagem = vantagem + (B+n);} if(tabuleiro[i][j] == tabuleiro['B']['p']) {vantagem = vantagem + (B+p);} if(tabuleiro[i][j] == tabuleiro['N']['q']) {vantagem = vantagem + (N+q);} if(tabuleiro[i][j] == tabuleiro['N']['r']) {vantagem = vantagem + (N+r);} if(tabuleiro[i][j] == tabuleiro['N']['b']) {vantagem = vantagem + (N+b);} if(tabuleiro[i][j] == tabuleiro['N']['n']) {vantagem = vantagem + (N+n);} if(tabuleiro[i][j] == tabuleiro['N']['p']) {vantagem = vantagem + (N+p);} if(tabuleiro[i][j] == tabuleiro['P']['q']) {vantagem = vantagem + (P+q);} if(tabuleiro[i][j] == tabuleiro['P']['r']) {vantagem = vantagem + (P+r);} if(tabuleiro[i][j] == tabuleiro['P']['b']) {vantagem = vantagem + (P+b);} if(tabuleiro[i][j] == tabuleiro['P']['p']) {vantagem = vantagem + (P+p);} } } vantagem = (pretas-brancas); return (vantagem); } int main(){ char tabuleiro[8][8]; int i,j,vantagem; for(i=0;i<8;i++){ // insersão das pretas printf("insira uma peça preta Q ou R ou B ou N ou P\n"); for(j=0;j<8;j++){ // insersão das brancas printf("insira uma peça branca q ou r ou b ou n ou p\n"); scanf("%c",&tabuleiro[i][j]); if( tabuleiro[i][j] != tabuleiro['Q']['q']|| tabuleiro[i][j] != tabuleiro['Q']['r']|| tabuleiro[i][j] != tabuleiro['Q']['b']|| tabuleiro[i][j] != tabuleiro['Q']['n']|| tabuleiro[i][j] != tabuleiro['Q']['p']|| tabuleiro[i][j] != tabuleiro['R']['q']|| tabuleiro[i][j] != tabuleiro['R']['r']|| tabuleiro[i][j] != tabuleiro['R']['b']|| tabuleiro[i][j] != tabuleiro['R']['n']|| tabuleiro[i][j] != tabuleiro['R']['p']|| tabuleiro[i][j] != tabuleiro['B']['q']|| tabuleiro[i][j] != tabuleiro['B']['r']|| tabuleiro[i][j] != tabuleiro['B']['b']|| tabuleiro[i][j] != tabuleiro['B']['n']|| tabuleiro[i][j] != tabuleiro['B']['p']|| tabuleiro[i][j] != tabuleiro['N']['q']|| tabuleiro[i][j] != tabuleiro['N']['r']|| tabuleiro[i][j] != tabuleiro['N']['b']|| tabuleiro[i][j] != tabuleiro['N']['n']|| tabuleiro[i][j] != tabuleiro['N']['p']|| tabuleiro[i][j] != tabuleiro['P']['q']|| tabuleiro[i][j] != tabuleiro['P']['r']|| tabuleiro[i][j] != tabuleiro['P']['b']|| tabuleiro[i][j] != tabuleiro['p']['n']|| tabuleiro[i][j] != tabuleiro['P']['p'] ) { printf("invalido"); i--; j--;} printf("%d",avaliaPosicao(tabuleiro[i][j]) ); vantagem = avaliaPosicao(tabuleiro[i][j]); if(vantagem >0){ printf("as pretas tem a vantagem"); } else{ printf("as brancas tem a vantagem"); } } } return 0; }
  2. Escreva a seguinte função: float compute_GPA(char notas[], int n); A matriz notas deve conter letras (A, B, C, D ou F, minúsculas ou maiúsculas); n é o tamanho da matriz. A função deve retornar a média das notas (Assuma que A = 4, B = 3, C = 2, D = 1, e F = 0). Obs. Lembre-se que para alterar as letras para maiúsculas deve ser usada a função toupper. Ex.: toupper(notas) tem alguma forma melhor de fazer isso ? tipo como uma matriz que as linhas sejam as char letras e as colunas int números? #include <stdio.h> #include <ctype.h> #include <time.h> #include <string.h> float compute_GPA(char notas[], int n); float compute_GPA(char notas[], int n){ int i; int soma=0; for(i=0;i<n;i++){ scanf(" %c",&notas[i]); notas[i]= toupper(notas[i]); switch ( notas[i] ) { case 'A': soma = soma+4; break; case 'B': soma = soma+3; break; case 'C' : soma = soma+2; break; case 'D': soma = soma+1; break; case 'F' : soma = soma+0; break; default : printf ("Valor invalido!\n"); i--; } } return (soma/n); } int main(){ int n; printf("quantas notas?\n"); scanf("%d",&n); char notas[n]; printf("%f",compute_GPA(notas,n)); return 0; }
  3. Escreva três funções que retornam os seguintes valores (Assuma que a e n são parâmetros, sendo que a é um vetor de valores int e n é o tamanho do vetor): a) O maior elemento; A média de todos os elementos; c) O número de elementos positivos. " COMO POSSO FAZER PARA GERAR VALORES INTEIROS ALEATÓRIOS POSITIVOS E NEGATIVOS NO MESMO VETOR ? " #include <stdio.h> #include <time.h> int maior(int *a, int n) { int i, m=0; for(i=0;i<n;i++) { if(a[i]>m) m = a[i]; } return (m); } float media(int *a, int n) { float cont=0 , med; int i; for(i=0;i<n;i++) cont = cont + a[i]; med = cont/n; return (med); } int positivos(int *a, int n) { int i,pos=0; for(i=0;i<n;i++) { if (a[i]>=0) pos++; } return (pos); } int main() { srand(time(NULL)); int n,i; printf("quantos elementos tem o vetor?\t"); scanf("%d",&n); int a[n]; for(i=0;i<n;i++) { a[i]= rand()%10-0; } for(i=0;i<n;i++) { printf("\n %d \n",a[i]); } printf("O maior elemento:\t %d\n\n",maior(a,n)); printf("A media dos elementos:\t %f\n\n",media(a,n)); printf("O numero de elementos positivos:\t %d\n\n",positivos(a,n)); return 0; }
  4. #include <stdio.h> #include <time.h> int maiorf(int v[], int a); int menorf(int v[], int a); int maiorf(int v[],int a) { int i, maior = v[0]; for(i=0;i<a;i++) { if ((v[i] > maior) || (v[i]==maior)) maior = v[i]; } return (maior); } menorf(int v[], int a) { int i, menor = v[0]; for(i=0;i<a;i++) { if ((v[i] < menor) || (v[i]== menor)) menor = v[i] ; } return (menor); } int main() {srand(time(NULL)); int i,n; printf("qual o tamanho do vetor\n"); scanf("%d",&n); int v[n]; for(i=0;i<n;i++) { v[i] = rand()%100000-0; } for(i=0;i<n;i++) { printf(" %d \n\n",v[i]); } printf("\n maior %d \n",maiorf(v,n)); printf("\n menor %d \n",menorf(v,n)); return 0; } agora sim! Muito obrigado Rodrigo
  5. o que esta errado com essa função? Não estou conseguindo enxergar... Escreva um programa que use uma função para encontrar o maior e o menor número em um vetor de n números e apresente estas informações (maior e menor número localizado no vetor) na função main do programa. Observe que é necessário passar passagem de parâmetros por referência. Faça três versões do programa, usando os três modos básico de declarar vetor como parâmetro de uma função #include <stdio.h> #include <time.h> int maiormenor(int v[], int a); int maiormenor(int v[],int a) { int i, maior = v[0], menor = v[a-1]; for(i=0;i<a;i++) { if ((v[i] > maior) || (v[i]==maior)) { maior = v[i]}; } for(i = a-1 ;i == 0;i--) { if ((v[i] < menor) || (v[i]==menor)) { menor = v[i] }; } return (maior, menor); } int main() { srand(time(NULL)); int i,n; scanf("%d",&n); int v[n]; for(i=0;i<n;i++) { v[i] = rand()%10-0; } for(i=0;i<n;i++) { printf("\n %d",v[i]); } printf("maior %d menor %d",maiormenor(v,n)); return 0; }
  6. Leia a altura e o sexo de uma pessoa e apresente o seu peso ideal. Para homens, calcular e apresentar o peso ideal usando a fórmula peso ideal = 72.7 x alt - 58 e, para mulheres, peso ideal = 62.1 x alt - 44.7. Ao finalizar a digitação das informações pergunte ao usuário se deseja continuar digitando. #include <stdio.h> void pesoideal(){ float altura; char sexo, continuar = 'x'; do{ printf("escreva a altura x.xx\n\n"); scanf(" %f",&altura); printf("e escreva o sexo m/f :\n\n"); scanf(" %c",&sexo); switch ( sexo ) { case 'm' : printf("seu peso ideal é %.3f kg\n\n",(altura * 72.7) - 58); break; case 'f' : printf("seu peso ideal é %.3f kg\n\n",(altura * 62.1) - 44.7); break; default : printf (" sexo invalido!\n\n"); } printf("deseja continuar? s/n\n"); scanf(" %c", &continuar);} while (continuar == 's'); } int main(){ pesoideal(); return 0; }
  7. isrnick você é 10! Muito obrigado!! ta me ajudando muito!!
  8. Desenvolva um programa que leia os valores de uma matriz de ordem 5 e verifique se ela é ou não uma matriz triangular superior (matriz triangular superior é uma matriz onde todos os elementos de posições acima da diagonal principal são diferentes de 0 e todos os elementos demais elementos são iguais a 0). não to conseguindo acertar esse logica alguem me ajuda? #include <stdio.h> #include<time.h> int main() { int m[5][5],i,j; srand(time(NULL)); for(i=0;i<5;i++){ printf("digite os numeros da linha: %d\n",i+1); for(j=0;j<5;j++){ printf("coluna: %d\n",j+1); scanf("%d",&m[i][j]); } } for(i=0;i<5;i++){ printf(" \n\n "); for(j=0;j<5;j++){ printf(" %d ",m[i][j]); } } for(i=0;i<5;i++){ for(j=0;j<5;j++){ } if(m[i][j+1]>0){ printf("\n\ntriangular superior\n\n"); } else{ printf("\n\nnao e triangular superior\n\n"); }} return 0; } adicionado 13 minutos depois #include <stdio.h> #include<time.h> int main() { int m[5][5],i,j; srand(time(NULL)); for(i=0;i<5;i++){ printf("digite os numeros da linha: %d\n",i+1); for(j=0;j<5;j++){ printf("coluna: %d\n",j+1); scanf("%d",&m[i][j]); } } for(i=0;i<5;i++){ printf(" \n\n "); for(j=0;j<5;j++){ printf(" %d ",m[i][j]); } } int s = 10; for(i=0;i<5;i++){ for(j=0;j<5;j++){ } if(m[i][j+1]>0){ s=0; } else{ s=1; } } if(s=0){ printf("\n\ntriangular superior\n\n");} if(s=1){ printf("\n\nnao e triangular superior\n\n");} return 0; }
  9. algum anjo me ajuda com esse problema? tentei de varios jeitos mais nao consegui Desenvolva um programa que gere uma matriz quadrada de ordem 10 preenchida com números aleatórios entre 1 e 10. Considerando a matriz gerada, o programa deve verificar: a. Se há linha(s) ou coluna(s) em que todos os elementos são pares – nesse caso, indique a(s) linha(s) ou a(s) coluna(s); b. Se a média dos elementos da diagonal principal é maior do que a média de todos os elementos da matriz; c. Se há mais elementos na primeira metade do intervalo (entre 1 e 5) ou na segunda (entre 6 e 10). #include <stdio.h> #include <time.h> //*_________________________________________________*// int main() { //*___________DISTRIBUIÇAO DA MATRIZ_________________*// int mtz[10][10],i,j; srand(time(NULL)); for(i=0;i<10;i++){ for(j=0;j<10;j++){ mtz[i][j]= rand()%11; } } //*____________IMPRESSAO DA MATRIZ___________________*// for(i=0;i<10;i++){ printf(" \n\n "); for(j=0;j<10;j++){ printf(" %d ",mtz[i][j]); } } //*___________MEDIA GERAL DA MATRIZ_________________*// float mgm=0; for(i=0;i<10;i++){ for(j=0;j<10;j++){ mgm += mtz[i][j]; } } printf("\n\nMEDIA DA MATRIZ: %f\n",mgm/10); //*___________MEDIA DA DIAGONAL PRINC_______________*// int dp[10]; float mdp=0; for(i=0;i<10;i++){ dp[i]= mtz[i][i]; mdp += dp[i]; } printf("\n\nMEDIA DA DIAGONAL PRINCIPAL: %f\n\n\n",mdp/10); //*___________VERIFICAÇÃO MDP>MGM___________________*// if(mdp>mgm){ printf("MEDIA DA PRINCIPAL E MAIOR! \n");} else{ printf("MEDIA DE TODOS OS ELEMENTOS E MAIOR!\n");} //*__________QUNTIDADE DE ELEMENTOS_________________*// int pm=0; for(i=0;i<5;i++){ for(j=0;j<5;j++){ pm += mtz[i][j]; } } printf("\n\nQUANTIDADE DOS ELEMENTOS PRIMEIRA METADE: %d\n",pm); int sm=0; for(i=5;i<10;i++){ for(j=5;j<10;j++){ sm += mtz[i][j]; } } printf("\n\nQUANTIDADE DOS ELEMENTOS SEGUNDA METADE: %d\n",sm); //*VERIFICAÇÃO DA PARIDADE DAS LINHAS E DAS COLUNAS*// int lp=0,cp=0; for(i=0;i<10;i++){ for(j=0;j<10;j++){ if(mtz[i][j]%2==0){ lp++; } } } for(i=0;i<10;i++){ for(j=0;j<10;j++){ if(mtz[j][i]%2==0){ cp++, } } } return 0; }
  10. no pc o valor de B sempre da maior que o de A, porém a programação das linhas de ambos contadores é a mesma, alguém consegue me explicar? no meu teste B tem que ser igual a A pois a programação é a mesma para ambos... #include <stdio.h> #include <stdlib.h> int main() { int TAM=10; int i, j, numeros[TAM][TAM], t, a, b; srand(time(NULL)); for (i = 0; i < TAM; i++){ for (j = 0; j < TAM; j++){ numeros[i][j] = rand() % 100; } } t = 0; a = 0; b = 0; for (i = 0; i < TAM; i++){ for (j = 0; j < TAM; j++){ if ((numeros[i][j] > 15) && (numeros[i][j] < 45)){ a++; } if (numeros[i][j] > 60){ numeros[i][j] = numeros[i][j]%60; t++; } if ((numeros[i][j] > 15) && (numeros[i][j] < 45)){ b++; } } } printf ("T: %d, A: %d, B: %d", t, a, b);
  11. //*Codifique um programa para ler uma matriz quadrada de ordem n e exibir apenas os elementos da diagonal principal.*// #include <stdio.h> int main() { int i, j, n; scanf("%d",&n); int mtz[n][n]; for(i=0;i<n;i++){ for(j=0;j<n;j++){ scanf("%d",&mtz[i][j]); } } for(i=0;i<n;i++){ printf(" \n\n "); for(j=0;j<n;j++){ printf(" %d ",mtz[i][j]); } } for(i=0;i<n;i++){ printf("% d ",mtz[i][i]); } return 0; }
  12. #include <stdio.h> #include <stdlib.h> int main() { int i,j,a[5][3],b[5][3],c[5][3]; for(i=0;i<5;i++){ printf("linha %d matriz a\n",i+1); for(j=0;j<3;j++){ scanf("%d",&a[i][j]);} } for(i=0;i<5;i++){ printf("linha %d matriz b\n",i+1); for(j=0;j<3;j++){ scanf("%d",&b[i][j]); } } printf("\n"); for(i=0;i<5;i++){ for(j=0;j<3;j++){ printf(" %d",a[i][j]); }printf("\n"); }printf("\n"); printf("matriz A\n\n"); for(i=0;i<5;i++){ for(j=0;j<3;j++){ printf(" %d",b[i][j]); }printf("\n"); }printf("matriz B\n\n"); for(i=0;i<5;i++){ for(j=0;j<3;j++){ c[i][j] = a[i][j] + b[i][j]; printf(" %d",c[i][j]); }printf("\n"); }printf("matriz C\n"); return 0; }
  13. Desenvolva um programa que: a. Leia dois vetores contendo, cada um, 25 números inteiros. b. Intercale os elementos destes dois conjuntos formando um novo vetor de 50 números inteiros. c. Imprima o novo vetor obtido. Exemplo: vetA 31 70 125 ... 14 193 15 vetB 5 40 56 ... 7 51 101 vetC 31 5 70 40 125 56 ... 14 7 193 51 15 101 7. podem me ajudar a encontrar o erro nessa logica? #include <stdio.h> #include <stdlib.h> int main() { int i, j, k, vet_a[5], vet_b[5], vet_c[10]; for(i = 0; i <= 4; i++){ scanf("%d %d",&vet_a[i],&vet_b[i]);} for( j = 0; j <= 9; j++){ if (j%2 == 0){ vet_c[j] = vet_a[j]; } else{ vet_c[j] = vet_b[j];} } for (k = 0; k <=9; k++){ printf("\n %d \n",vet_c[k]);} return 0; } adicionado 29 minutos depois /*não to conseguindo entender qual o erro*/ #include <stdio.h> #include <stdlib.h> int main() { int vet1[25],vet2[25], vet3[50], aux, i; for(i = 0; i < 5; i++){ scanf("%d %d",&vet1[i], &vet2[i]); } for(i = 0; i < 10; i++){ if (i % 2 == 0){ vet3[i] = vet1[i];} else{ vet3[i + 1] = vet2[i]; } for(i = 0; i < 10; i++){ printf("%d\n",vet3[i]); } } return 0; }
  14. #include <stdio.h> #include <stdlib.h> int main() { int v [1000], i, j, v2[1005], pos[1000]; int a1, a2, b1, b2, c1, c2; for(i = 0; i > 1000; i++){ v[i] = rand()%149; v2[i] = v[i]; pos[i]; } for(i = 0; i>1000; i++){ for (j = 0; j >1000; j++){ if (v[i] != v2[j]);{ printf("%d",v[i]);} } i = 0; j = 0; } for(i = 0; i>1000; i++){ for (j = 0; j >1000; j++){ if (v[i] == v2[j]){ a1 = pos[i]; a2 = v[i]; }} printf("posicao %d valor %d",a1, a2);} for(i = 0; i>1000; i++){ for (j = 0; j >1000; j++){ if (v[i] == v2[j]){ b1 = pos[i]; b2 = v[i]; }} printf("posicao %d valor %d",b1, b2);} for(i = 0; i>1000; i++){ for (j = 0; j >1000; j++){ if (v[i] == v2[j]){ c1 = pos[i]; c2 = v[i]; }} printf("posicao %d valor %d",c1, c2);} return 0; }
  15. me ajuda =[ ja tentei mais não consigo extrair estes valores
  16. A partir de um vetor de 1000 valores inteiros gerados aleatoriamente no intervalo [0, 149], deve-se mostrar os valores que não estão repetidos e informar os três números que mais se repetiram. Dica: Para contar, utilize um segundo vetor, em que os índices correspondem ao conteúdo do vetor aleatório. #include <stdio.h> #include <stdlib.h> int main() { int vet1[150], vet2[1000], i, j,a,b,c; for(i = 0; i <= 149; i++){ vet1 = i;} for (i = 0; i <= 999; i++){ vet2 = rand()%149;} // estou com dificuldade para montar uma lógica... for (j = 0; j <= 999; j++){ for(i = 0; i <= 149; i++){ if (vet2[j] != vet1){ printf("%d\n",vet2[j]); } } } return 0; } help please
  17. Não estou conseguindo enxergar o erro desse algoritimo Calcule e apresente a seguinte seqüência: 0,2,3,4,6,8,11,16,20,32,37,64,70,128,135...n. Obs. use pow(x,n) fiz o Seguinte algorítimo com ' for ' : // n == exponencial, imp == impar, pr == par, x == base, rpt == n execuções. ------------------------------------------------------------------------------------------- #include <stdio.h> #include <stdlib.h> #include <math.h> int main() {int n,rpt; double imp, pr, x = 2 ; scanf("%d",&rpt); printf("0"); for(n = 1;n <= rpt; n++){ if (n % 2 != 0){ imp = pow(x,n); printf("\n %.0f \n", imp);} else{ pr = pow(x,n) + n; printf("\n %.0f \n", pr); } } return 0; } a saída para 14 repetições rpt está sendo: 0, 2, 6, 8, 20, 32, 70, 128, 256, 512, 1024, 2048, 4108, 8192, 16398 preciso que esse padrão seja: 0, 2, 3, 4, 6, 8, 11 ,16, 20, 32, 37, 64, 70, 128, 135. ..n. alguém me ajuda enxergar o erro?

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!