webpantoja
Membros-
Total de itens
55 -
Registro em
-
Última visita
Tudo que webpantoja postou
-
vlandeismilsoun, Cara você ta começando agora na área de programação? É muito importante você estudar for e while, pois estes repetidores são a base de tudo o que você vai fazer na vida em programação. O primeiro exercício você pode criar 1 variável para cada casa e colocar um while dentro do outro... A condição de parada seria o limite de cada variável, igual a primeira que vai até 2, a segunda vai até 3, depois a outra vai até 5 e por ai vai.. tipo assim int horaDezena, horaUnidade, minutoDezena, minutoUnidade, segundoDezena, segundoUnidade... while( horaDezena <= 2 ) while( horaUnidade <= 3 ) while( minutoDezena <=5 ) //... etc... e por ai vai No outro problema tenta fazer algo assim: int linha, coluna; printf("Digite linha x coluna: "); scanf("%d %d", &linha, &coluna); int matriz[linha][coluna]; for( int i=0; i<linha; i++ ) // Aqui você passa as linhas { for( int j=0; j<coluna; j++ ) //Aqui você passa as colunas { printf("o "); } printf("\n"); // proxima linha } Vai tentando implementar aí e se tiver dúvida posta aí. Não testei, mas a idéia é essa aí. Att, WebPantoja
-
Cara, posta aí as outras classes para ficar melhor a visualização do problema.
-
Programa ( criptografia básica ) trabalhando com argv/argc e arquivos.
pergunta respondeu ao jnoise de webpantoja em C, C++
Hum.. eu pensei que você tinha dúvida em outra parte... :lol: Cara esses aí são operação lógicas que você ver na faculdade.. só lembrar das tabelas verdades... essas operações são bastantes úteis quando você está trabalhando com bits... é mais ou menos assim: ^ = Ou exclusivo, significa que fica verdadeiro somente se os bits forem diferentes... fica assim x = 0x0011 w = 0x0001 y = 0x1100 t = 0x1010 x ^ y = 0x1111 w ^ t = 0x1011 E os outros | = 'or' seria a soma dos bits, & = 'and' seria a multiplicação dos bits.. e por aí vai.. Edit: e vendo o enunciado do exercício, se você utilizar o Ou Exclusivo você saberá se está trabalhando com o caracter correto a ser alterado. Isso vai facilitar sua vida na hora de fazer essa verificação para criptografar somente os caracteres corretos e vice-versa. Att, WebPantoja -
Brunolr, Cara realmente quando eu li a primeira vez não entendi nada sua pergunta... mas agora acho que entendi um pouco... Já que pode ser qualquer linguagem, vou fazer um exemplo aí em C++ para ver se te ajuda int numStart; int numEnd; vector<int> box; box.push_back(1); ... // aqui você coloca estático ou manda o usuário digitar os valores.. nesse exemplo deixei bem simples estático box.push_back(2); box.push_back(3); box.push_back(4); box.push_back(5); box.push_back(6); box.push_back(7); box.push_back(8); box.push_back(9); box.push_back(10); cout << "Digite o valor inicial "; cin >> numStart; cout << "Digite o valor final"; cin >> numEnd; vector<int>::iterator iter; if( numStart < numEnd ) { for( iter = box.begin(); iter != box.end(); iter++ ) { if( (*iter >= numStart) && (*iter <= numEnd ) ) { cout << *iter << endl; } } } else { for( iter = box.begin(); iter != box.end(); iter++ ) { if( *iter >= numStart ) { cout << *iter << endl; } } for( iter = box.begin(); iter != box.end(); iter++ ) { if( *iter <= numEnd ) { cout << *iter << endl; } } } Acho que não tem como fugir muito não dos for e dos ifs... Se digitar 3 e 8 vai cai no primeiro caso, então vai imprimir 3, 4, 5, 6, 7 e 8 Se digitar 8 e 3 vai cai no segundo caso, então vai imprimir 8, 9, 10, 1, 2 e 3. Mesmo não entendendo todo o seu problema, espero ter ajudado. Att WebPantoja
-
Programa ( criptografia básica ) trabalhando com argv/argc e arquivos.
pergunta respondeu ao jnoise de webpantoja em C, C++
Jnoise, Não tive tempo de estudar a fundo seu código, mas de cara tenho umas observações a fazer. A princípio achei o seu código bastante confuso, com algumas coisas que nem estão sendo usadas. Onde você coloca: argc[1] !='c' Cara o argc é somente o contador de argumentos, nem vetor ele é para usar o []. Sempre que quiser trabalhar com os argumentos em si usa o argv. Fiz uma coisa aqui para ajudar você. Esta função aqui tipo vai ler um arquivo txt e substituir algum caracter por outro que você escolher: No caso se você fizer ./cripto c d teste1.txt c = caracter que vai ser substituído d = caracter que vai substituir teste1.txt = arquivo fonte do { c = getc(entrada); if( c == 'c' ) { fwrite (argv[2] , 1 , sizeof(char) , saida ); } else { putc( c, saida ); } } while( c != EOF ); Teste1.txt está escrito "casinha de cachorro" vai aparecer escrito no arquivo de saída "dasinha de dadhorro". Acho que isso pode ser útil para você. Espero ter ajudado. Att, WebPantoja -
Acho que não terá problemas, pois se eu não estiver enganado, tanto linux quanto unix são escritos em C e compilados pelo GCC. Não tem porque não funcionar. :lol:
-
Socram, Vejo que você sabe bem da linguagem, mas está com dúvida na solução, né? Vou tentar dar umas dicas fprintf(p,"%d\n ",&Aux->Item.matricula); fprintf(p,"%c\n ",&Aux->Item.nome); fprintf(p,"%d\n ",&Aux->Item.nota); Nesta parte retire os barras N para que um registro fique somente em 1 linha do arquivo, deixando só o barra N final. Ficaria assim fprintf(p,"%d ",&Aux->Item.matricula); fprintf(p,"%s ",&Aux->Item.nome); fprintf(p,"%d\n",&Aux->Item.nota); Assim você pode depois ler linha por linha do arquivo e fazer o seguinte para recuperar os dados: int listar() { int retorno,cont=0; int nota = 0; int matricula = 0; char str[50]; char nome[10]; FILE * arq; if ((arq = fopen("vestibular.txt","r+b")) == NULL) { printf(" \n Registro nãexiste !"); //getch(); } retorno = fread(&str, sizeof(str),1,arq); // ler o primeiro registro (ou linha) while ( retorno == 1) { sscanf ( str,"%d %s %d", &matricula, nome,¬a,); // aqui coloca a mesma sequencia de quando você inseriu if( nota < 50 ) { // Implementa para gravar dados em arquivo dos reprovados } else if( nota > 50 ) { // Implementa para gravar dados em arquivo dos aprovados } retorno = fread(&str,sizeof(struct str),1,arq); // próximo registro ou linha } Cara acho que é isto... vai brincando aí e se der problema posta aí. Att, WebPantoja
-
Igor, Este é um exercício interessante, no qual você terá que mostrar somente a matriz triangular inferior (ou superior). Posta aí o que você já fez e quais dúvidas que você tem. Att, WebPantoja
-
Estou com uma duvida em um programa de juros que estou fazendo
pergunta respondeu ao Raphae lWolf de webpantoja em C, C++
Cara, Para seu programa ficar melhor ainda coloca antes dos couts cout << fixed; // fixa para preencher de 0 até a última casa informada cout << setprecision(2); // precisão de 2 casas após a vírgula -
Estou com uma duvida em um programa de juros que estou fazendo
pergunta respondeu ao Raphae lWolf de webpantoja em C, C++
Raphae, Cara você pode usar algumas funções da Iomanip, a setfill() que serve para informar com o que você quer que seja preenchido os campos e o setw() para informar quantas casa você quer que seja preenchida. include<iomanip> // não esqueça esta biblioteca cout << " 1X " << setfill(' ') << setw(10) << varA << setfill(' ') << setw(9) << varA << endl; cout << " 2X " << setfill(' ') << setw(10) << varB << setfill(' ') << setw(9) << varE << endl; cout << " 3X " << setfill(' ') << setw(10) << varC << setfill(' ') << setw(9) << varF << endl; cout << " 4X " << setfill(' ') << setw(10) << varD << setfill(' ') << setw(9) << varG << endl; Espero ter ajudado, Att, WebPantoja -
diego, Basta criar uma matriz utilizando os [][]... int matriz[20][20]; // Cria uma matriz de 20 x 20, indo de 0 até 19. int x, y; // cria a linha e a coluna for( x=0; x < 20; x++ ) // Percorre linha da matriz for( y=0; y < 20; y++ ) // Percorre coluna da matriz { matriz[x][y] ... //aqui você implementa } Com isso você consegue passar por todos os elementos da matriz. Att, WebPantoja
-
Concordo com o RonaldoRG, você tem que conferir esse &ler[cad]. já algumas vezes você fez assim ao invés de &ler[cont], tem que atentar nisso.
-
(Resolvido) Duvida com trabalho utilizando FILA
pergunta respondeu ao Renegadobr de webpantoja em C, C++
E ae Renegado, beleza? Cara você pode usar o code [][] para colocar o fonte ae... fica melhor de olhar. Então lá vai alguns pontos: //Após os scanf coloque o comando getchar... só 2 lugar do seu código printf("\n\nEscolha a opcao desejada: "); scanf("%d",&op); getchar(); printf("\nDeseja realmente sair ( 4-Sim , 1-não ) ? "); scanf("%d",&op); getchar(); Agora na parte da leitura de cadeia de caracter não use o scanf, pode usar o gets mesmo. Você vai poder agora digitar com espaço no nome do motorista, por exemplo: João da Silva. do { printf("Informe o Numero da Placa: "); gets( placa ); if( placa[7] != '' ) { printf( "Placa informada errada, tente novamente (XXXNNNN) !\n" ); } } while( placa[7] != '' ); // Essa verificação vai te ajudar para o camarada digitar somente 7 digitos. Se ele digitar algo maior ou menor que isso vai dar erro e vai manda-lo digitar novamente :) printf("Informe o Nome do Motorista: "); gets( motorista ); EDIT: Cara onde está escrito != ' ' dentro deste ' ' eu coloquei um 'barrazero' ... não sei porque está aparecendo vazio aí. Acho que é isso. Testa aí e vê se ajudei. Att, WebPantoja -
WasSi, Ainda não tive tempo de testar, mas olhando me parece que o problema está no while. Você sempre está gravando o dado na posição 'cad' e na hora de mostrar está mostrando o 'cont'. Só colocar o cont no lugar do cad no while e colocar o cont no final do while agora. while( fread( &ler[cont], sizeof(struct sdados), 1, fp ) == 1 ) { printf( "\n Nome: %s", ler[cont].nome ); printf( "\n Idade: %d", ler[cont].idade ); printf( "\n CPF: %d", ler[cont].cpf ); cont++; } Testa aí e vê se resolve. Att, WebPantoja
-
Manipular variáveis em arquivos diferentes
pergunta respondeu ao Marcia Rosa de webpantoja em C, C++
Márcia, Tá certo sim... no exemplo eu criei o ponteiro mas eu passei a variável.. já corrigi aí.. rsrs Qualquer variável que você passe a referência, ou seja, utilizando o '&', tem que receber do outro lado como um ponteiro, ou seja, com o '*'. Quando você passa a variável usando 'pont' ele já é normalmente um ponteiro. Do outro lado normalmente já deveria ter 1 *. Agora se você passa a referência dele, usando o '&pont', tem que adicionar um outro '*' do outro lado, ficando assim '**'. Que bom que te ajudei, normalmente você acha essas coisas em livros mais antigos, no qual tem somente o C padrão ANSI. As vezes você vê apostilas aí na internet mas eles misturam muito C com C++, o que pode acabar complicando. C++ tem umas facilidades a mais que o C, então quem começa no C++ e vai para o C sente dificuldade, ao contrário a transição é mais fácil. Att, WebPantoja -
* a quantidade de indivíduos do sexo feminino com idade entre 20 e 45 anos(inclusive) ou que tenham olhos verdes e altura inferior a 1.70m; Nesta solução crie um contador e coloque logo após a verificação dos olhos: int countMulher = 0; if( ( pessoa[i].idade >= 20 ) && ( pessoa[i].idade<=45 ) && ( !strcmp( pessoa[i].corOlhos == "V" ) && ( pessoa[i].altura < 1.70 ) ) { countMulher++; } * percentual de homens;" Aqui basta fazer um cálculo simples. 1- Crie uma variável countHomens e todas vez que for homem incrementa; 2- Crie um countTotal para contar homens e mulheres; 3- Faça a formula ( countHomens * 100 / countTotal ) Espero ter ajudado, att WebPantoja
-
Cara dá uma lida nas apostilas que tem aqui na sessão: http://scriptbrasil.com.br/forum/index.php?showforum=75 Olhe nos outros posts os outros programas para você ter alguma noção de como funciona e coloca a mão na massa! Vai tentando e as dúvidas posta aí, porque ninguém vai postar um programa inteiro aí para você do nada. Tenta montar primeiro a lógica que você vai utilizar e depois tenta converter no programa C++. Att WebPantoja
-
Mas você tem dificuldade na linguagem C++ ou na lógica de programação?
-
Tenta fazer alguma coisa aí e posta as dificuldades que a galera ajuda.
-
Manipular variáveis em arquivos diferentes
pergunta respondeu ao Marcia Rosa de webpantoja em C, C++
Nos exemplos que passei são int, com char você não pode simplesmente passar o ponteiro, basta criar ele antes e passar, olha só: Arquivo1 main() { char variavel[16]; char *pont = variavel; // Cria ponteiro para variável Metodo2( &pont ); printf("X = %s", variavel ); } Arquivo2 void Metodo2( char **variavel ) //Aqui você recebe um ponteiro de um ponteiro lol { strcpy( *variavel, "return ok"); } Agora vai dar certo. -
Problema em excluir dados e renomear arquivo
pergunta respondeu ao Carlos Telles de webpantoja em C, C++
Quando você digita o nome do novo arquivo, está colocando a extensão .dat? tem que colocar... Aqui no linux funcionou, aí no windows pode estar dando alguma diferença... Com relação à exclusão do registro não existe nada que você possa fazer para excluir logo de cara... temos então duas soluções: 1- Você cria mais uma variável dentro da sua estrutura (pode ser tipo uma flag). Aí quando você cria um registro novo você marca ela com 1. Quando você for excluir o registro você somente localiza qual registro é e seta ela com 0. Aí na hora de listar seus registros você mostra na tela somente os registros com a flag 1 setada.. lol hehehe 2- Você cria um tmp.dat temporário. Você faz um for para passar por todo seu registro e vai copiando os registros para o tmp.dat. Quando chegar no registro que tem que apagar você não copia ele no tmp.dat. No final você exclui o arquivo tmp.dat com um remove e move o tmp.dat para o nome do registro apagado. Pronto! Cara a solução 1 é meio um gato... mas ela é a mais fácil de se fazer em um curto prazo. A 2 seria mais completa, apesar de parecer meio lusitano.. bem essas são as dicas que tenho. Tomara que tenha ajudado. Att, WebPantoja -
Problema em excluir dados e renomear arquivo
pergunta respondeu ao Carlos Telles de webpantoja em C, C++
Sim claro.. o mv é usado no linux, no windows tem que usar o ren... escrevi isso no comentário só que não ficou muito claro... mas só mudar igual abaixo strcpy( comando, "ren registro.dat " ); -
Problema em excluir dados e renomear arquivo
pergunta respondeu ao Carlos Telles de webpantoja em C, C++
Ops.. vacilei no gest gets(novoNome ); //agora tá correto :) -
WasSi, Cara você está usando o vetor de structs errado. Olha só for( cont = 0; cont < cad: cont++ ) { ler[cad].nome[cont]; // Assim está errado. Se deixar assim alem de estar errado na sintaxe, ele sempre vai gravar no registro cad... o cont++ não adianta nada... ler[cont].nome; //Assim está correto. Não tem necessidade do segundo vetor. } Muda ae em todas os arrays ai para ver se dar certo. Att, WebPantoja
-
Problema em excluir dados e renomear arquivo
pergunta respondeu ao Carlos Telles de webpantoja em C, C++
Já vou adiantando uma das suas dúvidas. Com relação à renomear basta usar o system. Você está trabalhando no windows ou linux? faz assim: system( "mv registro.dat reg.dat" ); // Comando em linux system( "ren registro.dat reg.dat" ); // windows... bem... eu acho né.. não trabalho com ruindows... :p Mas tipo esse exemplo é estático né, se você quiser pode montar também tipo para o cara entrar com novo nome char comando[50]; char novoNome[20]; printf("Novo nome do arquivo: " ); gets("%s", novoNome ); strcpy( comando, "mv registro.dat " ); //Usa o mv ou ren... não esqueça de deixar um espaço no final strcat( comando, novoNome ); // Agora temos o comando completo system( comando ); Depois posto mais...