
CPP
Membros-
Total de itens
117 -
Registro em
-
Última visita
Tudo que CPP postou
-
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?
-
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
-
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]
-
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]
-
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]
-
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
-
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
-
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
-
Dúvida - Troca de posições + maior e menor --> vetor
pergunta respondeu ao Urso_Polar de CPP em C, C++
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 -
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
-
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
-
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]
-
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
-
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
-
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] ...?!?!
-
cannot convert parameter 1 from 'Pessoa' to 'Pessoa'
pergunta respondeu ao Felippe Angelo de CPP em C, C++
Dá pra postar o código ao invés de passar um link? Abs -
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]
-
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]
-
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(); }
-
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
-
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
-
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.
-
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]
-
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
-
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]