Ir ao conteúdo
  • Cadastre-se

Flávio Pedroza

Membro Pleno
  • Posts

    2.070
  • Cadastrado em

  • Última visita

Tudo que Flávio Pedroza postou

  1. Em c o vetor começa com índice 0 e vai até dimensão - 1: int a[4] = {3,5,7}; //sao quatro elementos, e o indíce varia de 0 ate 3.
  2. while(!vazia(P)){ //P = P -> prox; if((P -> info)%2 == 0){ P = retirar(P, elem); } if (P != NULL) P = P -> prox; } Tenta assim.
  3. faz um laço (FOR) variando de um até seis.
  4. Retirar tudo e começa do zero. Veja se ligou todos os cabos de alimentação a placa-mãe. Bote só o processador + cooler (verifique se não há pinos tortos) e ligue (veja se dá sinal de post).
  5. area := (base*altura) / 2.0; writeln('area = ', area);
  6. int l=strlen(linha); int cont = 0;//conta os "."; for(int i=0; i<l; i++) { if (!isdigit(linha[i])) { if (linha[i]=='.') { cont++; if (cont < 2) continue; } if ((i ==0) && ((linha[i] == '+') || (linha[i] == '-'))) continue; return FALSE; // string linha contém ao menos 1 caracter invalido } } return TRUE; // string linha eh valida como numerica Verifique se assim funcionar, não testei.
  7. Ele não acha esta pasta "'Fotos". Tente fornecer o caminho completo, ex.: "C:\\Documentos\\Fotos\\WIN_20190125_16_11_48_Pro.jpg".
  8. A ideia está correta, mas seu programa não compila(tem alguns erros de sintaxe) então não sei o motivo de não ter funcionado. Este abaixo deve funcionar: #include <stdlib.h> #include <stdio.h> int DiaN; int MesN; int AnoN; int DiaA; int MesA; int AnoA; int TotalDiasA; int TotalDiasN; int TotalDias; int cta; int diasMes[12]; main(){ // atribuir dias aos meses diasMes[0] = 31; diasMes[1] = 28; diasMes[2] = 31; diasMes[3] = 30; diasMes[4] = 31; diasMes[5] = 30; diasMes[6] = 31; diasMes[7] = 31; diasMes[8] = 30; diasMes[9] = 31; diasMes[10] = 30; diasMes[11] = 31; printf("\n Digite o ano de aniversario: "); scanf("%d", &AnoN); //se for bissexto fev tem 29 if(AnoN % 4 == 0){ diasMes[1] = 29; } while(MesN < 1 || MesN > 12){ printf("\n Digite o mes de aniversario: "); scanf("%d", &MesN); } while(DiaN < 1 || DiaN > diasMes[MesN - 1]){ printf("\n Digite o dia de aniversario: "); scanf("%d", &DiaN); } TotalDias = diasMes[MesN-1] - DiaN; //Conta os dias para o mês acabar; for(cta = MesN+1; cta <= 12 ; cta++){ //Conta os meses para o ano acabar; TotalDias += diasMes[cta-1]; } //voltar fevereiro pra 28 pra validar diasMes[1] = 28; while(AnoA < AnoN || (AnoA - AnoN) >= 150){ printf("\n Digite o ano atual: "); scanf("%d", &AnoA); } //ver se tb é bissexto if(AnoA % 4 == 0){ diasMes[1] = 29; } while(MesA < 1 || MesA > 12){ printf("\n Digite o mes atual: "); scanf("%d", &MesA); } while(DiaA < 1 || DiaA > diasMes[MesA - 1]){ printf("\n Digite o dia atual: "); scanf("%d", &DiaA); } for(cta = 1; cta < MesA ; cta++){ // Conta os meses que tem no ano atual TotalDias += diasMes[cta-1]; } TotalDias += DiaA; //Contas os dias no último mes do ano atual for (cta = AnoN+1; cta < AnoA; cta++) if (cta % 4 == 0) TotalDias += 366; else TotalDias += 365; if (AnoN == AnoA) TotalDias -= (365 + (AnoN % 4 ? 0 : 1)); printf("\nVocê viveu : "); printf("%d", TotalDias); printf(" dias."); };
  9. scanf_s("%s", nm, 20); //acrescentar esse argumento 20 (20 pois nm eh um array de no maximo 20 caracteres) (...) scanf_s("%s", ab, 20);
  10. Head = NULL;//move essa linha para fora do while while (1) { (..) void Playlist() { Playlist_Musica *ElementoVarredura; //ElementoVarredura = (struct Playlist_Musica *)malloc(sizeof(struct Playlist_Musica)); nao precisa disso (...) while (ElementoVarredura != NULL) { printf("Musica: %s ", ElementoVarredura->nm); //para imprimir strings use %s e nao %c printf("Artista/Banda %s ", ElementoVarredura->ab); //para imprimir strings use %s e nao %c printf("Duracao %f ", ElementoVarredura->duracao); ElementoVarredura = ElementoVarredura->prox; printf("\n");//bota essa quebra de linha dentro do laco } Veja se funciona com essas alterações.
  11. Seu código tem vários erros de sintaxe: #include<string.h> //incluir esse header AdicionarMusica(char nm[20], char ab[20], float duracao); //nm e ab sao arrays (...) printf("Digite o nome da musica: "); //faltou o ";" scanf_s("%s", nm);//faltou a "," - nao precisa do "&" ja que nm e um array (...) scanf_s("%s", ab); //nao precisa do "&" j (...) AdicionarMusica(nm, ab, duracao);//ao chamar a funcao, nao precisa especificar novamente os tipos das variaveis break;//b minusculo - verifique os outros (...) return 0; }//faltou essa chave int menu() (...) void AdicionarMusica(char nm[20], char ab[20], float duracao) { Playlist_Musica *NovoElemento;//NovO NovoElemento = (struct Playlist_Musica *)malloc(sizeof(struct Playlist_Musica)); //NovoElemento->dado = nm[20]; nao é assim que funciona - nao existe esse campo dado strcpy(NovoElemento->nm, nm); //NovoElemento->dado = ab[20]; nao é assim que funciona strcpy(NovoElemento->ab, nm); //NovoElemento->dado = duracao; NovoElemento->duracao = duracao; Veja se funciona agora
  12. Veja se com essa alteração funciona: //void InserirListaPosicao (TLISTA *pLista, TREGISTRO pReg, int pPos) void InserirListaPosicao (TLISTA **pLista, TREGISTRO pReg, int pPos)
  13. Eu quiz dizer para você posta a parte do código que você cria esses tipos LISTA, TNO e TREGISTRO, pois acho que erro pode ser neles.
  14. Posto a declaração dos tipos TLISTA, TNO e TREGISTRO.
  15. Esse código remove o último elemento de uma lista encadeada: void XYZ(TLISTA *pLista) { struct TNO *aux1, *aux2; if ((*pLista) != NULL) { aux1 = (*pLista); //aux1 aponta para o comeco da lista if (aux1->prox == NULL) //verifica se existe outro elemento alem do primeiro na lista { //caso a lista so tenha um elemento, apague este elemento free(aux1); //agora a lista toda nao tem nenhum elemento (*pLista) = NULL; } else { //caso a lista tenha outros elementos, percorre ela ate o penultimo while (aux1->prox->prox != NULL) { aux1 = aux1->prox; } //apos o laco, aux1 deve connter o penultimo elemento aux2 = aux1->prox; //faz aux2 apontar para o ultimo elemento //remove o ultimo da lista aux1->prox = NULL; //apaga o ultimo elemento da memoria. free(aux2); } }}
  16. O C/C++ diferencia maiúsculas de minusculas, então "NO" e "no" são interpretados como variáveis distintas.: struct NO { REGISTRO reg; struct NO *pont1; struct NO *pont2; };
  17. Não entendi, como assim ordenar as colunas? Seria algo assim: Original -> Após ordenação 0 4 1 0 1 4 5 2 1 1 2 5 3 3 2 2 3 3 De todo modo, há um erro de lógica em seu programa: int main() { int i, j, m, n, x, y;//temp[i][j]; qual o valor de i e de j? zero? você esta criando uma matriz 0x0? scanf("%d", &m); if (m > 1 && m <= 1000){ n = m; int matriz[m][n]; int temp[m][n];//crie a matriz temp aqui, da mesma maneira que criou a outra
  18. Siga estes passos para testar as memórias, como sugerido nos posts anteriores. https://support.microsoft.com/pt-br/help/2512132
  19. srand(time(NULL)); //so precisa chamar esta função uma unica vez, bote fora do lao //for(i = 1; i < 100; i++) esse laco esta sendo executado 99 vezes o certo seria: for(i = 0; i < 100; i++) //ou for(i = 1; i <= 100; i++) { //srand(time(NULL)); nao ha necesidade de chamar srand todas as vezes printf("\n Sequência %d: \n", i); n = 1 + rand() % 10; printf("%d \n\n", n); soma = soma + n; /*for(i = 1; i < 100; i++) nao ha necessidade de aninhar outro laco dentro do principal, desse jeito você esta gerando 100*100 numeros aleatorios! { n = 1 + rand() % 10; printf("%d \n\n", n); soma = soma + n; }*/ } //media = soma / 9; media = soma / 100; //sao 100 numeros gerados, entao deve dividir por 100. Para contar os números, crie um array de 10 elementos para armazenar a contagem de cada um: int cont[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; No laço de geração você vai somando cada um de acordo com o índice: for(i = 0; i < 100; i++) { printf("\n Sequência %d: \n", i); n = 1 + rand() % 10; printf("%d \n\n", n); cont[n-1]++; //cont[0] conta quantas vezes o numero 1 eh gerado, cont[1] conta o numero 2 e assim sucessivamente soma = soma + n; } for (int i=0; i < 10; i++) printf("O número %d foi gerado %d vezes\n", i+1, cont[i]); Veja se consegue terminar agora.
  20. Uma solução seria usar uma função retornando o número em decimal: // Esta função permite converter um número na base 2, 8 ou 16 para a base decimal. // Recebe como parâmetro uma string (representação do número), e um número inteiro que // determina em qual base está o número do primeiro parâmetro. int baseToDec(char* num_base, int base) { //int no lugar de void int indx = 0, exp = 0, cont = 0, dec = 0, num = 0; // Este loop determina o tamanho da string while(num_base[cont] != '\0') { cont++; } // Neste loop, a string é percorrida de trás para frente. Cada caractere é convertido // em um número inteiro, multiplicado pela base elevada ao expoente (0..Comprimento da string) // e somado ao valor da variável 'dec', que recebe as somas sucessivas. for(exp, indx=(cont-1); exp < cont; exp++, indx--) { if(base == 16) { switch(num_base[indx]) { case 'A' : case 'a' : num = 10; break; case 'B' : case 'b' : num = 11; break; case 'C' : case 'c' : num = 12; break; case 'D' : case 'd' : num = 13; break; case 'E' : case 'e' : num = 14; break; case 'F' : case 'f' : num = 15; break; default : num = (int)num_base[indx] - (int)'0'; } } else num = (int)num_base[indx] - (int)'0'; // Aqui avalia se o usuário digitou um número válido ou não! if(num > (base-1) || num < 0) { printf("Você informou um número inválido!\n"); exit(0); } dec += num * pow(base, exp); } // O número convertido para decimal é exibido printf("DECIMAL: %d\n", dec); return dec; //retornar o número em decimal } void process_calc(int opt) { char str[SIZE]; char calc[SIZE]; int cont=0,cont1; switch(opt) { case 0 : printf("CALCULADORA ENCERRADA!\n"); exit(0); case 1 : printf("DECIMAL: "); scanf("%d", &number); decToBase(number, 2); decToBase(number, 8); decToBase(number, 16); break; case 2 : printf("BINÁRIO: "); scanf("%s", str); number = baseToDec(str, 2); decToBase(number, 8); decToBase(number, 16); break; case 3 : printf("OCTAL = "); scanf("%s", str); number = baseToDec(str, 8); decToBase(number, 2); decToBase(number, 16); break; case 4 : printf("HEXADECIMAL = "); scanf("%s", str); number = baseToDec(str, 16); decToBase(number, 2); decToBase(number, 8); break; default : printf("OPÇÃO NÃO PERMITIDA!\nTENTE NOVAMENTE\n"); break; } }
  21. #include <math.h> //faltou case 3 : printf("OCTAL = "); //scanf("%s", str,3); scanf("%s", str); Encontrei esses erros de sintaxe. Teria algum erro específico? Alguma conversão que não está funcionando?
  22. det= mat[0][0] * mat[1][1]- mat[0][1] * mat[1][0]; Os índices em c/c++ começão em zero e vão até a dimensão-1 (em seu exemplo, de 0 a 2-1 -> 0 a 1), ok?

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!