Ir ao conteúdo
  • Cadastre-se

Poisoned00

Membro Pleno
  • Posts

    25
  • Cadastrado em

  • Última visita

Tudo que Poisoned00 postou

  1. Eai galera ! to desenvolvendo um trabalho em C, para uma disciplina de estrutura de dados, e estamos estudando sobre ponteiros void pra maximização da memória . O trabalho é desenvolver uma agenda pra guardar nomes e numeros de pessoas , implementando tudo utilizando apenas um ponteiro void , contendo todas as variáveis dentro dele. A agenda já está pronta , e ta funcionando direitinho , o que estou tendo problema para pensar em como implementar é os alguritimos de ordenação.. inicialmente o bubble sort , insertion e select.. Alguém tem ideia de como posso fazer isso ? #include <stdio.h> #include <stdlib.h> //struct que pode conter qualquer variável , entretanto as variáveis deverão ser incluidas na memória de pbuffer typedef struct control{ int ContadorDePessoas; int TotalDePessoas; int OpcaoDoMenu; int i; }variaveis; //Struct para armazenar nome e numero typedef struct user{ char Nome[20]; int Num; }user; user *ptrUser;//usuarioAtual variaveis *ptrControl; user *aux;//primeiroUsuario void *pbuffer; void imprimirUm(user *ptrUser){ printf("|Nome: %s",ptrUser->Nome); printf("\n|Numero: %d",ptrUser->Num); } void imprimirTodos(){ printf("\n|=========================[Listar]========================|\n"); user *ptrAtual; ptrAtual = aux; for(ptrControl->ContadorDePessoas = 0 ; ptrControl->ContadorDePessoas < ptrControl->TotalDePessoas ; ptrControl->ContadorDePessoas++,ptrAtual++ ){ printf("\nNome: %s",ptrAtual->Nome); printf("\nNumero: %d\n",ptrAtual->Num); } printf("|=========================================================|\n"); } void inserir(user *ptrUser){ printf("\n|=========================[Inserir]=======================|\n"); // ao inserir um usuario aumenta a variável de quantidade de pessoas ptrControl->TotalDePessoas++; //realocação de memória em pbuffer , o qual irá receber a primeira posição das variáveis mais a quantidade total de pessoas vezes o tamanho de usuarios pbuffer = realloc(pbuffer,(sizeof(variaveis) + ptrControl->TotalDePessoas * sizeof(user))); //ptrUser aponta pra pbuffer e pula a primeira posição que é a das variáveis de controle ptrUser = pbuffer+sizeof(variaveis); // aux recebe a posição de ptrUser para o ponteiro não perder a referência da primeira posição de usuarios aux = ptrUser; //ptrControl também aponta pra pbuffer porém , ele aponta para a posição a qual tem as variáveis // mesmo caso que ptrUser porém o ptrUser aponta pra posição a frente das variáveis , as quais o ptrControl manipula ptrControl = pbuffer; //Faz um loop em ptrUser , até que ptrControl->ContadorDePessoas vá de 0 , até ptrControl->TotalDePessoas-1 , ou seja , até o ultimo usuario inserido for(ptrControl->ContadorDePessoas = 0; ptrControl->ContadorDePessoas < ptrControl->TotalDePessoas-1; ptrControl->ContadorDePessoas++,ptrUser++){} printf("|Nome:"); scanf("%s",ptrUser->Nome); printf("|Numero:"); scanf("%d",&ptrUser->Num); printf("|=========================================================|\n"); } int main(int argc, char const *argv[]) { //aloca a primeira posição de memória de pbuffer para caber as variaveis que estão na struct variaveis pbuffer = malloc(sizeof(variaveis)); //ptrControl aponta para a posição alocada para as variaveis ptrControl = pbuffer; // testa se pbuffer conseguiu alocar if(pbuffer == NULL){ return -1; } // Inicializa contador de pessoas e total de pessoas ptrControl->ContadorDePessoas = 0 ; ptrControl->TotalDePessoas = 0 ; for (;;){ printf("\n|=========================[Agenda]========================|\n"); printf("| 1-Novo contato\n"); printf("| 2-Listar contatos\n"); printf("| 3-Sair\n"); printf("|=========================================================|\n"); printf("|Selecione uma das opções: "); scanf("%d",&ptrControl->OpcaoDoMenu); switch(ptrControl->OpcaoDoMenu){ case 1: inserir(ptrUser); ptrUser = pbuffer; getchar(); break; case 2: imprimirTodos(); break; case 3: free(pbuffer); free(ptrUser); free(ptrControl); return 0; break; default: printf("\nOpção incorreta!"); } } return 0; }
  2. A ideia é bem simples , criar uma agenda pra receber nomes e numeros de pessoas , e guarda-los. porém toda a memória usada tem que ficar em apenas 1 variável , que é um ponteiro void , as demais variáveis podem ser apenas structs , ou ponteiros que guardem APENAS endereços de memória.. meu código consegue inserir , porém ta imprimindo errado . detalhe é que se eu inserir apenas 2 pessoas , ele insere e imprime certo.. mais que isso imprime lixo.. #include <stdio.h> #include <string.h> #include <stdlib.h> typedef struct control{ int ContadorDePessoas; // contador de pessoas no loop int TotalDePessoas; // armazena a quantidade total de pessoas }control; typedef struct user{ char Nome[20]; // nome da pessoa int Num; // numero da pessoa control controle; }user; user *ptrUser;//ptrUser//usuarioAtual user *aux;//aux//primeiroUsuario void *pbuffer; // essa função funciona void imprimirUm(user *ptrUser){ printf("\nNome: %s",ptrUser->Nome); printf("\nNumero: %d",ptrUser->Num); ptrUser++; } // essa função imprime valores errados ou trocados void imprimirTodos(){ user *ptrAtual; ptrAtual = aux; for(aux->controle.ContadorDePessoas = 0 ; aux->controle.ContadorDePessoas < aux->controle.TotalDePessoas ; aux->controle.ContadorDePessoas++,ptrAtual++ ){ printf("\nNome: %s",ptrAtual->Nome); printf("\nNumero: %d",ptrAtual->Num); } } void inserir(user *ptrUser){ ptrUser->controle.TotalDePessoas++; if(ptrUser->controle.TotalDePessoas > 1){ ptrUser = realloc(ptrUser,(aux->controle.TotalDePessoas * sizeof(user))); aux = ptrUser; for (aux->controle.ContadorDePessoas = 0; aux->controle.ContadorDePessoas < ptrUser->controle.TotalDePessoas; aux->controle.ContadorDePessoas++){ ptrUser++; } }else{ aux = ptrUser; } printf("Nome:"); scanf("%[^\n]",ptrUser->Nome); printf("Numero:"); scanf("%d",&ptrUser->Num); //Essa função funciona certinho para cada usuario. //imprimirUm(ptrUser); ptrUser++; } int main(int argc, char const *argv[]) { pbuffer = malloc(sizeof(user)); if(pbuffer == NULL){ return -1; } ptrUser = pbuffer ; ptrUser->controle.TotalDePessoas = 0 ; for (int i = 0; i < 3; i++){ inserir(ptrUser); getchar(); } imprimirTodos(); return 0; } help!
  3. Esse é o exemplo que me foi enviado.. Eu teria que criar algo parecido.. me parece bem simples na real , e também é pra estagiar , eu imagino que o cara que vai me contratar tenha noção de que eu sou novato.. adicionado 6 minutos depois então eu poderia fazer em Java , mas a vaga é pra usar react + redux , dai não da pra correr disso...
  4. Dale galera! Recentemente eu recebi uma proposta de estágio pra front-end , utilizando react native + Redux , bem massa a proposta , estou fazendo ciência da computação mas iria se encaixar no meu horário. A dúvida é o seguinte ... eu preciso criar um app o qual o usuário irá desenhar caixas de texto na tela.. porém eu ainda não tenho conhecimento em React native , e precisaria estudar e tal , dai eu já até pensei em fazer um curso na udemy.. Mas eu preciso responder em quanto tempo eu demoraria pra fazer esse app.. O que vocês acham ? 2 semanas seria um tempo bom pra aprender essa nova linguagem e fazer o app ? Eu acho que o app é até bem simples... eu tenho conhecimento em C e Java , um pouco de html , css , e C++. , então não iria iniciar do " Completo Zero " kkkkk. O que vocês acham ? me deem sugestões please!
  5. Dale galera , to com um problema aqui meio cabeludo.. O exercício é o seguinte.. criar um ponteiro void que vai armazenar quantidade x de usuários , nome e idade.. Porém minha dúvida é o seguinte.. como eu vou utilizar o ponteiro void e fazer ele armazenar as informações corretamente ? Eu tentei fazer ele armazenar os valores de forma adjacente , porém depois desse teste : void Buffer(){ void *pBuffer; printf("\n%d",pBuffer); pBuffer = malloc(sizeof(int)); printf("\nmalloc-int>%d",pBuffer); pBuffer += sizeof(int); printf("\npulo-4>%d",pBuffer); pBuffer = malloc(20*sizeof(char)); printf("\nmalloc-char>%d",pBuffer); pBuffer += 20*sizeof(char); printf("\npulo-20>%d",pBuffer); pBuffer = malloc(sizeof(int)); printf("\nmalloc-int>%d",pBuffer); } eu percebi que ele não armazena de forma adjacente.. ou seja as posições de memória que saem no escape %d não são adjacentes ... então eu não conseguiria acessar os valores seguindo essa lógica.. Não tenho ideia de como fazer isso agora.. :/
  6. Dale galera, a um tempinho eu conheci um algorítimo de ordenação, e recentemente estou aprofundando os estudos sobre algorítimos de ordenação. Gostaria de descobrir o nome desse algorítimo... Eu pensava que era bubble sort , mas dai hoje descobri que na real o bubble é beeeem diferente.. Se alguém souber me diga pls. #include <stdio.h> int main(int argc, char const *argv[]) { int lista[10]={2,3,4,45,56,32,1,24,2,1}; int aux; printf("antes:"); for (int i = 0; i < 10; ++i) { printf("%d ",lista[i]); } printf("\nDepois:"); for (int i = 0; i < 10; ++i) { for (int j = 0; j < 10; ++j) { if(lista[i]<lista[j]){ aux = lista[i]; lista[i]=lista[j]; lista[j]=aux; } } } for (int i = 0; i < 10; ++i) { printf("%d ",lista[i]); } return 0; }
  7. Cara valeu pela força ! eu achei massa tu ter falado sobre o trabalho com JAVA , a minha intenção é trabalhar como programador nessa linguagem depois da faculdade. E eu sempre fico me perguntando em como é o dia a dia nessa linguagem , e como são os trabalhos desenvolvidos , ou o que tem mais se desenvolvido com java no mercado de trabalho por ai.. Queria ter uma direção pra o que estudar sobre java , no meu curso a gente estuda a linguagem em uma disciplina de programação orientada a objetos , mas acho que depois é só C ou python , ah e VDHL na parte de eletrônica..
  8. nossa eu sou muito burro ! OIJAWEOIJAWIOE eu sabia que matriz usava ponteiros de ponteiros , mas eu não liguei ao fato de que vetores de strings acabam sendo eram matrizes também ! Cara obrigadão ! vai me ajudar muito , eu to fazendo uma disciplina na faculdade de BCC chamada algoritimos e estrutura de dados e to vendo ponteiros pra tudo quanto é lado kkkkk Ok , uma pergunta : no trecho em que você faz a alocação dinâmica , primeiro , você não utiliza typecasting ( em nenhuma das duas alocações ) . Eu aprendi que pra fazer uma alocação a função malloc considera todos as variáveis como ponteiros do tipo void , então é necessário fazer o typecasting , é correto isso ?é realmente necessário ? eu já vi diversos códigos que não o fazem.. Exemplo o meu código ta com typecasting na frente : (char*)malloc(20*sizeof(char*)) no inicio da alocação eu informo que o ponteiro é do tipo (char*). o seu não : malloc(5 * sizeof(char *)) . outra pergunta : no primeiro você usou sizeof(char*) , no segundo usou sizeof(char). A pergunta é : é um ponteiro de ponteiros ( char**) , portanto , no caso eu não deveria alocar espaços de memórias primeiramente para ponteiro de ponteiros ? tipo sizeof(char**) e em seguida alocar memória para o ponteiro sizeof(char*) ? essa dúvida vem do fato de que já que vamos alocar memória para essa variável , e a variável é x , então ao meu ver deveria ser alocada memória para o espaço x . entende ? desculpa pela bíblia , mas eu to bem enrolado com estrutura de dados.. kkkkkk
  9. Eai galera , estou implementando uma vetor de string simples , a ideia é apenas inserir nomes , e após inserir os nomes imprimi-los. Porém só posso usar ponteiros. Estou tendo uma certa dificuldade com isso .. e até o momento consegui fazer o código inserir 1 nome, quando ele vai pro próximo nome da APPCRASH , o windows força o encerramento da aplicação.. Help please. #include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char const *argv[]) { char *usuarios[20]; char *aux; int *i; aux = (char*)malloc(20*sizeof(char*)); i = (int*)malloc(sizeof(int*)); *i = 0; for(;;){ printf("Entre com um nome:"); fgets(aux,20,stdin); usuarios[*i] = malloc ((strlen(aux))*sizeof(char)); strcpy(usuarios[*i],aux); if((strcmp(usuarios[*i],"\n"))==0){ break; } printf("Adcionado > %sNa pos > %d\n",usuarios[*i],*i); i++; } return 0; }
  10. bah que massa não sabia da existência dessa função strtok , agora funcionou 100% muito obrigado pela ajuda!
  11. #include <stdio.h> #include <string.h> #define MAX 100 #define MIN 0 #define START 1 int main(int argc, char **argv) { char *ptr,emot[MAX][20],text[MAX][80]; int n,m,cont; int len; cont = MIN ; n=m=START; fflush(NULL); while(n != MIN && m != MIN) { scanf("%d",&n); scanf("%d",&m); fflush(NULL); for (int i = 0; i <= n; i++) { fgets(emot[i],MAX,stdin); } for (int k = 0; k < m; k++) { fgets(text[k],MAX,stdin); for (int j = 1; j <=n; j++) { ptr = strstr(text[k+1],emot[j]); // seria aqui onde adciono ? if(ptr!=NULL) { cont ++; } } } printf("%d\n",cont); cont=0; } return 0; }
  12. bah mano não funcionou :/ deu Crash quando vou começar a passar os textos..
  13. Olá galera! Estou tendo um dificuldades pra solucionar esse problema.. a ideia principal do código é receber n números de emoticons e m textos , e então procurar os emoticons nos textos e contar quantas vezes eles aparecem.. o código está funcional pro caso do usuário que entrar apenas 1 emoticon por texto.. logo , se entrar 2 ou mais , ele irá contar como apenas 1.. Estou tendo dificuldade com isso , por envolver "vetor de string" , alguém pode me ajudar ? #include <stdio.h> #include <string.h> #define MAX 100 #define MIN 0 #define START 1 int main(int argc, char **argv) { char *ptr,emot[MAX][20],text[MAX][80]; int n,m,cont; int len; cont = MIN ; n=m=START; fflush(NULL); while(n != MIN && m != MIN) // esse loop é apenas para que 0 seja o critério de parada { scanf("%d",&n); scanf("%d",&m); fflush(NULL); for (int i = 0; i <= n; i++) { fgets(emot[i],MAX,stdin); } for (int k = 0; k < m; k++) { fgets(text[k],MAX,stdin); for (int j = 1; j <=n; j++) { ptr = strstr(text[k],emot[j]); /* a minha ideia de solucionar começa aqui , utilizei a função * strstr que direciona o ponteiro para a primeira posição a * qual foi encontrada a substring dentro da string * porém ele procura apenas 1 vez portanto , se tiver mais * emoticons dentro da string , ele não irá encontrar.. */ if(ptr!=NULL) { cont ++; } } } printf("%d\n",cont); cont=0; } return 0; }
  14. Cara adoro quando tu conserta meus códigos kkk aprendo muito contigo ! valeu
  15. #include <stdio.h> int main(int argc, char **argv) { int vet[40]; int temp; for (int i = 0; i < 40; i++) { scanf("%d",&vet[i]); } for (int i = 0; i < 40; i++) { for (int k = 0; k < 40; k++) { if(vet[i]>vet[k]) { temp=vet[k]; vet[k]=vet[i]; vet[i]=temp; } } } for (int i = 0; i < 3; i++) { printf("%d ",vet[i]); } return 0; } ta ae!
  16. Fiz alguns ajustes , umas observações pra melhorar a fluência do código , por exemplo o for(i = 0;i<strlen(string)... Isso não é legal fazer no for , aparentemente deixa o código menor , mas na prática , toda vez que o for reinicializar no loop , ele faz a contagem do tamanho da string. Então isso aumenta o tempo de execução do código. Outra coisa , quando for usar scanf pra string , não usa o operador unário "&" ou operador de endereço.
  17. #include <stdio.h> #define MAX 5 int main(int argc, char **argv) { int pares[MAX]; int impares[MAX]; int vet[MAX]; int a,b; float media; int soma; int j; soma=media=a=b=0; // inicializando as variaveis todas em 0 // recebendo os valores for (int i = 0; i < MAX; i++) { scanf("%d",&vet[i]); if(vet[i]%2==0) // verificando se o valor recebido é par { pares[a]=vet[i]; a++; // adcionando um valor a mais no indice do ar }else // se o valor recebido não for par , então é impar { impares[b]=vet[i]; b++;// adcionando um valor a mais no indice do impar } } // verificando a soma dos valores pares for (int i = 0; i < a; i++) { soma+=pares[i]; } // verificando a media dos valores impares for (j = 0; j < b; j++) { media +=impares[j]; } media/=j; printf("Numeros impares -> %d\nNumeros pares -> %d\nSoma dos pares -> %d\nMedia dos impares -> %.1f" ,b,a,soma,media); return 0; } Ta ae mano! bons estudos !
  18. Sim , já sabia sobre essa função dos navegadores. A função a qual quero automatizar , é que ao entrar no provedor , o navegador automaticamente faça o login. Sem que seja necessário que o usuário clique no botão de logon.
  19. olá galera. Primeiro vou explicar a problemática , eu moro em um alojamento na faculdade , e toda vez que preciso utilizar a internet do aloja , eu tenho que informar minha matricula e senha. Dai Tive a ideia de fazer um script pra automatizar a tarefa no computador , na qual quando tu abrisse o navegador , as informações de usuário já estivessem salvas ali , e o próprio navegador enviaria as informações automaticamente para o servidor do site. Como posso automatizar isso? A ideia que tive é basicamente acessar a caixa do formulário do navegador , e a tecla " enter " fosse pressionada. Mas eu conheço um pouco de C , C++ e java ainda... Não tenho ideia de como poderia fazer esse código ... alguém poderia me dar uma luz ? Grato!
  20. Dale galera! To com dificuldade na implementação de um problema em C. Basicamente tu recebe uma quantidade n de frases, e faz a busca entre as palavras as letras que mais se repetem. BUT meu professor de programação pediu pra ordenar as letras que se reptem, em ordem decrescente.. Eu terminei agora de fazer a criptoanálise , e encontrei todas as repetições dos caracteres nas frases. Mas ta bem complicado colocar uma ordenação nisso. kkkk Agradeço a quem poder me ajudar! #include <stdio.h> #include <string.h> int main(int argc, char **argv) { char string[100]; int freq_up[26]={0}; int freq_down[26]={0}; int n; scanf("%d",&n); for(int x=0;x<=n;x++) { gets(string); for(int i=0;i<(strlen(string));i++) { if(string[i]>='a' && string[i]<='z') { freq_down[string[i]-97]++; } if(string[i]>='A' && string[i]<='Z') { freq_up[string[i]-65]++; } } setbuf(stdin,NULL); } for (int i = 0; i < 26; i++) { if(freq_up[i]>=1) { printf("%c apareceu %d vezes \n",i+65,freq_up[i]); } } for (int i = 0; i < 26; i++) { if(freq_down[i]>=1 ) { printf("%c apareceu %d vezes \n",i+97,freq_down[i]); } } return 0; }
  21. /* * Escreva um programa para calcular o inverso de um número qualquer x (inverso = 1/x). */ #include <stdio.h> int main(int argc, char **argv) { float n; float inv; scanf("%f",&n); inv = 1/n; printf("x = %.1f\nInverso = %.2f ",n,inv); return 0; } tae
  22. #include <string.h> #include <stdio.h> #define MAX 100 int main(int argc, char **argv) { char string[MAX]; int len; int j; int count; count=0; gets(string); len=strlen(string); j=len-1; for (int i = 0; i < len ; i++) { if(string[i]==string[j]) { count++; j--; } } if(count==len) { printf(" eh um palindrome!\n"); } return 0; } Fiz uma versão reduzida do código só pra abstração do problema... Alias , agora que percebi , funciona bem com palavras , mas com frases só funciona se colocar sem caracteres especiais kkk mas ta ae minha contribuição !

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!