Ir ao conteúdo
  • Cadastre-se

vangodp

Membro Pleno
  • Posts

    1.752
  • Cadastrado em

  • Última visita

Tudo que vangodp postou

  1. Tem uns quantos "bugaços" neste programa. Por exemplo... Em char unidade[9][5] está permitido 9 strings de 5 caracteres como muito, a string "quatro" tem 7 chars, já sei que vai me dizer que estou louco, porque tem seis letras, mas lembre que você tem que deixar uma a mais, para o nulo, seis mais um, sete, tamanho minimo dessa string deveria ser char unidade[9][7], ou para não ficar curto, como os outros unidade[9][20]. Sem contar que você tem 10 strings nessa matriz, e você só declarou 9. >_< Arruma esses bugs rapaz... e logo me conta como te foi. adicionado 2 minutos depois arrume tanto a quantidade de elementos como a quantidade mínima de chars que deve ser a da maior string contida na matriz mais 1. adicionado 3 minutos depois Vou dar uma pista... Tem erros tanto em unid como em dez.
  2. seu processador é de 64 bits conforme intel-> https://ark.intel.com/content/www/es/es/ark/products/74744/intel-core-i3-3250-processor-3m-cache-3-50-ghz.html O que você precisa é de um sistema operativo de 64 bits porque se você inserir mais de 3 gb seu processoador não vai reconhecer o restante. você pode instalar um modulo de 8 gigas mas o sistema só reconhece 3, se trocar para um de 64 bits reconhece os 8 gigas. procure no google "como saber si meu sistema é de 32 ou 64 bits".
  3. prova fechar o arquivo cada vez que você altera-lo. As mudanças costumam se guardar somente depois que você fechar o arquivo então obviamente a cada alteração você deve fechar o arquivo e antes de altera-lo você deve abri-lo novamente. #include <iostream> using namespace std; int main (){ FILE * f; f = fopen("file.txt", "r+"); int n; if( !f ){ perror("Erro ao abrir arquivo file.txt"); getchar(); exit(1); }else{ fscanf(f,"%d", &n); rewind(f); //Rebobinando a fita... XD fprintf(f,"%d", ++n); fclose(f); } cin.ignore(); return 0; } pode ser automatizado repetindo tudo com somente chamar uma função: #include <iostream> using namespace std; void incrementa(char * nome ){ FILE * f = fopen( nome, "r+"); int n; if( !f ){ perror("Erro ao abrir arquivo"); getchar(); exit(1); }else{ fscanf(f,"%d", &n); rewind(f); //Rebobinando a fita... XD fprintf(f,"%d", ++n); fclose(f); printf("No arquivo tem: %d\n", n); } } int main (){ incrementa( (char*)"file.txt"); // O cast (char*) evita choros do compilador incrementa( (char*)"file.txt"); cin.ignore(); return 0; }
  4. bota "list all process cpp" no google que algo você encontra >_<
  5. cin.ignore() o que faz é pausar o programa
  6. #include <iostream> #include <windows.h> using namespace std; int main (){ FreeConsole(); cin.ignore(); return 0; } E também esse: #include<windows.h> #include<iostream> int main(void) { //esto oculta la consola en win. HWND hwnd_win = GetForegroundWindow(); ShowWindow(hwnd_win,SW_HIDE); //Espera 4 segundos Sleep(4000); //vuelve a mostrar la consola. ShowWindow(hwnd_win,SW_SHOW); std::cout<<"BOO!"; std::cin.ignore(); return 0; }
  7. sim adicionado 0 minutos depois mas postei no lugar errado >_<
  8. existem algumas funções para isso. vou pesquisar >_<
  9. getline ( fin, produto.Nome ); Si o fin lê 2 valores numericos, o getline serve para ler uma string sem espaços while( !fin.eof() ){ primeiro devemos fazer uma leitura e depois averiguar se atingimos o fim do arquivo, por isso precisamos fazer uma leitura antes do while. Porque se tentamos ler e não há dados no arquivo é ilógico continuar lendo correto? mas se sim houver dados então entra no while e primeiro grava os dados que foram lidos na lista antes do while: adiciona_item(lista, produto); logo se repete tudo de novo até o fim do arquivo. adicionado 3 minutos depois Pratique mais com arquivos, você vai usar muito. Tente fazer varios CRUD de diferentes formas. Esqueça coisas complicadas como listas encadiadas etc por enquanto pratique, logo você aumenta a complexidade, se centre somente nos arquivos mesmo que seu professor não pedir(deveres extra escolares), ler escrever alterar, buscar, etc...
  10. por culpa do seguinte: ... o while complicou bastante. fin >> produto.Codigo >> produto.Preco; getline ( fin, produto.Nome ); while( !fin.eof() ){ adiciona_item(lista, produto); fin >> produto.Codigo >> produto.Preco; getline ( fin, produto.Nome ); } fin >> produto.Codigo >> produto.Preco; O fin faz analogia a cin. Em c++ trabalhamos com um conceito chamado fluxo de dados, que também é conhecido como streams originalmente. Dados podem ser redirigidos, <<, >>, etc. Eu posso redirigir desde uma string para a tela do computador(cout << frase;), posso redirigir do teclado para um int(cin>>n), e a consequencia desde um arquivo para uma ou varias variaveis(fin >> produto.Codigo >> produto.Preco;). você leva trabalhando com streams todo o tempo, pode que sem se dar muita conta. O problema é que tanto cin como arquivos(ifstream) etc, só leen até encontrar um espaço(' '), ou um tabulador('\t'), ou até enter('\n'), se encontrar um desses 3 a leitura se interrompe e o restante fica no buffer, por isso se necessita a getline, ja que getline permite ler espaços e todos os demais caracteres, a menos que se indique onde deve se deter de forma implicita. Outro problema é que fluxos de entrada podem retornar o EOF(caractere que marca fim do arquivo), por isso dava certo somente fazer somente: while( fin>> produto.Codigo >> produto.Preco >> produto.Nome ){ adiciona_item(lista, produto); } Ao fragmentar a leitura de dados desde o arquivo entre fin e getline se complicou, pois devemos usar eof(end of file) para saber si atingimos o fim do arquivo traz cada leitura, e por isso ficou assim: fin >> produto.Codigo >> produto.Preco; getline ( fin, produto.Nome ); while( !fin.eof() ){ adiciona_item(lista, produto); fin >> produto.Codigo >> produto.Preco; getline ( fin, produto.Nome ); } adicionado 0 minutos depois sim
  11. getline(cin,name); Um arquivo pode não abrir por muitos razões, ele pode não existir, pode que você não tenha direito sobre ele, pode que tenha falhos, etc, etc, etc. Então perror o que faz é, retornar a macro relativa ao erro obtido que teve o arquivo, ao tentar abrir, e realmente pode ser uns quantos erros. Com perror você tem mais controle. Essas "macros" você encontra no arquivo "errno.h"(Error number para ser mais preciso) >_< Usar printf para mostrar esses erros é ineficiente. Seu professor não deveria castigar por que o aluno aprendeu algo por sua conta, deveria apremiar. 1 EPERM Operation not permitted 2 ENOENT No such file or directory 3 ESRCH No such process 4 EINTR Interrupted system call 5 EIO Input/output error 6 ENXIO No such device or address 7 E2BIG Argument list too long 8 ENOEXEC Exec format error 9 EBADF Bad file descriptor 10 ECHILD No child processes 11 EAGAIN Resource temporarily unavailable 11 EWOULDBLOCK Resource temporarily unavailable 12 ENOMEM Cannot allocate memory 13 EACCES Permission denied 14 EFAULT Bad address 15 ENOTBLK Block device required 16 EBUSY Device or resource busy 17 EEXIST File exists 18 EXDEV Invalid cross-device link 19 ENODEV No such device 20 ENOTDIR Not a directory 21 EISDIR Is a directory 22 EINVAL Invalid argument 23 ENFILE Too many open files in system 24 EMFILE Too many open files 25 ENOTTY Inappropriate ioctl for device 26 ETXTBSY Text file busy 27 EFBIG File too large 28 ENOSPC No space left on device 29 ESPIPE Illegal seek 30 EROFS Read-only file system 31 EMLINK Too many links 32 EPIPE Broken pipe 33 EDOM Numerical argument out of domain 34 ERANGE Numerical result out of range 35 EDEADLK Resource deadlock avoided 35 EDEADLOCK Resource deadlock avoided 36 ENAMETOOLONG File name too long 37 ENOLCK No locks available 38 ENOSYS Function not implemented 39 ENOTEMPTY Directory not empty 40 ELOOP Too many levels of symbolic links 42 ENOMSG No message of desired type 43 EIDRM Identifier removed 44 ECHRNG Channel number out of range 45 EL2NSYNC Level 2 not synchronized 46 EL3HLT Level 3 halted 47 EL3RST Level 3 reset 48 ELNRNG Link number out of range 49 EUNATCH Protocol driver not attached 50 ENOCSI No CSI structure available 51 EL2HLT Level 2 halted 52 EBADE Invalid exchange 53 EBADR Invalid request descriptor 54 EXFULL Exchange full 55 ENOANO No anode 56 EBADRQC Invalid request code 57 EBADSLT Invalid slot 59 EBFONT Bad font file format 60 ENOSTR Device not a stream 61 ENODATA No data available 62 ETIME Timer expired 63 ENOSR Out of streams resources 64 ENONET Machine is not on the network 65 ENOPKG Package not installed 66 EREMOTE Object is remote 67 ENOLINK Link has been severed 68 EADV Advertise error 69 ESRMNT Srmount error 70 ECOMM Communication error on send 71 EPROTO Protocol error 72 EMULTIHOP Multihop attempted 73 EDOTDOT RFS specific error 74 EBADMSG Bad message 75 EOVERFLOW Value too large for defined data type 76 ENOTUNIQ Name not unique on network 77 EBADFD File descriptor in bad state 78 EREMCHG Remote address changed 79 ELIBACC Can not access a needed shared library 80 ELIBBAD Accessing a corrupted shared library 81 ELIBSCN .lib section in a.out corrupted 82 ELIBMAX Attempting to link in too many shared libraries 83 ELIBEXEC Cannot exec a shared library directly 84 EILSEQ Invalid or incomplete multibyte or wide character 85 ERESTART Interrupted system call should be restarted 86 ESTRPIPE Streams pipe error 87 EUSERS Too many users 88 ENOTSOCK Socket operation on non-socket 89 EDESTADDRREQ Destination address required 90 EMSGSIZE Message too long 91 EPROTOTYPE Protocol wrong type for socket 92 ENOPROTOOPT Protocol not available 93 EPROTONOSUPPORT Protocol not supported 94 ESOCKTNOSUPPORT Socket type not supported 95 ENOTSUP Operation not supported 95 EOPNOTSUPP Operation not supported 96 EPFNOSUPPORT Protocol family not supported 97 EAFNOSUPPORT Address family not supported by protocol 98 EADDRINUSE Address already in use 99 EADDRNOTAVAIL Cannot assign requested address 100 ENETDOWN Network is down 101 ENETUNREACH Network is unreachable 102 ENETRESET Network dropped connection on reset 103 ECONNABORTED Software caused connection abort 104 ECONNRESET Connection reset by peer 105 ENOBUFS No buffer space available 106 EISCONN Transport endpoint is already connected 107 ENOTCONN Transport endpoint is not connected 108 ESHUTDOWN Cannot send after transport endpoint shutdown 109 ETOOMANYREFS Too many references: cannot splice 110 ETIMEDOUT Connection timed out 111 ECONNREFUSED Connection refused 112 EHOSTDOWN Host is down 113 EHOSTUNREACH No route to host 114 EALREADY Operation already in progress 115 EINPROGRESS Operation now in progress 116 ESTALE Stale file handle 117 EUCLEAN Structure needs cleaning 118 ENOTNAM Not a XENIX named type file 119 ENAVAIL No XENIX semaphores available 120 EISNAM Is a named type file 121 EREMOTEIO Remote I/O error 122 EDQUOT Disk quota exceeded 123 ENOMEDIUM No medium found 124 EMEDIUMTYPE Wrong medium type 125 ECANCELED Operation canceled 126 ENOKEY Required key not available 127 EKEYEXPIRED Key has expired 128 EKEYREVOKED Key has been revoked 129 EKEYREJECTED Key was rejected by service 130 EOWNERDEAD Owner died 131 ENOTRECOVERABLE State not recoverable 132 ERFKILL Operation not possible due to RF-kill 133 EHWPOISON Memory page has hardware error "Perror indica qual erro o arquivo teve al não abrir "prefessor"...!" troque a outra função por esta então... //função que carrega produtos desde o arquivo int carregar_lista ( ListaE &lista ) { Produto *aux; aux = lista.inicio; ifstream fin; fin.open ( "arquivo.txt" ); if ( !fin.is_open() ) { perror("Problema ao abrir arquivo.txt"); system("pause"); return 0; } Produto produto; //usando streams e fazendo analogia a cin... se cin serve para ler desde o teclado fin servirá para ler desde arquivo ;) fin >> produto.Codigo >> produto.Preco; getline ( fin, produto.Nome ); while( !fin.eof() ){ adiciona_item(lista, produto); //cout << produto.Codigo << " " << produto.Preco << " " << produto.Nome << endl; fin >> produto.Codigo >> produto.Preco; getline ( fin, produto.Nome ); } return 1; }
  12. Não seria melhor usar fscanf? #include<stdio.h> typedef struct Dados{ char tipo[3]; struct{ int nLinhas; int nColunas; }; int profundidade; }PGM; void abrirArquivo() { PGM imagem; FILE *file; file = fopen ( "GIMP.pgm", "rt" ); //Tipo imagem fscanf(file, "%s", imagem.tipo); printf("%s\n", imagem.tipo); //Dimensão imagem fscanf(file, "%d %d", &imagem.nColunas, &imagem.nLinhas); printf("%d %d\n", imagem.nLinhas, imagem.nColunas); //Profundidade de cor fscanf(file, "%d", &imagem.profundidade); printf("%d\n", imagem.profundidade); int m[imagem.nLinhas][imagem.nColunas]; int i; int z; for (i = 0; i < imagem.nLinhas ; i++ ) { for (z = 0; z < imagem.nColunas ; z++ ) { fscanf(file, "%d", &m[i][z]); printf("%3d ", m[i][z]); } putchar('\n'); } fclose ( file ); } int main() { abrirArquivo(); return 0; } Seu arquivo está mal, marca uma matriz de uma dimensão de 3X3, porém os dados da matriz são de 2X3. Eu usei como referença de prova um arquivo que está na wikipedia-> https://en.wikipedia.org/wiki/Netpbm_format#PGM_example
  13. melhor descarregar a imagem. Mas ele nem postou o código com o que leva feito, suponho que tenha problemas até com o ola mundo.
  14. Com essas pequenas mudanças seu programa já faz a leitura desde o arquivo. Se existir um arquivo com dados ele será carregado automaticamente, caso contrario o programa vai funcionar exatamente como antes. using namespace std; #include <stdlib.h> #include <conio.h> #include <string.h> #include <fstream> #include "biblioteca.h" //função que carrega produtos desde o arquivo int carregar_lista ( ListaE &lista ) { Produto *aux; aux = lista.inicio; ifstream fin; fin.open ( "arquivo.txt" ); if ( !fin.is_open() ) { perror("Problema ao abrir arquivo.txt"); system("pause"); return 0; } Produto produto; //usando streams e fazendo analogia a cin... se cin serve para ler desde o teclado fin servirá para ler desde arquivo ;) while( fin>> produto.Codigo >> produto.Preco >> produto.Nome ){ adiciona_item(lista, produto); } return 1; } int memoria ( ListaE &lista ) { //Produto *aux; //aux = lista.inicio; //char a[200]; ifstream salvar; salvar.open ( "arquivo.txt" ); if ( !salvar.is_open() ) { cout << "Arquivo.txt nao abriu"; return 0; } return 1; } bool imprime ( ListaE lista ) { Produto *aux = new Produto; aux = lista.inicio; while ( aux != NULL ) { cout << "Codigo: " << aux->Codigo << endl; cout << "Nome: " << aux->Nome << endl; cout << "Preco: " << aux->Preco << endl << endl; aux = aux->proximo; } return true; } int armazena ( ListaE &lista ) { Produto *aux; aux = lista.inicio; ofstream salvar; salvar.open ( "arquivo.txt" ); if ( !salvar.is_open() ) { cout << "Arquivo.txt nao abriu"; return 0; } while ( aux != NULL ) { salvar << aux->Codigo << " "; salvar << aux->Preco << " "; salvar << aux->Nome << " \n"; aux = aux->proximo; } return 1; } void inserir ( ListaE &lista, Produto prod ) { cout << "\t\tCodigo: "; cin >> prod.Codigo; cout << "\t\tPreco: "; cin >> prod.Preco; cout << "\t\tNome do produto: "; cin.ignore(); getline ( cin, prod.Nome ); adiciona_item ( lista, prod ); } int buscar_lista ( ListaE &lista, Produto prod ) { int codigo; cout << "Digite o Codigo para a busca: "; cin >> codigo; Produto* produto_buscado = busca ( lista.inicio, codigo ); if ( produto_buscado != NULL ) { cout << "Codigo: " << produto_buscado->Codigo << endl; cout << "Nome: " << produto_buscado->Nome << endl; cout << "Preco: " << produto_buscado->Preco << endl << endl; return 1; } else { cout << "Nao existe esse produto" << endl; return 0; } } int remover_lista ( ListaE &lista, Produto prod ) { int codigo_remover; cout << "Digite o Codigo para a remover: "; cin >> codigo_remover; if ( !remover ( lista, codigo_remover ) ) { cout << "Codigo invalido, ou a lista esta vazia" << endl; } else { cout << "Codigo: " << codigo_remover << " removido com sucesso" << endl; } return 1; } void menu() { system ( "color 0" ); cout << "\t\tMercado " << endl << endl; cout << "\t\tPRODUTOS" << endl << endl; cout << "\t\t1 - Adicionar Produto" << endl; cout << "\t\t2 - Buscar Produto" << endl; cout << "\t\t3 - Remover Produto" << endl; cout << "\t\t0 - Sair" << endl; } int main() { ListaE lista; Produto prod; int escolha; inicializa_lista ( lista ); //memoria ( lista ); carregar_lista(lista); do { system ( "color f1" ); menu(); imprime ( lista ); cin >> escolha; if ( escolha == 1 ) { system ( "cls" ); inserir ( lista, prod ); system ( "cls" ); } if ( escolha == 2 ) { system ( "cls" ); buscar_lista ( lista, prod ); } if ( escolha == 3 ) { system ( "cls" ); remover_lista ( lista, prod ); } if ( escolha == 0 ) { armazena ( lista ); } } while ( escolha != 0 ); return 0; } tente declarar as funçoes como void si não pretende usar retornos. E não declare variaveis que não forem ser usadas. Dão muitos warnings e a impresão de que você n tem seu programa baixo controle. Se tiver alguma duvida pergunte. Tente comentar um pouco o programa, mas somente as partes indispensaveis, porque tive que perder meia hora para adivinhar o que faz cada função adicionado 0 minutos depois o biblioteca.h não foi alterado assim que não vou subi-lo novamente:)
  15. Depende muito de como está o tal arquivo. Pode mandar ele?
  16. como dice @arfneto, use streams. #include <iostream> #include <cstdlib> #include <sstream> using namespace std; int main (){ string s = "10"; stringstream ss; int i; ss << s; ss>>i; cout << i; return 0; } acredito que n seja difícil montar uma função em base a essas linhas.
  17. isso tudo normalmente se usa switches aniñados dentro de um laço while etc.
  18. certamente o programa está guardando lixo na memoria mas devido a que todos postam código a pedaços não sou capaz de ler o resto do código desde aqui para determinar qual o problema. Resumindo... O problema não está no treixo que você postou, certamente o problema está na hora de ler os dados do endereço, e pode que inclusive antes.
  19. Antes tive uma antena que fazia isso, foi só por um deses amplificadores e parou de me atormentar
  20. wifi vs paredes = problemas. Essa dai tem 10 metros de cabo >_< Acontece a mesma coisa de perto? Se não ja sabe... fica a dica.
  21. Os requisitos para jogar o PES 2018 minimos são esses:
  22. também depende do directx. O directx do win10 é mais novo, vai rodar mais jogos. Se você tiver win10 64 bota esse mesmo. Caso contrario acredito melhor fazer umas provas e tirar a conclusão. Microsoft permite você descarregar windows10 pra fazer prova antes de pedir ativaçã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!