Ir para conteúdo
Fórum Script Brasil

CPP

Membros
  • Total de itens

    117
  • Registro em

  • Última visita

Tudo que CPP postou

  1. CPP

    Invertendo uma lista

    Olá arandoble, Sua dúvida é sobre o uso das funções de manipulação de arquivos ou sobre a logica de como implementar o código?
  2. Olá Efemero, A linguagem C tem algumas funções pra manipular arquivos que podem te ajudar, só depende do propósito desejado. Com essas duas funções você consegue de maneira muito simples obter a quantidade exata de bytes num arquivo. int fseek( FILE *stream, long offset, int origin ); long ftell( FILE *stream ); Se tiver dificuldades pra usar posta as duvidas ai ok. Abs
  3. Olá roccoC/C++, Já que é só pra apreciação segue minha proposta. Abs #include <stdio.h> #include <dos.h> #include <stdlib.h> void main(void) { struct { unsigned char bit0 : 1; unsigned char bit1 : 1; unsigned char bit2 : 1; unsigned char bit3 : 1; unsigned char bit4 : 1; unsigned char bit5 : 1; unsigned char bit6 : 1; unsigned char bit7 : 1; } unsigned binario; printf("Digite um numero:\n"); scanf("%d", &binario); printf("Binario: %d%d%d%d-%d%d%d%d\n", binario.bit7, binario.bit6, binario.bit5, binario.bit4, binario.bit3, binario.bit2, binario.bit1, binario.bit0); system("pause"); } [/codebox]
  4. Opa, no outro post eu tinha marcado a função: void Cadastro(Tlista*lista, char *sujeito, char *fone) // < --- os parametros sujeito e fone tem que ponteiros para array de bytes e não UM byte Nela você deveria acrescentar o * nas variaveis sujeito e fone. Ficou faltando essa alteração no seu código. Mas olhando com mais detalhe você tambem tá fazendo uma coisa errada. Quando chama a função Cadastro(&list, *sujeito, *fone); com o * no sujeito e fone você tá passando apenas o primeiro byte do array e não o ponteiro pra ele. Segue seu código corrigido e funcionando. Qualquer dúvida é só falar. Abs //Programa exemplo de implementacao de Lista Encadeada Estatica //Autor: Prof. Alessandro de Castro Borges //Data: fevereiro de 2011 #include <stdio.h> //Bibliotecas #include <stdlib.h> #include <string.h> #include <conio.h> //ESTRUTURAS typedef struct { //Definindo a estrutura do no char nome[50]; char tel[15]; //O campo onde será armazenada a informação do no int prox; //O apontador para o próximo no da lista } Tno; //O nome do tipo associado ao no - Tno typedef struct { //Definindo a estrutura da lista, com vetor, prim e dispo Tno l[100]; //Vetor de nos int prim; //Apontador para o primeiro elemento da lista int dispo; //Apontador para o primeiro no disponivel para insercao } Tlista; //Nome do tipo associado aa lista - Tlista Tlista list; //Declaração da lista a ser usada no programa int i; //Variável para uso como indice char c; //Variavel auxiliar para aguardar o pressionar do <ENTER> //ROTINAS void iniciaLista(Tlista *lista) { for(i=0; i<99; i++) { lista->l[i].prox = i+1; } //cada no aponta seu proximo lista->l[9].prox = -1; //Ultimo no aponta como proximo o final da lista lista->prim = -1; //Primeiro elemento aponta vazio (lista vazia) lista->dispo = 0; //Primeiro disponivel aponta primeiro no do vetor } int cheia(Tlista lista) //Rotina que verifica se uma lista esta cheia //Parametro de entrada: a lista a ser verificada //Parametro de saida: inexistente //Retorno: retorna 1 se estiver cheia, e 0 caso contrario { if(lista.dispo == -1) return(1); //Se a lista esta cheia, não há no disponivel else return(0); } int vazia(Tlista lista) //Rotina que verifica se uma lista esta vazia //Parametro de entrada: a lista a ser verificada //Parametro de saida: inexistente //Retorno: retorna 1 se estiver vazia, e 0 caso contrario { if(lista.prim == -1) return(1); //Uma lista vazia não possui primeiro elemento else return(0); } void Cadastro(Tlista*lista, char *sujeito, char *fone) { int p; p = lista->dispo; lista->dispo = lista->l[lista->dispo].prox; lista->l[p].prox = lista->prim; lista->prim = p; strcpy(lista->l[p].nome, sujeito); strcpy(lista->l[p].tel, fone); } void imprimeLista(Tlista lista) //Rotina para impressao da lista na tela //Parametro de entrada: a lista a ser impressa //Parametro de saida: inexistente //Retorno: inexistente - funcao void { int p; //Variavel auxiliar que percorre a lista para imprimir as informacoes p = lista.prim; //A partir do primeiro elemento... while (p != -1) { //Enquanto não encontra o final da lista... printf("%s\n", lista.l[p].nome);//Imprime cada elemento, e printf("%s\n", lista.l[p].tel); p = lista.l[p].prox; //Salta para o proximo no } //Fim do while(p != -1) } int menu(void) //Rotina para apresentacao do menu e leitura da opcao do usuario //Parametro de entrada: inexistente //Parametro de saida: inexistente //Retorno: o numero da opcao escolhida pelo usuario { int opcao; do { system("cls"); //Limpa a tela - biblioteca <stdlib.h> printf("Listas Encadeadas Implementadas Estaticamente\n"); //Titulo do menu printf("Programa de Testes e Aprendizado\n\n"); printf("MENU\n\n"); printf(" 1 - Cadastrar participante\n"); printf(" 3 - Listar todos os participantes\n"); printf(" 7 - Sair\n"); printf("\n\nOpcao: "); scanf("%d", &opcao); if((opcao<1)||(opcao>7)) { //Caso o usuario digite uma opcao invalida printf("\n\nOpcao '%d' invalida! Escolha entre <1> e <11>.\n", opcao); printf("\nTecle <ENTER> para continuar e tentar novamente..."); c = getche(); } } while((opcao<1)||(opcao>7)); //Repete ate ler uma opcao valida return(opcao); } main (void) //Programa Principal { int op; //Variavel para receber a opcao do menu iniciaLista(&list); //Inicialização da lista com todos os nos disponiveis do { op = menu(); //Chamada da rotina do menu switch(op) { case 1: //Opcao de insercao de um elemento no inicio da lista if (cheia(list)) printf("ERRO! Lista cheia. Impossivel inserir."); else { char sujeito[50]; char fone[15]; printf("\nDigite o nome a ser cadastrado: "); fflush(stdin); // <------------- limpa o buffer de entrada gets (sujeito); printf("\n"); printf("\nDigite o telefone: "); fflush(stdin); // <------------- limpa o buffer de entrada gets (fone); printf("\n"); Cadastro(&list, sujeito, fone); printf("Insercao realizada com sucesso!\n"); } break; case 3://IMPRIME if (vazia(list)) printf("\nLista vazia! não há elementos para imprimir.\n"); else { imprimeLista(list); printf("\n\nImpressao concluida!\n"); } break; case 7: //Opcao de saida do programa printf("\nATENCAO! Tem certeza de que deseja sair do programa?\n"); printf("Para confirmar, tecle (S) ou (s): "); c = getche(); //Pedido de confirmacao if((c == 's') || (c == 'S')) { iniciaLista(&list); //Se confirmado, o programa é encerrado printf("\n\nFIM DE PROGRAMA.\n"); } else { printf("\n\nOperacao não confirmada - acao cancelada\n"); op++; //Alteracao do valor da opcao para diferenciar de 7 (saida) } break; } //Fim do switch(op) printf("\npressione <ENTER> para continuar..."); c = getche(); printf("\n"); } while(op != 7); //Repete o processo ate ser escolhida a opcao de saida - 9 printf("Tecle <ENTER> para encerrar\n"); c = getche(); return 0; } //Fim do programa. [/codebox]
  5. Eu tava passeando por alguns tópicos antigos e encontrei uma proposta de exibição de frações interessante. Gostaria de propor uma nova apenas pra efeito de conhecimento do que poder ser feito em C. Que tal essa solução? #include <stdlib.h> #include <stdio.h> #include <conio.h> void main(void) { float a,b=printf("Fracao %f\n",(puts("digite o inteiro:")+scanf("%f", &a) && puts("Digite a parte:")+scanf("%f", &b)) ? (a / B) : 0); system("pause"); } [/codebox]
  6. Bom dia, Tenta fazer as alterações abaixo: case 1: if (cheia(list)) printf("ERRO! Lista cheia. Impossivel inserir."); else { char sujeito[50]; char fone[15]; printf("\nDigite o nome a ser cadastrado: "); fflush(stdin); // <------------- limpa o buffer de entrada gets (sujeito); printf("\n"); printf("\nDigite o telefone: "); fflush(stdin); // <------------- limpa o buffer de entrada gets (fone); printf("\n"); Cadastro(&list, *sujeito, *fone); printf("Insercao realizada com sucesso!\n"); } break; rotina de cadastro que é chamada: void Cadastro(Tlista*lista, char *sujeito, char *fone) // < --- os parametros sujeito e fone tem que ponteiros para array de bytes e não UM byte { int p; p = lista->dispo; //dispo é a posição disponivel lista->dispo = lista->l[lista->dispo].prox; // prox é o proxima posição lista->l[p].prox = lista->prim; // prim é a posição q inicia a lista lista->prim = p; strcpy(lista->l[p].nome, sujeito); // copiando o nome q usuario digitou para a lista <--- remover o operador & strcpy(lista->l[p].tel, fone); //copiando o telefone que o usuario digitou para a lista <--- remover o operador & } No mais, sem o codigo completo só posso desejar bom trabalho. Abs
  7. CPP

    (DUVIDA) raiz quadrada

    tem que fazer #include <math.h> E a funcao é em minusculo a = sqrt(B); matematicamente falando você consegue o mesmo efeito elevando o numero por 0.5 e pra isso em C você pode usar a função a = pow(b, (.5)); Abs
  8. CPP

    numeros primos

    Ok, mesmo se usar "long double" ainda ocorre overflow O produto desse range só vai poder ser calculado com precisão pelos computadores quânticos. Pra usar "long double" e só mudar 3 linhas: long double soma; soma = 1.0; printf("\n\nSoma: %f\n", soma); Abs
  9. Percebi que você comete um engano na indexação de vetores. Por exemplo: você faz vet[1] = vet[10] e vet=[10] = aux; Mas, sua declaração foi: int vet[10], ou seja, em C o vetor é indexado a partir de 0 (zero) e não de 1, então você tem que usar vet[0] = vet[9] pra dar certo. Reforcando: int vetor[10] (pode ser acessado de 0 a 9) char nome[30] (pode acessar cada elemento entre 0 e 29) Tenha sempre isso em mente pra não endereçar uma posição que não foi reservada. Tenta o trecho de código abaixo pra sua solução maior = menor = vet[0]; for (i=0; i<10; i++) { if (vet[i]>maior) maior=vet[i]; if (vet[i]<menor) menor=vet[i]; } // o enunciado não pede pra salvar as posiçoes na lista, apenas pra colocar o menor na primeira posição e o maior na ultima, // então basta copiar os valores vet[0] = menor; vet[9] = maior; [/codebox] Qualquer dúvida posta ai. Abs
  10. Na sua função inserir_antes você tem um for que procura uma posição vaga e grava o valor informado. Pra sua função acessar() você só precisa validar os limites (como faz na inserir_antes) e copiar o conteudo de l[pos] pra valor. Pra função alterar() é a mesma coisa, só que você faz l[pos] ser igual ao valor informado. Ajudou? Abs
  11. Olá Bruce, Acho melhor fazer char frase[100], por exemplo, antes de chamar scanf("%s", &frase); Na verdade pode ser: char frase[100]; scanf("%s", frase); Parabéns pela iniciativa. Abs
  12. CPP

    numeros primos

    Olá, A maneira mais fácil de encontrar números primos numa faixa é verificar por quantos números ele é divisível. Se for divisível por mais que 2 então não é primo. A questão do zero é que um int só pode representar valores entre -32767 e +32768 se for signed e 0 a 65535 se for unsigned. Como o produto dos números primos nessa faixa é maior do que esses valores você precisa usar o tipo "long int" #include <conio.h> #include <stdio.h> main() { int num,b, div; long int soma; soma=1; for (num=92;num<=1478;num++) { div = 0; for (b = 1; b <= num; b++) { if (!(num % B)) div++; } if (div <= 2) { soma *= num; printf("%d,", num); } } printf("\n\nSoma: %ld\n"); getch(); } [/codebox]
  13. se você quiser usar o codigo ASCII é só fazer: int soma = 0; char *t = "brasil"; for (int n = 0; n < strlen(t); n++) soma += t[n]; printf("Soma: %d\n", soma); [/codebox] Mas se quiser criar sua propria lista de valores para as teclas [codebox] unsigned char teclas[] = {1,2,3,4,5,6....}; int soma = 0; char *t = "brasil"; for (int n = 0; n < strlen(t); n++) soma += (teclas[n] - 'a'); printf("Soma: %d\n", soma); Esse exemplo considera apenas letras minusculas, se quiser inserir numeros, simbolos e letras maiusculas tem que mudar. Só enviei pra você ter ideia de como andar dentro de uma string. Abs
  14. você não tem um construtor Sobrecarga(void) na sua classe pra fazer Sobrecarga temp funcionar. Muda pra Sobrecarga temp(0); que vai funcionar. ou cria um construtor Sobrecarga(void) {n = 0;} Abs
  15. na verdade sua comparação está certa, o problema é na entrada de dados. a ling. C não tem um tipo de entrada para o formato binario. O exemplo abaixo recebe uma string no formato binario e coloca numa estrutura de bits. Ai você decide o que quer fazer. Eu optei por testar direto o bit de interesse (o 2). Esse exemplo tá muito básico mas espero que ajude a elucidar sua idéia. Abs #include <stdio.h> #include <stdlib.h> #include <conio.h> void main(void) { struct TBITS { char b7:1; char b6:1; char b5:1; char b4:1; char b3:1; char b2:1; char b1:1; char b0:1; } bits; char status[9]; scanf("%s", status); bits.b7 = status[0] - '0'; bits.b6 = status[1] - '0'; bits.b5 = status[2] - '0'; bits.b4 = status[3] - '0'; bits.b3 = status[4] - '0'; bits.b2 = status[5] - '0'; bits.b1 = status[6] - '0'; bits.b0 = status[7] - '0'; puts(bits.b1 ? "Ligada" : "Desligada"); getch(); [/codebox] ...?!?!
  16. Dá pra postar o código ao invés de passar um link? Abs
  17. CPP

    Ajuda!

    Olá Gabriel, Vou colar um trecho do seu código com a correção que você deve fazer. 1) Você só pode incrementar o contador se "confirmacao" for igual a 'S' 2) O ideal para confirmacao é que só sejam consideradas as teclas 'S' e 'N' Tem algumas na sua lógica que podem ser otimizada pra evitar redundancia e economizar memória. Qualquer dúvida posta ai. Abs do { clrscr (); printf ("\n\nCandidato escolhido: MARADONA!"); printf ("\n\nConfirma voto S - Sim / N - não?"); confirmacao = toupper (getche()); if (confirmacao == 'S') contadorM++; }while(confirmacao != 'S' && confirmacao != 'N'); [/codebox]
  18. CPP

    Ajuda...

    Ola, Fiz as funções de manipulacao da lista pra você. Agora tenta resolver o resto do seu sistema. Qualquer dúvida posta ai que a gente ajuda Coloquei alguns comentarios no main() pra ajudar a ententer como usar as funcoes. Abs #include <stdio.h> #include <stdlib.h> #include <string.h> struct TLista { struct TLista *previous; struct TLista *next; char nome[31]; char celular[16]; char telefone[16]; char email[51]; }; typedef struct TLista tlista; void agendaInicia(void); void agendaInsere(char *nome, char *celular, char *telefone, char *email); void agendaLista(void); tlista *agendaLocaliza(char *nome); int agendaRemove(char *nome); int agendaContador; tlista agendaRoot; // raiz para a lista tlista *agendaLast; // ponteiro para o ultimo elemento da lista tlista *agendaCurr; // ponteiro para o elemento corrente da lista //--------------------------------------------------- void main(void) { // inicia as variaveis de controle da lista agendaInicia(); // insere os items já em ordem alfabetica por nome agendaInsere("nome-1", "123", "456", "email-1"); agendaInsere("nome-3", "123", "456", "email-3"); agendaInsere("nome-5", "123", "456", "email-5"); agendaInsere("nome-7", "123", "456", "email-7"); agendaInsere("nome-9", "123", "456", "email-9"); agendaInsere("nome-8", "123", "456", "email-8"); agendaInsere("nome-6", "123", "456", "email-6"); agendaInsere("nome-4", "123", "456", "email-4"); agendaInsere("nome-2", "123", "456", "email-2"); agendaInsere("nome-a", "123", "456", "email-a"); // exibe o conteudo da lista agendaLista(); tlista *ptr; printf("\n\nTestando localizacao\n"); if ((ptr = agendaLocaliza("nome-6")) != NULL) printf("Achei: %s\n", ptr->nome); else printf("não achei\n"); printf("\n\nTestando remocao\n"); if (agendaRemove("nome-3") == 0) { printf("Registro (%s) removido\n", "nome-3"); agendaLista(); } else printf("Registro não removido\n"); printf("Reinsere o item 3\n"); agendaInsere("nome-3", "123", "456", "EMAIL-3 (REINSERIDO NA ORDEM)"); agendaLista(); // quantidade de itens na lista printf("itens: %d\n", agendaContador); } //--------------------------------------------------- void agendaInicia(void) { agendaContador = 0; agendaRoot.next = agendaRoot.previous = NULL; agendaLast = &agendaRoot; agendaCurr = &agendaRoot; } //--------------------------------------------------- void agendaInsere(char *nome, char *celular, char *telefone, char *email) { // insere sempre em ordem tlista *ptr = &agendaRoot; tlista *ptrNovo; while(ptr != NULL) { if (strcmp(ptr->nome, nome) > 0) { ptr = ptr->previous; ptrNovo = (tlista *) malloc(sizeof(tlista)); ptrNovo->previous = ptr; ptrNovo->next = ptr->next; ptr->next->previous = ptrNovo; ptr->next = ptrNovo; strcpy(ptrNovo->nome, nome); strcpy(ptrNovo->celular, celular); strcpy(ptrNovo->telefone, telefone); strcpy(ptrNovo->email, email); agendaContador++; return; } ptr = ptr->next; } agendaLast->next = (tlista *) malloc(sizeof(tlista)); strcpy(agendaLast->next->nome, nome); strcpy(agendaLast->next->celular, celular); strcpy(agendaLast->next->telefone, telefone); strcpy(agendaLast->next->email, email); agendaLast->next->previous = agendaLast; agendaLast->next->next = NULL; agendaLast = agendaLast->next; agendaContador++; } //--------------------------------------------------- void agendaLista(void) { if (!agendaContador) { puts("Agenda vazia"); return; } tlista *agendaPtr = &agendaRoot; while (agendaPtr != NULL) { printf("%s ",agendaPtr->nome); printf("%s ",agendaPtr->celular); printf("%s ",agendaPtr->telefone); printf("%s ",agendaPtr->email); printf("\n"); agendaPtr = agendaPtr->next; } printf("\n"); } //--------------------------------------------------- tlista *agendaLocaliza(char *nome) { if (!agendaContador) { puts("Agenda vazia"); return; } tlista *agendaPtr = &agendaRoot; while (agendaPtr != NULL) { if (!strcmp(agendaPtr->nome, nome)) return agendaPtr; agendaPtr = agendaPtr->next; } return NULL; } //--------------------------------------------------- int agendaRemove(char *nome) { tlista *ptr; if ((ptr = agendaLocaliza(nome)) == NULL) return 1; // não encontrado // refaz os links ptr->next->previous = ptr->previous; ptr->previous->next = ptr->next; free(ptr); agendaContador--; return 0; } [/codebox]
  19. Olá, Fiz um programa bem simples pra ajudar você. Espero que você estude ele e pergunte se tiver dúvidas. Pra funcionar você precisa fazer o seguinte - GRAVAR AS QUATRO LINHAS ABAIXO NUM ARQUIVO COM NOME DE COMPRAS.TXT - ESSE ARQUIVO DEVE ESTAR NA MESMA PASTA QUE O EXECUTAVEL. - A PRIMEIRA LINHA é O HEADER QUE INDICA AS POSICOES ONDE OS CAMPOS DEVE SER POSICIONADOS - OS VALORES DEVEM SER SEPARADOS POR . (ponto) E não VIRGULA PARA FACILITAR A CONVERSAO. Abs + + + F Banana 3.00 L Tomate 2.15 L Batata 1.35 [/codebox] [codebox] #include <stdio.h> #include <math.h> #include <conio.h> void main(void) { char registro[36]; float totalFrutas, totalLegumes; int ignoraHeader = 1; FILE *fp = fopen("compras.txt", "r+t"); if (fp == NULL) { puts("Erro - Arquivo invalido"); return; } totalFrutas = totalLegumes = 0.00; while (1) { if (fgets(registro, 35, fp) == NULL) break; if (ignoraHeader) { ignoraHeader = 0; continue; } printf("%s", registro); if (registro[0] == 'F') totalFrutas += atof(registro+27); else if (registro[0] == 'L') totalLegumes += atof(registro+27); } printf("------------------------------\n"); printf("Total de Frutas.: %6.2f\n", totalFrutas); printf("Total de Legumes: %6.2f\n", totalLegumes); printf("------------------------------\n"); getch(); }
  20. CPP

    Pegar tempo

    Olá, Segue um exemplo que funcional em qualquer sistema operacional. Exceto pelo system("pause") no final. Abs #include <stdio.h> #include <time.h> #include <stdlib.h> void main(void) { int dia, mes, ano; int hora, min, sec; struct tm *local; time_t t; t= time(NULL); local=localtime(&t); dia=local->tm_mday; mes=local->tm_mon+1; ano=local->tm_year+1900; printf("Data do Sistema: %d/%d/%d\n",dia,mes,ano); hora = local->tm_hour; min = local->tm_min; sec = local->tm_sec; printf("Hora do Sistema: %d:%d:%d\n",hora,min,sec); system("pause"); } [/codebox] // so pra você ter ideia, o conteudo da estrutura tm é esse: #if 0 struct tm { int tm_sec; /* Segundos, 0-59*/ int tm_min; /* Minutos, 0-59*/ int tm_hour; /*Horas 0-23 */ int tm_mday; /*dia do mês, 1-31 */ int tm_mon; /* mês a partir de janeiro, 0-11 */ int tm_year; /* anos a partir de 1900 */ int tm_wday; /* dias a partir de domingo, 0-6 */ int tm_yday; /* dias a partir de 1 de janeiro 1-365 */ int tm_isdst; /* Indicador de horário de verão */ #endif
  21. O ultimo for do prg 2 deveria ser: for(j=0;j<x.ncols;j++){ Ou seja, do jeito que tá lá, é um laço infinito que fica dando dump da memoria até gerar um endereçamento inválido. Testa ai e vê se resolve seu problema. Abs
  22. CPP

    Polinomio em C++ ?

    Olá Aline, Se você estiver trabalhando em modo texto não tem como fazer sobrescrito, só em modo grafico. Em modo texto uma alternativa é escrever em duas linhas, por exemplo: 2 2x + 3 = 0 [/codebox] Não é a maneira mais bonita, mas pelo menos você não vai usar o circunflexo.
  23. Voce comecou bem, so faltou algumas partes. Fiz um codigo com algumas explicacoes pra tentar te ajudar. Qualquer duvida posta ai. Abs #include <ctype.h> #include <stdio.h> #include <conio.h> void main(void) { char letra; int laco; // laco para 5 interaçoes com o usuario for (laco = 0; laco < 5; laco++) { printf("\n\ndigite uma letra:\n"); scanf("%c", &letra); // limpa o buffer do teclado evitando que a rotina trate o ENTER fflush(stdin); // a funcao isalpha <ctype.h> testa se o caracter informado é uma // letra entre 'A' e 'Z' e 'a' e 'z'. // ela retorna um valor maior que 0 (zero) se realmente for uma letra if (isalpha(letra) > 0) { // a funcao toupper <ctype.h> converte uma letra para maiusculo. // isso é feito apenas pra facilitar o teste sem ter que comparar // letras maiusculas e minusculas letra = toupper(letra); switch(letra) { // caso seja uma das letras abaixo exibe a mensagem de que // é uma vogal. case 'A': case 'E': case 'I': case 'O': case 'U': printf("\n\n<%c> é uma vogal\n", letra); break; default: // se não passou nos cases acima e com certeza é uma letra // então so pode ser uma consoante printf("\n\n<%c> é uma consoante\n", letra); } } else { // se chegou aqui é porque a funcao isalpha já identificou que não // é uma letra printf("\n\n<%c> não é uma letra\n", letra); } } } [/codebox]
  24. Uma forma bem simples e que funciona em qualquer ambiente. #include <mem.h> void main(void) { char str[16] = "String>.<"; char get[30]; memset(get,0,sizeof(get)); // preenche a variavel get com zeros (terminador de strings) memcpy(get, str + 6, 3); // desloca 6 bytes e copia os proximos três de str printf("Get = %s\n", get); // se você quiser copiar a partir de um ponto ate o fim da string pode usar // strcpy(get, str + 6); ou memcpy(get, str + 6, strlen(str+6)); } [/codebox] Qualquer duvida posta ai Abs
  25. Olá Ana, Não vou ajudar a começar, mas vou te dar uma base simples pra achar numeros primos. Se você tiver duvidas de como usar é só postar. Abraços #include <stdio.h> //--------------------------------------------------------------------------- int main(int argc, char* argv[]) { int base, primo; char naoEhPrimo; for (base = 2; base <= 541; base++) { naoEhPrimo = 0; for (primo = 2; primo <= base; primo++) if (!(base % primo) && base != primo) { naoEhPrimo = 1; break; } if (naoEhPrimo) continue; printf("%3d ", base); } system("pause"); return 0; } [/codebox]
×
×
  • Criar Novo...