Ir ao conteúdo
  • Cadastre-se

Lucca Rodrigues

Membro Pleno
  • Posts

    1.081
  • Cadastrado em

  • Última visita

Tudo que Lucca Rodrigues postou

  1. @Caio Lopez [i-1]? desta linha? A primeira posição do vetor tem índice 0 e a última n-1, então... Logicamente devemos subtrair 1 do índice `i´, ou então peça para o usuário digitar um número de 0 a n-1, mas ficaria estranho Lembre-se de alterar o tamanho n do vetor quando for testar: Deveria ser: #define TAM 16 Poste o código completo. De qualquer forma... O intuito disso era só mostrar que você consegue ler inteiros a partir de uma string com sscanf(), ou ler os inteiros com scanf(). Isso lhe seria útil para calcular o dígito verificador. Copiar e colar trechos de código não vai dar certo se não adaptar no contexto de seu código, até porque creio que você não declarou um vetor `dg´ Inclusive tem um argumento a mais ali, um tal i-1 no final. Se quer imprimir o cpf, sendo este uma string, pode fazer algo assim: No contexto de seu código: printf("%c%c%c.%c%c%c.%c%c%c-%c%c", ficha[i-1].cpf[0],ficha[i-1].cpf[1],ficha[i-1].cpf[2], ficha[i-1].cpf[3],ficha[i-1].cpf[4],ficha[i-1].cpf[5], ficha[i-1].cpf[6],ficha[i-1].cpf[7],ficha[i-1].cpf[8], ficha[i-1].cpf[9],ficha[i-1].cpf[10]);
  2. @kgin Aconselho evitar postar o código pronto ou o... Como queira chamar A maioria dos que recorrem ao fórum são estudantes que buscam a resposta para seu exercício, e não pensarão duas vezes antes de plagiar algum código que lhes foi enviado e que convenientemente é o que precisam Te garanto, se for exatamente o que precisam, sequer irão ler seu código, e se faltar algo, não saberão como adicionar... Até porque não foram eles que escreveram Uma chamada da printf() já não resolve? Se está lidando com um estudante, seja mais preciso... @Caio Lopez fgets() é mais conveniente de usar do que scanf() por exemplo: te obriga a limitar a quantidade de caracteres os quais serão lidos e gravados, evita ter que usar um especificador de meio metro, etc Nada te impede de usar scanf(), mas é preferível usar fgets(), dê uma olhada na documentação.
  3. @Caio Lopez Quando chamamos a scanf(), teclamos Enter para finalizar a leitura, portanto sobra um '\n' na stdin que pode interferir na próxima leitura, de qualquer forma, fflush() só está definida para fluxos de saída, então considere usar um especificador no seguinte formato para ler e ignorar o '\n': %*c. Por exemplo: #include <stdio.h> int main() { int x; char c; printf("Numero: "); scanf("%d%*c", &x); printf("Letra: "); scanf("%c%*c", &c); printf("%d\n%c\n", x, c); return 0; } Experimente sem o %*c aí e veja o '\n' sendo lido na segunda chamada da scanf(), impedindo o usuário de digitar o pretendido. Os membros da struct são variáveis quaisquer. Isso já seria possível com ou sem struct. Se declarou `cpf´ como sendo do tipo int ou long long, deve usar o especificador de formato correspondente ou pode ter surpresas na saída. Se quer extrair algo da string `cpf´, pode usar sscanf(), por exemplo: #include <stdio.h> int main() { char cpf[15] = "123.456.789-12"; int dg[4]; sscanf(cpf, "%d%*c%d%*c%d%*c%d", &dg[0], &dg[1], &dg[2], &dg[3]); printf("%d.%d.%d-%d", dg[0], dg[1], dg[2], dg[3]); return 0; } Olha o %*c aí de novo Ele serve pra ler e ignorar um caractere, no caso o '.' e o '-' da string. Na saída temos: Isso pode lhe ser útil para calcular o dígito verificador. Da mesma forma, você pode simplesmente usar scanf() para ler 4 inteiros sem a necessidade de ler uma string e ler 4 inteiros a partir desta: #include <stdio.h> int main() { int dg[4]; scanf("%d%*c%d%*c%d%*c%d", &dg[0], &dg[1], &dg[2], &dg[3]); printf("%d.%d.%d-%d", dg[0], dg[1], dg[2], dg[3]); return 0; }
  4. @Caio Lopez O código que postou foi escrito em C, de C++ não tem nada. Não use fflush() para fluxos de entrada, apenas de saída. Não precisa do & nesse caso, está lendo strings. Sim. Depois de ter a string `cpf´ em mãos, calcule o dígito verificador e compare com o inserido pelo usuário. `cpf´ é um membro da struct `cadastro´, e para acessá-lo, considerando seu código, basta escrever ficha[indice].cpf. Nada distingue `cpf´ de uma string qualquer, um valor atribuído à ela será somente atribuído à ela, e não "dentro da struct" ou coisa assim. Bem, e que outro tipo de dado tentou usar? Está usando o especificador de strings, não há razão para imprimir algo que não é uma string com isso. Basta imprimir nesse formato... #include <stdio.h> int main() { char dg[12] = "12345678912"; printf("%c%c%c.%c%c%c.%c%c%c-%c%c", dg[0],dg[1],dg[2], dg[3],dg[4],dg[5], dg[6],dg[7],dg[8], dg[9],dg[10]); return 0; } Você poderia também usar sprintf(), veja: #include <stdio.h> int main() { char dg[12] = "12345678912"; char cpf[15]; sprintf(cpf, "%c%c%c.%c%c%c.%c%c%c-%c%c", dg[0],dg[1],dg[2], dg[3],dg[4],dg[5], dg[6],dg[7],dg[8], dg[9],dg[10]); printf("%s", cpf); return 0; } A saída é a mesma: De qualquer forma, por que não pede ao usuário para inserir o cpf nesse formato?
  5. @Jarmeson Não poste o código como imagem. Quem precisar testá-lo para então poder te ajudar terá que digitá-lo por completo... Ler uma string com scanf() tem esse inconveniente. Quer que a leitura encerre apenas com um Enter? Use scanset negado: char nome[101]; scanf("%100[^\n]%*c", nome); Leia sobre scanset aqui. Se não quer usar scanf() com especificadores de meio metro, recomendo fgets()
  6. @Danielly Dias Então o programa teria que substituir uma letra por outra? Confesso que ainda estou um pouco confuso Temos letras repetidas nesse novo idioma, por exemplo: Basquete então seria equivalente a wafwydtd, mas e para traduzir de volta pra português? Seria qasquete, basbuete, qasbuete ou basquete? Isso seria um fator que tornaria o programa bem mais complexo. E como você disse: De português pra adoky e pra português novamente não fica do jeito que deveria ser... Também não entendi o seguinte: Não deveria ser kxa em vez de lpa? Enfim... Pode usar a ideia de @devair1010 de pesquisar num vetor. E bem, se for só substituir letras fica tudo mais simples, eu fiz um programinha em C aqui pra testar, veja o resultado: E de volta pra português... Fica basbuete Ele encontra que 'w' está na segunda posição do vetor `adoky´ e corresponde à letra 'b' no vetor `portugues´. O link pra testar o código é esse.
  7. @devair1010 O problema pode ser o compilador que está usando atualmente no IDE, as opções de compilação, etc. O IDE em si não faz diferença. Prefiro usar SendInput() à ter que chamar uma função pra sintetizar cada evento separadamente, como essas que você havia mostrado: keybd_event(), mouse_event(), etc. Aliás, na documentação já é dito: Não tenho nada a sugerir... A função GetPixel() retorna um COLORREF, e para extrair os valores individuais dos componentes vermelho, verde e azul, são usadas as macros GetRValue, GetGValue e GetBValue. E bem, foi basicamente isso que você fez
  8. @Thata_Carvalho Para acessar `diaNascimento´ você precisa indexar `y´, pois este é um vetor. Se for fazer o seguinte: O índice `i´ deve ser previamente inicializado com algum valor.
  9. @devair1010 Mas qual IDE? Qual compilador? Com os compiladores que tenho aqui não dá nenhum problema, não sei um motivo aparente para no seu caso INPUT estar declarada
  10. @devair1010 Você pode sintetizar movimentos e cliques do mouse e pressionamentos de teclas com SendInput(), acredito que não precisa de nenhuma outra função para tal. O que usou pra testar?
  11. @devair1010 Não sei bem se entendi a finalidade Se quer sintetizar o evento de um clique do mouse, pode usar SendInput(): #include <stdio.h> #include <windows.h> int main() { INPUT in; in.type = INPUT_MOUSE; in.mi.dwFlags = MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP; in.mi.time = 0; SendInput(1, &in, sizeof(in)); return 0; } Você pode ler sobre a função aqui, dê uma olhada nas estruturas INPUT e MOUSEINPUT também.
  12. @Thata_Carvalho Em geral é só ler... A variável 'diaNascimento' não foi declarada. Aliás, sempre poste o programa todo. Nem sempre podemos tirar uma conclusão só com um trecho do código, e nem conseguimos testar seu código dessa forma.
  13. @felipenoronha Se cada código tem só 5 caracteres, então declare: char CATALOGO[4][6] = {"SU001", "SU002", "SU003", "US001"}; Se são 400 itens como você disse, não há razão em deixar espaço para mais 4 caracteres, use só o necessário. `CATALOGO´ é um vetor de strings, portanto você deve indexar essa variável. Ex: if (strcmp(COD, CATALOGO[0]) == 0) printf("CODIGO = %s \n\n", COD); Assim você compara `COD´ com "SU001", que está na posição 0 do vetor `CATALOGO´. Você pode usar. Só estou lhe dando uma ajuda com relação à esta forma em que pretende escrever o código, mas você pode tentar seguir a ideia de @arfneto de fazer uma lista. De qualquer forma, a ideia seria incrementar o valor de um índice, veja: char busca[6] = "COD03"; char catalogo[3][6] = {"COD01", "COD02", "COD03"}; char codigo[3][6] = {"DOC01", "DOC02", "DOC03"}; int i; for(i = 0; i < 3; i++) if(strcmp(busca, catalogo[i]) ==0) break; Caso a string `busca´ corresponda à alguma string do vetor `catalogo´, o controle é transferido para fora do loop por meio de break. Assim, podemos avaliar o valor do índice: if(i < 3) printf("\nCodigo = %s\n\n", codigo[i]); else printf("\nItem nao encontrado\n\n"); Se i < 3, a string foi encontrada, tendo em vista que o valor do índice não foi incrementado até atingir valor 3. Caso contrário, a string não foi encontrada, o controle foi transferido para fora do loop pois o índice atingiu valor 3 e a condição do loop se tornou falsa.
  14. @Renato Klehm Aí você já quer demais, convenhamos Não vou te dar mais essa resposta, apenas te digo que se tentar encontrar a característica de transferência do circuito supondo o diodo como ideal, talvez chegue em algum lugar... Claro que precisa das formas de onda na entrada e na saída primeiro. Ex: E de nada...
  15. Desse jeito sobra só 1 malha Saída / Entrada... No domínio da frequência. Com só 1 malha: Tensão no capacitor no domínio de S? Tensão no resistor no domínio de S? Impedância? Seria + ou - isso.
  16. @Renato Klehm E onde está? Mostre o que já fez Quais seriam suas dúvidas? Um amplificador operacional tem uma entrada inversora e uma não-inversora, e pra achar a função de transferência a gente considera o seguinte: A impedância de entrada é infinita, a corrente que flui para as entradas do amplificador é sempre 0; A impedância de saída é 0; A realimentação é sempre para a entrada inversora; Há um curto circuito virtual entre as entradas, então podemos dizer que Vinversora = Vnão-inversora = 0.
  17. @eletron1791 Você associou o identificador `statusA´ à operação `((digitalRead(pinoD1) == 1)´ usando define, então... Não deve funcionar a menos que você coloque um if antes de statusA... E está faltando fechar uma chave aí também. Aliás, o que deveria ser `meu_led_acende´? Mostre como fez as conexões no Arduino, e poste o código todo. Só com parte do código não dá pra ter certeza do que está errado.
  18. @felipenoronha `COD´ deveria ser uma string, e se o tal código tem só 5 caracteres, declare uma string com espaço para 6, já que deve deixar espaço para o terminador: caractere nulo ou '\0'. char COD[6]; E não precisa de & na scanf() para ler e gravar a partir do elemento de índice 0 da string, os caracteres serão lidos e gravados partindo da posição 0 da string sem o &, mas se quiser pode fazer assim também: scanf ("%5s", &COD[0]); Dá no mesmo. O 5 que coloquei depois do % é para limitar a quantidade de caracteres lidos e gravados na string para 5. Agora, se quer comparar strings, use strcmp(). Vejo que já incluiu string.h mas não usou a função, veja: if (strcmp(COD, "SU001") == 0) printf("CODIGO = vt001"); SU001 é uma string, e deve estar entre aspas. Caso strcmp() retorne 0 as strings são idênticas, e é isto que está sendo verificado.
  19. @Vinicius78 Já tentou implementar? Em uma lista duplamente encadeada circular, cada nó tem 2 ponteiros, o ponteiro para o nó anterior ao primeiro nó aponta para o último nó, e o ponteiro para o nó seguinte ao último nó aponta para o primeiro nó, por isso é dita circular.
  20. Que código? Só o que vi foi um enunciado que parece dever de casa... Tem alguma dúvida? Um código? Seja mais objetivo...
  21. @marcoosvlopes Isso é um grande problema A base de uma fila pode ser uma lista, contudo, nem sempre são a mesma coisa. Mas como vai mostrar um valor que não se sabe qual é? Você não inicializou as variáveis. Dê uma lida na resposta dos outros colegas, tente refazer seu programa.
  22. @marcoosvlopes Que ponteiros? Que alocação dinâmica? O que você considera uma lista? A respeito de seu programa... O valor da variável `op´ (declarada no escopo global sem necessidade) faz com que o controle seja transferido para o escopo do while, e então as funções show_info() e menu() são chamadas. Você não inicializou nenhuma das variáveis da struct tlista (rotulada sem necessidade aparente), logo: Sem inicializar as variáveis, não há como saber o valor das mesmas. E bem, existem outros problemas: Basta ler e interpretar. Por exemplo, este primeiro diz que o especificador de formato `%s´ espera um argumento do tipo `char*´, mas o argumento é do tipo `int´, e ele te diz a linha: printf("Arquivo: %s.%s\n", lista.arquivo[i], lista.extensao[i]); Talvez o intuito seria declarar um vetor de strings, mas no caso `arquivo´ e `extensao´ são apenas strings comuns, e ao indexá-las está apenas imprimindo um caractere.
  23. @Caio Fagundes21 Sempre poste o programa completo para que não tenhamos que completá-lo com por exemplo as bibliotecas necessárias pra compilar. Eu editei seu programa, dê uma lida nos comentários: // Faltou incluir stdio.h #include <stdio.h> int main(){ // Nao precisa daquela variavel // resto. int dias; int h; int m; int s; // Evite acentuacao em printf(). printf("Conversao:"); // Use %*c para ler e ignorar // o '\n' digitado ao pressionar // a tecla Enter. scanf("%d%*c", &s); // A logica eh quase essa mesmo // que voce tinha feito... Apenas // mudei algumas coisas. dias = s / 86400; h = (s / 3600) % 24; m = (s / 60) % 60; s = s % 60; printf(" %d dias, %d horas, %d minutos e %d segundos. ", dias, h, m, s); return 0; } Na saída:
  24. @Pedro Torres D Se tratando de float ou int, não precisa de função... Usamos strcmp() e strcpy() se tratando de strings, um vetor de char terminado em '\0' (caractere nulo). Veja: if (produtoTemporario.codigoProduto == codigoProduto) { produtoTemporario.precoProduto = precoProduto; encontrado = 1; }
  25. @Pedro Torres D O protótipo de strcpy(): char *strcpy( char *strDestination, const char *strSource ); No seu código você escreveu: strcpy(produtoTemporario.precoProduto, precoProduto); precoProduto é do tipo float, não char. O que pretende fazer?

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!