Ir ao conteúdo
  • Cadastre-se

Flávio Pedroza

Membro Pleno
  • Posts

    2.063
  • Cadastrado em

  • Última visita

Tudo que Flávio Pedroza postou

  1. 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.
  2. Ele não acha esta pasta "'Fotos". Tente fornecer o caminho completo, ex.: "C:\\Documentos\\Fotos\\WIN_20190125_16_11_48_Pro.jpg".
  3. 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."); };
  4. 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);
  5. 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.
  6. 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
  7. Veja se com essa alteração funciona: //void InserirListaPosicao (TLISTA *pLista, TREGISTRO pReg, int pPos) void InserirListaPosicao (TLISTA **pLista, TREGISTRO pReg, int pPos)
  8. 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.
  9. Posto a declaração dos tipos TLISTA, TNO e TREGISTRO.
  10. 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); } }}
  11. 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; };
  12. 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
  13. Siga estes passos para testar as memórias, como sugerido nos posts anteriores. https://support.microsoft.com/pt-br/help/2512132
  14. 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.
  15. 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; } }
  16. #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?
  17. 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?
  18. Veja se consegue entender a lógica do programa abaixo. Tentei comentar de forma clara. Não sei se é a melhor solução, mas acredito que funcionará: #include <iostream> using namespace std; #include <stdio.h> int main(){ int notas50, notas20; int resto; float valor; printf("Digite o valor que deseja Sacar: "); scanf("%f",&valor); if ((valor>1000 ) || (valor < 0)) { printf("Valor inválido, por favor, digite um valor entre 0 e 1000"); return 1; } resto = (int)valor % 50; notas50 = (int)valor/50;//comeco dividindo por 50, pois assim resultara em quantidade menor de notas if (resto == 0) //possível pagar apenas com notas de 50 { printf("você sacou %d notas de 50", notas50); return 0; } else //nao da para paga apenas com notas de 50 { while ((resto % 20 != 0) && (notas50>0))//se o que sobrar nao for divisivel por 20, tem que tirar cedulas de 50 ate ser possível { resto +=50; notas50--; } notas20 = resto / 20;// quantidade de cedulas de 20 resto = resto % 20;//calculo o resto final, que deve ser zero } if (resto != 0) //se o resto for diferente de zero, entao nao ha como o caixa pagar { printf("valor inválido, por favor ,digite um valor que possibilite o saque com notas de 20 e 50"); return 1; } printf("você sacou %d notas de 50 e %d notas de 20", notas50, notas20); return 0; } Esse tipo de problema você tem que racionar com faria na vida real.
  19. Não tenho certeza, mas pode ser que usando "unsigned char", a variável sera tratada como um número inteiro, variando de 0 a 255. Então, na hora de imprimir, será mostrada o código ASCII da letra, ao invés da letra. Mas é só um palpite.
  20. De nada. Uma dica, tente fazer funções para mudar a posição do curso e as cores. Ex.: void gotoxy(int x, int y) { cout << "\033["<< x <<";"<< y <<"H"; };
  21. Foi mal, tinha um espaço a mais que não devia estar, o certo é: //cout << "\033[20; 40H"; errado! cout << "\033[20;40H"; //ok! Só um adendo: para que esses códigos funcionem no console do windows, tem que habilitar no registro: https://stackoverflow.com/questions/51680709/colored-text-output-in-powershell-console-using-ansi-vt100-codes
  22. /****************************************************************************** Online C++ Compiler. Code, Compile, Run and Debug C++ program online. Write your code in this editor and press "Run" button to compile and execute it. *******************************************************************************/ #include <iostream> using namespace std; /*Name BG FG Black 30 40 Red 31 41 Green 32 42 Yellow 33 43 Blue 34 44 Magenta 35 45 Cyan 36 46 White 37 47 Bright Black 90 100 Bright Red 91 101 Bright Green 92 102 Bright Yellow 93 103 Bright Blue 94 104 Bright Magenta 95 105 Bright Cyan 96 106 Bright White 97 107*/ int main() { //Texto vermelho (31) Fundo branco (107) cout << "\033[31m\033[107m"; cout << "Hello Word" << endl; //Move o curso (linha 20, coluna 40) cout << "\033[20; 40H"; //Texto branco (97) Fundo magenta (105) cout << "\033[97m\033[105m"; cout << "Hello Word" << endl; //Volta ao normal cout << "\033[37m\033[40m"; cin.get(); return 0; } /033 equivale a "Esc". Tabela completa dos códigos "Esc" http://ascii-table.com/ansi-escape-sequences.php
  23. Não acho boa não... Será que com isso você não consegue encaixar a placa no slot? https://produto.mercadolivre.com.br/MLB-696118679-chapinhas-low-profile-p-placa-de-video-perfil-baixo-slim-_JM?quantity=1

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!