Ir ao conteúdo
  • Cadastre-se

Luiz Paulo Escobar

Membro Pleno
  • Posts

    137
  • Cadastrado em

  • Última visita

Tudo que Luiz Paulo Escobar postou

  1. Sou leigo quando se fala de passagem Referencia, não sei o o que está errado, na função ordenar. #include <stdio.h> #include <stdlib.h> #include <locale.h> typedef struct { int codigo; char nome[31]; int telefone; char email[51]; } Cliente; typedef struct { int limite; int total; Cliente cl[30]; } Cadastro; void imprimirLista(Cadastro*); int novoCadastro(Cadastro*); int ordenar(Cadastro*); //main, por enquanto somente duas funções int main() { setlocale(LC_ALL,"portuguese"); Cadastro cad; novoCadastro(&cad); ordenar(&cad); imprimirLista(&cad); system("pause"); return 0; }; //função que imprime tudo na tela void imprimirLista(Cadastro* cad) { int i; printf("cadastro tem %d de %d clientes\n\n", cad->total, cad->limite); for ( i = 0; i < cad->total; i += 1){ // i = i + 1; printf("\t-----> %d\n", cad->cl[i].codigo); printf("\t%s\n", cad->cl[i].nome); printf("\t%d\n", cad->cl[i].telefone); printf("\t%s\n", cad->cl[i].email); } return; } //função que cadastra clientes //por enquanto somente tem memória temporária int novoCadastro(Cadastro* cad) { Cliente modelo; int i, opcao; //cadastro por quantidade printf("Quantos clientes deseja cadastrar?"); scanf("%d",& opcao); for (i=0; i < opcao; i++) { printf("\ndigite o código: "); scanf("%d",&modelo.codigo); fflush(stdin); printf("\ndigite o nome: "); gets(modelo.nome); printf("\nDigite o telefone: "); scanf("%d",&modelo.telefone); printf("\nDigite o email: "); fflush(stdin); gets(modelo.email); cad->cl[i] = modelo; } cad->total = i; cad->limite = 30; return 1; }; // ordena do menor para o maior para função imprimirLista /*Estou com problemas na hora de imprimir, parece que tem algo errado...*/ int ordenar (Cadastro* cad) { int i, j; Cliente troca; for (i = 0; i < 28; i++) { for (j = i + 1; j < 29; j++) { if ((cad->cl[i].codigo) > (cad->cl[j].codigo)) // acredito que o erro esteja nessa linha { troca = cad->cl[i]; cad->cl[i] = cad->cl[j]; cad->cl[j] = troca; } } } return 1; } adicionado 11 minutos depois tentei modificar para esse jeito e é falho, segue -> #include <stdio.h> #include <stdlib.h> #include <locale.h> typedef struct { int codigo; char nome[31]; int telefone; char email[51]; } Cliente; typedef struct { int limite; int total; Cliente cl[30]; } Cadastro; void imprimirLista(Cadastro*); int novoCadastro(Cadastro*); int ordenar(Cadastro*); //main, por enquanto somente duas funções int main() { setlocale(LC_ALL,"portuguese"); Cadastro cad; //sequencia novoCadastro(&cad); ordenar(&cad); imprimirLista(&cad); system("pause"); return 0; }; //função que imprime tudo na tela void imprimirLista(Cadastro* cad) { int i; printf("cadastro tem %d de %d clientes\n\n", cad->total, cad->limite); for ( i = 0; i < cad->total; i += 1){ // i = i + 1; printf("\t-----> %d\n", cad->cl[i].codigo); printf("\t%s\n", cad->cl[i].nome); printf("\t%d\n", cad->cl[i].telefone); printf("\t%s\n", cad->cl[i].email); } return; } //função que cadastra clientes //por enquanto somente tem memória temporária int novoCadastro(Cadastro* cad) { Cliente modelo; int i, opcao; //cadastro por quantidade printf("Quantos clientes deseja cadastrar?"); scanf("%d",& opcao); for (i=0; i < opcao; i++) { printf("\ndigite o código: "); scanf("%d",&modelo.codigo); fflush(stdin); printf("\ndigite o nome: "); gets(modelo.nome); printf("\nDigite o telefone: "); scanf("%d",&modelo.telefone); printf("\nDigite o email: "); fflush(stdin); gets(modelo.email); cad->cl[i] = modelo; } cad->total = i; cad->limite = 30; return 1; }; // ordena do menor para o maior para função imprimirLista /*Estou com problemas na hora de imprimir, parece que tem algo errado...*/ int ordenar (Cadastro* cad) { int i, j; Cliente troca, trocai, trocaj; for (i = 0; i < 28; i++) { for (j = i + 1; j < 29; j++) { trocai = cad->cl[i]; trocaj = cad->cl[j]; if ((trocai.codigo) > (trocaj.codigo)) { troca = trocai; trocai = trocaj; trocaj = troca; // atribui de volta cad->cl[i] = trocai; cad->cl[j] = trocaj; } } } return 1; };
  2. @arfneto A confusão foi intimamente minha, acho que ele salvava o código nas lives em cpp por engano. E assim eu acha q o código dele estava em .cpp. Uma coisa bem bizarra da minha parte. adicionado 16 minutos depois @arfneto *Dúvida* - Porque tudo em C pode rodar em cpp? (Se ele salvava em cpp e funcionava, mesmo sendo duas linguagens diferentes).
  3. @arfneto Beleza, teve um cara que defendeu aqui no fórum pra mim que scanf também era viável, e que algumas pessoas só queriam "vender" o fgets ou gets, pois eu vi isso que tu disse em um fórum NA e fiquei na dúvida... mas em fim, consegui : #include <stdio.h> #include <stdlib.h> #include <locale.h> typedef struct { int codigo; char nome[31]; int telefone; char email[51]; } Cliente; typedef struct { int limite; int total; Cliente cl[30]; } Cadastro; ///////////// void imprimirLista(Cadastro*); int novoCadastro(Cadastro*); int main() { setlocale(LC_ALL,"portuguese"); Cadastro cad; novoCadastro(&cad); imprimirLista(&cad); system("pause"); return 0; }; ///////////// void imprimirLista(Cadastro* cad) { int i; printf("cadastro tem %d de %d clientes\n\n", cad->total, cad->limite); for ( i = 0; i < cad->total; i += 1) printf("\t%d\n", cad->cl[0].codigo); printf("\t%s\n", cad->cl[0].nome); return; } ///////////// int novoCadastro(Cadastro* cad) { Cliente modelo1; /*= { .codigo = 12, .nome = "cliente 12" };*/ Cliente modelo2 ; /*= { 13,"cliente 13" };*/ printf("digite o código:"); scanf("%d",&modelo1.codigo); fflush(stdin); printf("digite o nome"); gets(modelo1.nome); cad->cl[0] = modelo1; //cad->cl[1] = modelo2; //cad->cl[2] = modelo2; //cad->cl[3] = modelo1; cad->total = 1; cad->limite = 30; return 1; }; adicionado 17 minutos depois Na minha facul, o professor envia códigos salvos em cpp, não sei se é por preguiça ou se tem alguns significados, as vezes ele manda códigos sem revisar, que não funciona, ai tenho q modificar algumas coisas e salvar em .cm pois a faculdade zera se for salvo em .cpp, (faculdade digo, pois são vários professores). É EAD. E ele ainda vende o curso dele pra "tirar as dúvidas".
  4. Eu fiz um código que não funciona. Seria isso, vou tentar utilizar seu modelo, que vi que é mais fácil e intuitivo. Que bom que existem pessoas como você! Nesse código, tentei aplicar o seu modelo, usando scanf, mas foi falho, com essa clareada que tu me deu com os complementos, vou tentar aplicar. Ai trago um código que funcione, ou não pra você dar uma olhada! Na teoria tentei dizer que meu código não funciona
  5. @arfneto Como eu faria algo do tipo --> #include <stdio.h> #include <stdlib.h> //esse meu código tá um problemão typedef struct { int codigo; char nome[31]; int telefone; char email[51]; } Cliente; typedef struct { int limite; int total; Cliente cl[30]; } Cadastro; void imprimirLista(Cadastro*); int novoCadastro(Cadastro*); int main() { Cadastro cad; novoCadastro(&cad); imprimirLista(&cad); system("pause"); return 0; } void imprimirLista(Cadastro* cad) { printf("cadastro tem %d de %d clientes\n\n", cad->total, cad->limite); for (int i = 0; i < cad->total; i += 1) printf("%d", cad->cl[i].codigo); return; } int novoCadastro(Cadastro* cad) { int i; for (i = 0; i < 4; i++) { printf("Digite o código do cliente %d\n", i+1); scanf("%d",&cad->cl[i].codigo); printf("Digite o nome do cliente %d\n", i+1); scanf("%d",&cad->cl[i].nome); cad->total = i+1; } cad->limite = 30; return 4; };
  6. precisava de um código que fosse estruturado somente em C, sem cpp no meio. Eu quero achar um jeito de fazer uma função void percorrer um vetor de struct passado por referencia, e ir fazendo scanf das informações. Não. Obrigado pela dica, eu peguei essa de usar void sem argumentos de um cara que está avançado na UFMS SC, que bom que já vou pegar o caminho certo no começo!!! typedef struct { int codigo; char nome[31]; int telefone; char email[51]; } Cliente; typedef struct { int limite; int total; Cliente cl[30]; } Cadastro; não entendi quase nada do que isso faz, nunca vi isso na vida, vou procurar uns exemplos pra tentar entender. tu fez isso para não precisar mais escrever struct para passar como parametro? ou para declarar? Eu iria atualizar o valor de cadastros até que de um total, assim eu não precisaria de um vetor de struct? show Cliente pertence a Cadastro? por isso tu passou somente cadastro por referencia? Nessa parte__> int novoCadastro(Cadastro* cad) { Cliente modelo1 = { .codigo = 12, .nome = "cliente 12" }; //não entendi esse ponto e virgula Cliente modelo2 = { 13,"cliente 13" }; //por que aqui está sem o .codigo e .nome cad->cl[0] = modelo1; // vou tentar aplicar isso com scanf e um contador... cad->cl[1] = modelo2; cad->cl[2] = modelo2; cad->cl[3] = modelo1; cad->total = 4; // aqui mostraria que foi cadastrado 4 clientes cad->limite = 30; return 4; }; SIMM!!! Estou estudando seu código e agora está fazendo todo sentido!!! que demais. antes parecia grego pra mim!!! adicionado 16 minutos depois Se eu tirar o ponto e virgula do main, o que muda?
  7. @arfneto Seu código está bem avançado pra mim, eu dei um jeito e fiz simples meu código porque não dava tempo. Peguei e estudei um pouco sobre isso pois não estava entendendo, não vi isso na minha vida haha. seria --> (*cad).cl[0] Meu professor me passou só o super básico pelo o que estou vendo, estou em C faz 4 semanas. Estou mais ansioso pra aprender agora, só pelo fato de não ter entendido quase nada do seu código. Eu estava usando o Dev c++ ultrapassado, mexi nas configurações pra c99
  8. Esse código tem que ser estritamente .c Queria passar essa atividade de preencher uma struct com informações para uma função, como eu poderia fazer, nesse mesmo código? não tenho conhecimento nessa parte. O código está incompleto --> OBS: O código está bem mal feito pois estou em uma viagem urgente e tenho que estregar algo até da aqui algumas horas e estou sem internet somente móvel... #include <stdio.h> #include <stdlib.h> #include <string.h> #include <locale.h> void novoCadastro(); void imprimirLista(); void encerrar(); void erro(); struct cliente{ int codigo; char nome[31]; int telefone; char email[51]; }; int main() { setlocale(LC_ALL,"portuguese"); struct cliente pessoa[5]; int i, opcao; printf("1 - Novo cadastro --\n"); printf("2 - Listar os cadastros --\n"); printf("0 - Sair --\n"); scanf("%d", &opcao); switch (opcao) { //aqui eu chamaria a função case 1: novoCadastro(); break; case 2: imprimirLista(); break; case 0: encerrar(); break; default: erro(); break; } } void novoCadastro() { //nesse procedimento eu preencheria ela int i; system("cls"); printf("---Cadastro de clientes---"); //if (pessoa[4].codigo == 5) if (pessoa[4].codigo != NULL) printf("Agenda lotada!!!"); else{ for (i = 0; i < 5; i++) { pessoa[i].codigo = i+1; printf("Digite o nome do cliente: \n"); scanf("%30[^\n]s", pessoa[i].nome); printf("Digite o numero de telefone: \n"); scanf("%d", & pessoa[i].numero); scanf("%50[^\n]s", pessoa[i].email); } } }
  9. @V!OLADOR Estava pensando nisso também, esse exemplo me chegou assim, logo sai pesquisando e fiquei planando, agora que tu amarrou uma pedra no meu pé, eu posso voltar a dar meu difíceis passos, obgd
  10. Qual o motivo da utilização do sizeof dentro do fgets nesse exemplo? Sei que ele retorna bytes e que o fgets precisa de um parâmetro de dimensão --> exemplo 50 como máximo de que pode ser armazenado em uma string. #include <stdio.h> #define max 10 int main() { char palavra[max]; int i, j; FILE *arq; //cria e vincula o arquivo a uma variavel char *arq = "texto.txt"; //abre o arquivo com especificação w : somente escrever arq = fopen ("texto.txt", "w"); //necessário para casos de erros externos if (arq == NULL) printf ("Arquivo não aberto. Erro\n"); else { /*OBS: não será armazenado todas as informações na váriavel, mas sim,será usada como um tipo de onibus de strings, ou seja, ela armazena e joga no arquivo*/ for (i=0; i<max; i++){ printf("Digite a %dª palavra: ", i+1); scanf("%s", palavra); fflush(stdin); //função que escreve e pula um linha no arquivo do HD fprintf(arq, "%s\n", palavra); } } fclose(arq); //abre o arquivo novamente, porém no modo leitura "r" arq = fopen ("texto.txt", "r"); if (arq == NULL) printf ("\nArquivo não aberto. Erro\n"); else //le o arquivo e printa na tela linha por linha != null //não sei pra que funciona o sizeof (nesse exemplo) { while((fgets(palavra, sizeof(palavra), arq))!=NULL ) printf("%s\n", palavra); } fclose(arq); return (0); }
  11. Tem algum código mais eficiente do que esse? eu quebrei a cabeça com isso: Questão --> O processamento de dados textuais, atualmente, é bastante avançado, e já existem bibliotecas capazes de auxiliar neste tipo de situação. Elabore um programa que leia uma palavra e, se ela tiver número ímpar de caracteres, imprima todas as suas vogais. #include <stdio.h> #include <string.h> #define max 10 int main() { char palavra[max]; int i; char letra; printf("Digite uma palavra: "); scanf("%s", palavra); strlwr(palavra); if (strlen(palavra) % 2 == 1) { for (i = 0; i < max; i++) { letra = palavra[i]; switch (letra) { case 'a' : printf("%c", letra); break; case 'e' : printf("%c", letra); break; case 'i' : printf("%c", letra); break; case 'o' : printf("%c", letra); break; case 'u' : printf("%c", letra); break; } } } }
  12. @Lucca Rodrigues Eu mesmo fiz, queria aprender essa ordenação
  13. @Lucca Rodrigues Porque i+1 seria 2 adicionado 2 minutos depois for (j = i+1; j <= 10; j++) //-----> for (j = 2; j <= 10; j++) esse aqui também seria incrementado (Não entendi a diferença)
  14. Quando se troca i+1 por 2 na Ordenação bolha ele não funciona. Por que? Código: #include <stdio.h> #include <stdlib.h> int main() { int vetor[10], i, j, troca; for(i= 1; i <= 10; i++) { printf("Digite um numero : "); scanf("%d", &vetor[i]); } for(i = 1; i < 10; i++) { for (j = i+1; j <= 10; j++) //for (j = 2; j <= 10; j++) { if (vetor[i] > vetor[j]) { troca = vetor[i]; vetor[i] = vetor[j]; vetor[j] = troca; } } } for(i= 1; i <= 10; i++) { printf("-----> %d", vetor[i]); } return(0); }
  15. um exemplo seria, se eu quisesse um texto em parágrafos? o espaço não é contado como \n?
  16. @Lucca Rodrigues Eu estava vendo e digitando esse código que alias é enorme, de um livro, e buguei nesse trecho, achei que %50 fosse alguma dimensão de char hahah, obrigado, agora esclareceu!
  17. @Lucca Rodrigues Vi em um post que tem vários problemas :
  18. @Lucca Rodrigues fgets(); não seria melhor?
  19. What does %[^\n] mean in C? I saw it in a program which uses scanf for taking multiple word input into a string variable. I don't understand though because I learned that scanf can't take multiple words. Here is the ex code: system("cls"); for (i=0; i<TAM; i++) { printf("digite o código do livro da posição %d", i+1); scanf("%d", &ficha[i].codigo); fflush(stdin); printf("Digite o título do livro: "); scanf("%50[^\n]s", &ficha.titulo); // fflush(stdin); printf("Digite o nome do autor; "); // scanf("%30[^\n]s") }
  20. É uma dúvida frequente, se em lógica o && Só resulta em verdadeiro quando ambos os lados estão igual esse código dentro do while não faz sentido pra mim: #include <stdio.h> int main() { int vetorA[5]; int i, acha, busca; for (i=0;i<5;i++) { printf("Digite o %d elemento: ", i); scanf("%d", &vetorA[i]); } printf("Informe o elemento que deseja buscar: "); scanf("%d", &busca); i = 0; acha = 0; while ((acha == 0 ) && (i < 5)) // aqui ele só para se as duas forem verdadeiras? { if (vetorA[i] == busca) { acha = 1; //então mesmo aqui sendo verdadeiro, ele continua? } else { i++; // o contador vai ser incrementado até o final? } } if (acha == 1) printf("O elemento %d foi encontrado na posição %d.",busca, i); else printf("O elemento não foi encontrado."); return (0); } E o OU não funciona em while?
  21. @charles95 Amigo, quando tu se forma nessa área, eu não sou um cara formado e atuando, mas pesquisei até aprender que: Você vai se tornar um profissional que resolve problemas dos outros. Se tu não resolve o seu problema, mesmo com o código que ele passou ali mastigado e de mão beijada, como você vai resolver o problema dos outros? A parada é essa, tu vem aqui a pessoa vai te auxiliar com um exemplo prático, alguns podem até te dar mastigado e pronto, mas tu tem que pegar e decifrar o código, destruir sua mente de madrugada(manhã, ou tarde haha), se tu quer realmente aprender a resolver problemas: Essa é uma profissão de prática, ou seja, ela é difícil, um exemplo é ter o sonho de ser igual ao Pablo Picasso, mas a única coisa que faz é pegar uma revista de colorir por números e começar a pintar com a "falsa impressão" de que está aprendendo, se tu não parar de querer algo mastigado e começar a se virar, decifrar e aprender além do que deve, tu não vai passar de um coloridor de revistas. O que eu digo é, ele passou algo bem prático e LIMPO, e seu dever, (se quer aprender com um cara que já tem 60 anos e muita experiência na área) é replicar , entender e reproduzir um código do seu jeito.
  22. Função Gotoxy em C O comando gotoxy() é um comando da biblioteca conio. c, que é uma biblioteca modificada que contém alguns comandos personalizados (ver postagem relacionada). Este comando serve para posicionar qualquer texto na tela de saída do programa. cara, eu não cheguei nessa parte ainda, mas sei desse comando pois aprendi ele em Pascal (uma linguagem bem básica); procura um pouco sobre ele que tu vai conseguir fazer seu rodapé, creio, se eu estiver errado alguém me corrige. esse tópico já feito pode te ajudar, se estudar muuuito sobre é claro Acabei de pesquisar adicionado 8 minutos depois Aqui vai um exemplo que funciona: #include <stdio.h> #include <windows.h> //Função gotoxy void gotoxy(int x, int y) { COORD coord; coord.X = x; coord.Y = y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord); } main(){ int coluna = 5; int linha = 3; system("cls"); gotoxy(coluna, linha); printf("Terminal de"); gotoxy(coluna, linha+1); printf("Informacao.\n"); }
  23. Opa amigão, tudo bom?, sou novo na área, nem estudei vetores em C ainda(se estiver errado desconsidere), mas já tenho uma base boa de lógica, procurei sobre matrizes bi dimensionais e fiz outro código com base nisso: #include<stdio.h> #include<conio.h> int main (void ) { int matriz[3][3],i, j; printf ("\nDigite valor para os elementos da matriz\n\n"); for ( i=0; i<3; i++ ) for ( j=0; j<3; j++ ) { printf ("\nElemento[%d][%d] = ", i, j); scanf ("%d", &matriz[ i ][ j ]); } printf("\n\n******************* Saida de Dados ********************* \n\n"); for ( i=0; i<3; i++ ) for ( j=0; j<3; j++ ) { printf ("\nElemento[%d][%d] = %d\n", i, j,matriz[ i ][ j ]); } getch(); return(0); } E adaptei pra tridimensional, para seu respectivo problema e acho que deu certo, vê ai se ele corresponde a sua questão. Segue o código: #include<stdio.h> #include <locale.h> #define TAM 3 // constante de tamanho 3 int main() { setlocale(LC_ALL,"portuguese"); // saída em portugues int Matriz[TAM][TAM][TAM],i,j,z; // constante //preencher ela for(i=0; i<=2; i++) { for(j=0; j<=2; j++) { for(z=0; z<=2; z++) { printf("Preencha a matriz tridimen \n"); scanf("%d", &Matriz[i] [j] [z]); // posição 0 , 0, 0 linha, zero , coluna zero e profundidade 0 (não sei se é assim q funciona, acredito q sim) } } } for(i=0; i<=2; i++) { for(j=0; j<=2; j++) { for(z=0; z<=2; z++) { if (Matriz [i][j][z] % 2 == 0 ) // se o módulo da matriz for 0 é par { printf(" %d é par", Matriz [i][j][z]); } } } } return 0; } Só adapte para o que o final da questão pede. Qual quer coisa estou por ai ! XD
  24. @Camila Campos Oi, tudo bom? não sei resolver seu problema pois sou novo na área mas sei te passar algo que vai resolver a vida de quem quer te ajudar: Ali onde está marcado de vermelho tu abre uma caixa para colocar seus códigos. Ou seja , quando tu clicar aparece uma caixa de codificação na frente do cursor, boa sorte!

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!