Ir ao conteúdo
  • Cadastre-se

tringhamm

Membro Pleno
  • Posts

    373
  • Cadastrado em

  • Última visita

Reputação

53
  1. Tenho um Sentey Optimus Black e são incriveis as semelhanças em alguns aspectos... Os filtros de ar, por exemplo. Não sei o que seria de mim sem eles. É uma pena que não tive a mesma sorte com o cooler do processador. Tive de tirar o fan lateral (230mm) para conseguir fechar a tampa. Bom review!
  2. Na verdade, se você quiser trabalhar com uma matriz de maneira indexada, é necessário passar a matriz com o esquema dos colchetes. Da maneira que tu passou, é necessário usar um pouco de aritmética de ponteiros. Mais ou menos assim: #include <stdio.h> void mat(char *a){ int i,j; for(i = 0; i < 3; i++) { for(j = 0; j < 2; j++) printf("%3c ", *(a + (i * 2) + j)); printf("\n"); } } int main(){ char b[3][2] = { {'k','8'}, {'h','f'}, {'a','b'}}; mat(; return(0); } Se quiser tiraro warning de tipo incompatível, basta passar para a função o endereço de memória de b[0][0], ou seja mat(&b[0][0]); Note a maneira em que é possível acessar os elementos da matriz através de aritmética de ponteiros: *(a + (i * 2) + j) Aquele '2' é a quantidade de colunas.
  3. Quando você passa um vetor/matriz para uma função, não importa realmente qual a quantidade de elementos, visto que o compilador irá converter tal parâmetro diretamente para um ponteiro, que aponta para a região da memória onde se localiza o vetor/matriz. Agora, é importante deixar claro o tamanho da matriz dependendo da maneira com que você pretende trabalhar com ela dentro da função. Para passar uma matriz como parâmetro para uma função, você pode passar um ponteiro: void funcao (int *matriz); Dessa maneira, você não poderá trabalhar com os índices indexados, porém, como em uma matriz todos os elementos ocupam espaços contíguos na memória, isto é muito eficiente em casos que você precisa percorrer toda a matriz para fazer algum cálculo ou algo do gênero. Ainda, você pode passar a matriz com apenas o número de colunas. A dimensão das linhas na verdade é facultativa, ou seja, o protótipo: void funcao(int matriz[][10]); é válido, pois sem especificar a quantidade de colunas da matriz, o compilador não seria capaz de calcular as posições corretas dos elementos da matriz na memória (não saberia quantas colunas pular para chegar na próxima linha). Já a quantidade de linhas, como dito anteriormente, é facultativa. Ou seja, void funcao(int matriz[][]); não é correto.
  4. Comprei um HP TouchPad na gringa para um amigo daqui, e fiquei triste ao saber que o WebOS não tem Português-Brasil (e nem Português-Portugal). Poxa, quando as grandes empresas vão se tocar que o Brasil é atualmente o maior consumidor de tecnologia do mundo? Atualizei o WebOS pra 3.0.5, mas mesmo assim, a HP não incluiu o idioma. Dei uma Cyanogenada e meti Android. Antes disso, até gostei do sistema. Tocava vídeos FullHD com fluidez, tinha um player legal, o WiFi era fortinho, Bluetooth sem problemas... Única parte que eu não gostava era o gerenciamento das janelas dos apps abertos (estilo cartas). Demorei um tempo para aprender a fechar os apps =D
  5. tringhamm

    FraÇÃo em c

    Primeira coisa a se fazer é verificar o denominador. Se for zero, peça para o usuário digitar outro. Após ter os dois numeradores e os dois denominadores, verifique se ambos os denominadores são o mesmo número. Se forem, basta somar os numeradores E exibir essa soma dos numeradores como o numerador, e um dos denominadores como o denominador. Caso os denominadores sejam diferentes, será necessário encontrar o mínimo múltiplo comum. Nem vou dizer como fazer, porque se você pesquisa, encontra fácil. Divida o MMC pelo primeiro denominador e multiplique pelo numerador. Acumule esse número em uma variável. Faça a mesma coisa para o outro numerador e denominador, e some o resultado à tal variável. Depois, basta exibir essa veriável (que será o numerador) e o mmc que será o denominador. É a matemática da terceira série voltando para assombrar.
  6. Tentei encontrar alguma utilidade para essa parte do código: if(cand==1) scanf("%f",&cand[1]); else if(cand==2) scanf("%f",&cand[2]); else if(cand==3) scanf("%f",&cand[3]); else if(cand==4) scanf("%f",&cand[4]); else if (cand==5) scanf("%f",&cand[5]); printf("\n\n"); mas não encontrei... O usuário deve digitar o número do candidato, depois confirmar, e isso acontece até ele digitar -1, correto? Basicamente, você deve fazer uma estrutura de laço (while, do-while, for...) para ir lendo os numeros dos candidatos até ser informado -1, e armazenando os votos num único vetor. É muito comum utilizar os numeros dos indices do vetor neste caso. Um vetor de 6 posições, por exemplo, vai do indice 0 até o indice 5. Imagine agora que o usuário queira votar no Tiririca. Seu número é 4. Para computar tal voto, após a confirmação, basta incrementar: qtdeVotos[codigoDoCandidato]++; Simples, não? Tente fazer. Caso não consiga, dê uma olhada no que eu fiz: #include <stdio.h> int main(){ int i, qtdeVotos[6] = {0,0,0,0,0}, totalVotos = 0; char confirmar, candidatos[][20] = {"","Marta Suplicy", "Paulo Maluf", "Netinho","Tiririca", "Branco"}; printf(":: || ELEICOES 2011 || ::\n\n"); do{ printf("Escolha seu candidato:\n\n"); printf("1 - Marta Suplicy\n2 - Paulo Maluf\n3 - Netinho\n4 - Tiririca\n5 - Branco\n\n"); scanf("%d", &i); if(i == -1){ printf("Votacao encerrada.\n"); system("CLS"); break; } else if(i > 5){ system("CLS"); printf("Candidato Invalido.\n"); continue; } do { if(i == 5){ printf("Confirmar voto em branco? (S ou N)", i); } else { printf("Confirmar voto para candidado numero %d (%s)? (S ou N)", i, candidatos[i]); } fflush(stdin); scanf("%c", &confirmar); confirmar += (confirmar == 78 || confirmar == 83) ? 32 : 0; } while (confirmar != 110 && confirmar != 115); system("CLS"); if(confirmar == 's'){ qtdeVotos[i]++; totalVotos++; } else { continue; } } while (1); if(totalVotos == 0){ printf("Nao houve votacao.\n"); return(0); } else { for(i=1; i<=5; i++){ printf("Candidato %d (%s) recebeu %2.2f%% votos.\n", i, candidatos[i], ((float)qtdeVotos[i]/totalVotos)*100); } } return(0); }

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...