Ir ao conteúdo
  • Cadastre-se

vangodp

Membro Pleno
  • Posts

    1.752
  • Cadastrado em

  • Última visita

Tudo que vangodp postou

  1. Não sei se você entendeu??? você ta usando chaves onde deveria estar usando parêntesis.
  2. interessante isso aqui: system ( "ls -R *.csv > /home/clientes/Danylo//ListaDeArquivos.csv" ); Matou o dirent.h com isso shuesuehshe Umas gambiarras locas heim. Que ta acontecendo com seu programa? Apesar das gambiarras você parece ter ele meio que controlado. Como você ta tentando mover os arquivos? você fecha eles com fclose antes?
  3. não pode postar o source?
  4. Basicamente você quer unificar todos os arquivos que forem aparecendo dentro de uma pasta em um arquivo dentro de outra pasta certo? O processo a seguir é -Averiguar se tem arquivos dentro da pasta de entrada -Caso sim abrir o arquivo de saída e copiar o conteúdo e fechar o arquivo de entrada e saída para guardar as mudanças, borrar o arquivo de entrada. -Caso não voltar a averiguar se tem arquivos na pasta de entrada. Basicamente é a mesma coisa, é criar o arquivo de saída em outra pasta e não mover.
  5. E por que não gerar o tal arquivo diretamente na nova pasta? FILE * arquivo = fopen("C:\Users\SEUNOMEAQUI\Desktop\...", "w")
  6. ok... pera ae que vou dar uma estudada hehe adicionado 5 minutos depois Isso ta errado DeclararVetor x{m,dx}; Se fosse um vetor seria declarado tal como DeclararVetor x[10]={m,dx}; adicionado 6 minutos depois acho que você n viu também que DeclararVetor x{m,dx}; você usou { e } quando talvez você queria usar ( e ) adicionado 7 minutos depois Se você quer usar o construtor use ( e ) DeclararVetor x(m,dx);
  7. tem muitas formas de se fazer isso adicionado 0 minutos depois mas saiba que você nunca vai poder retornar um vetor emC/C++ adicionado 0 minutos depois você pode usar memória dinamica adicionado 1 minuto depois ou usar std::vector adicionado 1 minuto depois Um truque é por o vetor dentro de um struct, pois uma struct sim você pode retornar adicionado 1 minuto depois manda seu exemplo
  8. Ola. Eu usei ele bem pouco, meu computador é bem antigo e rodou ele sem problemas. Na pagina oficial diz que os sistemas compatíveis são Linux, OS/2, MS Windows, OSX, VMS, and many other platforms. O programa pesa bem pouco, a versão 5.2 que é a ultima estável pesa só 27.5 megas. você pode integrar ele com Qt, wxWidgets, x11, ou exportar os resultados para postscript (including eps), pdf, png, gif, jpeg, LaTeX, metafont, emf, svg, etc. Pode ser interativo nos formatos HTML5, svg. E ele serve entre outras coisas para fazer gráficas tipo Acredito que ele rola na maioria dos computadores. Aqui você tem vários exemplos do que ele pode fazer: http://gnuplot.sourceforge.net/demo_5.2/ uma obra de arte que te vai facilitar e muito a vida shuesuehsh
  9. se tiver uma matriz de 3 por 3 você teria algo assim: Para somar as diagonais Na diagonal principal você deveria passar pelas casas 00, 11, e 22. É dizer que se você usar o mesmo indice mara m e incrementar de 0 até 3-1, usando um for você n teria problemas. E no caso da diagonal secundária: Deveria passar pelas casas 20, 11, 02. Se somar os índices 2+0, 1+1 e 0+2 o resultado sempre será 2(cortesia de @isrnick >_<). Então somente deveria somar caso índice i + j seja igual a 2. Percorra toda a matriz e some somente quando o resultado da soma de ambos índice seja igual a 2, nem dizer que para isso você precisa um if né. Outra forma de somar a diagonal secundária seria criando 2 índices no mesmo for. Se você perceber poderia ter um int i = 0 e um int j = 2, com o i incrementamos e com o j decrementamos, faremos isso até que i seja menor que 3(3 é o tamanho da suposta matriz de 3x3 neste exemplo), quando isso ocorrer j vai ter um valor de zero, para ilustrar melhor a ideia deixo esse pedaço de código: #include<stdio.h> #define TAM 3 //TAM seria o tamanho da matriz neste exemplo int main(){ int matriz[TAM][TAM]={ {22,45,67}, {46,99,42}, {13,16,27} }; for (int i = 0, j=TAM-1; i<TAM; i++, j-- ) { printf("matriz[%d][%d]=%d\n", j, i, matriz[j][i] ); } return 0; } Com isso você não teria de passar por outras casas que não sejam as que contenham os valores da diagonal secundária. só faltaria guardar o resultado.
  10. então tá né adicionado 39 minutos depois Não sei o por que aceita ou não(E sinceramente nem me importa.), só sei que onde n aceitar, essa é uma forma de saltar a restrição, não fique irritado se a gambiarra não funcionar, mas não despreze o comentário dos outros sem verificar, porque ao final o ignorante vai continuar sendo você. Só sei que isso ja me salvou em mais de uma ocasião. adicionado 45 minutos depois Já provei com mingw -w64 e funciona sem fazer gambiarras, mas antes sim tive esse problema. Sinceramente não vou correr a ler a documentação para resolver esse problema, simplesmente trata-se de um recurso. E eu também n uso o compilador por default que vem no codeblocks, como falei uso o mingw -w64, e n sei se isso tem algo a ver, simplesmente passo do problema, porque para mim é bem melhor usar malloc e tudo certo. Mas me faça um favor. Se um dia lhe for útil o truque me convide a uma taça de café shuesuehsuhe
  11. prova lá. O mingw aceita sheushuehsue adicionado 0 minutos depois tecnicamente se você passar uma constante não vai gritar. adicionado 2 minutos depois Depois fala se funcionou sheuhsueushes
  12. meu cachorro falou o seguinte..... const int y = 0, x = 0; int lin, col; scanf ("%d %d", &lin, &col); int matriz[y+lin][x+col];
  13. Acredito saber qual é o erro... ou isso acho. Tem certos cpnj com menos de 14 chars nesse arquivo de prova. Conforme tenho entendido, o cpnj deveria ter 14 letras. Somando o cpnj com 2100 e mais a barra('|'), uma linha deveria ter 4+1+14 chars, ou seja 19 chars, porém tem algumas linhas como esta -> "2100|674516000111|" com o cpnj com menos de 14 chars e por isso ta dando esses erros. Se vai ter campos "bugados" nesse arquivo você precisaria mudar de estratégia para quando for ler o arquivo n usar coisas como ins = ins + linha.at ( 18 ); já que não em todos casos existe essa tal posição para que você use at(18). Esse acredito que seja o erro, a função membro at estará lançando avisos de erros(Exceptions (Try...Catch Etc)). Da a pesquisar nesse seu arquivo e coloque "2100|674516000111|" e confira. Não há at(18) da erro por coisas dessas. adicionado 16 minutos depois Agora vamos falar de possiveis soluçoes... Nesta pagina tem um exemplo de como ler linha por linha e depois "depenar" a frase lida com getline e criar uma espécie de lista de palavras na qual você pode averiguar uma por uma todos os campos de uma linha e assim poder averiguar corretamente si o que você anda buscando ta correto ou não. https://www.tutorialspoint.com/How-to-read-and-parse-CSV-files-in-Cplusplus O getline pode ter um 3º parâmetro no qual você pode usar para passar um separador para separar uma frase em palavras e criar tipo um vetor de palavras. Algo como 2100 estaria em vetor[0], cpnj no vetor[1] e por aí vai o negócio. tipo esse código de abaixo: #include <iostream> #include <fstream> #include <vector> #include <string> #include <sstream> //using namespace std; int main() { std::string tmp; std::vector<std::string> frase; std::vector<std::string> palavra; char delim = '|'; // Ddefine the delimiter to split by std::ifstream fin; fin.open("exemplo.txt"); while (std::getline(fin, tmp)) { frase.push_back(tmp); std::stringstream ss(tmp); while (std::getline(ss, tmp, delim)) { palavra.push_back(tmp); } for(auto it = palavra.begin(); it != palavra.end(); it++) { std::cout << *it << std::endl; } std::cin.ignore(); } } Note como ele pega uma frase e separa em palavras colocando cada palavra em uma linha separada. Até quando um campo está em branco fica uma linha sem letras no lugar, ou seja, tenha o tamanho que tenha e mesmo se tiver campos vazios o programa lê corretamente. Seria possivel tipo na primeira linha do arquivo fazer isso: if(palavra[0] == "AAAA") //faça algo #include <iostream> #include <fstream> #include <vector> #include <string> #include <sstream> //using namespace std; int main() { std::string tmp; std::vector<std::string> frase; std::vector<std::string> palavra; char delim = '|'; // Ddefine the delimiter to split by std::ifstream fin; fin.open("exemplo.txt"); while (std::getline(fin, tmp)) { frase.push_back(tmp); std::stringstream ss(tmp); while (std::getline(ss, tmp, delim)) { palavra.push_back(tmp); } for(auto it = palavra.begin(); it != palavra.end(); it++) { std::cout << *it << std::endl; } if(palavra[0] == "AAAA") std::cout<< "Encontrado AAAA\n\n"; std::cin.ignore(); } } No seu caso: if(palavra[0] == "2100") //enviar frase para arquivo Bem melhor não acha?
  14. 10^1000 <- Isso aqui também não tem o mesmo sentido que em java. Tem que usar pow
  15. sou uma ***** para matemáticas, mas todas essas partes que repetem você tem que jogar isso dentro de um laço for. Deveria usa um if else para ir alternando esse - e +. É complicado para quem n tem muita ideia de mates >_<
  16. fread espera a direção da variável no primeiro parâmetro onde você passou &X, porém ao ser X um ponteiro não precisa por & adiante, ficando fread(X, sizeof(BTree), 1, arq); a forma correta, desde que X seja reservado dinamicamente claro. O mesmo acontece com fwrite, se o primeiro parâmetro for reservado dinamicamente não deve por & adiante. #include <stdio.h> #include <stdlib.h> typedef struct Foo{ float PI; }Foo; int main(){ //Reservando espaço para 1 elemento do tipo Foo dinamicamente Foo * foo; foo = malloc(sizeof(Foo)); if( foo == NULL ) exit(1); //Comprovamos si reservou corretamente //Criando um arquivo para escritura e comprovando estado FILE * file; file = fopen("prova.txt", "w+b"); if(file == NULL){ //Comprovando se foi criado o arquivo perror("Erro"); free(foo); getchar(); exit(2); } //Se chegamos a este ponto quer dizer que temos aberto o arquivo e temos uma variavel dinamica criada //Agora damos um valor para guardar no arquivo foo->PI = 3.14; //gravamos o arquivo fwrite(foo, sizeof(Foo), 1, file); //Liberamos recursos fclose(file); free(foo); /////////////////////// ////Agora vamos ler//// /////////////////////// Foo * bar = malloc(sizeof(Foo)); //Criamos bar do tipo struct Foo(usaremos para jogar o valor desde o arquivo em bar) if( bar == NULL ) { exit(3); } file = fopen("prova.txt", "r+b");//Não faz fata criar um novo ponteiro para arquivo, reaproveitamos o existente. if(file == NULL){ //Comprovando se foi aberto o arquivo, caso contrario devemos liberar todo o anterior perror("Erro"); free(bar); getchar(); exit(4); } //Agora note que lemos o arquivo e guardamos em bar. fread(bar, sizeof(Foo), 1, file); printf("%f", bar->PI); fclose(file); free(bar); return 0; }
  17. você pode até dispensar o perror. Sabendo que errno é igual a 2 é que o arquivo não existe >_<
  18. if (10<=n && <=100){ //satisfaz ambas }else{ //não satisfaz }
  19. Documentos csv significa "comma-separated values", ou o que é o mesmo em ptbr "valores separados por vírgula" podem ter um formato como esse: 1997,Ford,E350,"ac, abs, moon",30100.00 1999,Chevy,"Venture ""Extended Edition""",,49000.00 1996,Jeep,Grand Cherokee,"MUST SELL! air, moon roof, loaded",479699.00 Como podemos ver trata-se de simples campos de texto separados por vírgulas, o problema não estaria em ler si não em definir que tipo de estrutura teria esses dados uma vez sejam lidos. Neste exemplo podemos ver que todas as linhas possuem os mesmos campos, que são Ano,Marca,Modelo,Descrição,Preço que bem podem ser dos tipos int, string, string, string, double no qual pode caber em uma struct tal qual: struct Dados{ int ano; char marca[100]; char modelo[100]; char descricao[500]; double preco; }; Poderia ser lido perfeitamente com fscanf. A coisa é que você diga, ou descreva, o que são todos esses números/campos, para saber como acolher todos esses dados. Ou simplesmente você quer ler chat a chat e jogar eles na tela?
  20. vangodp

    C exercicio em C arquivos

    E.... qual sua é dúvida?

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!