Ir para conteúdo
Fórum Script Brasil

webpantoja

Membros
  • Total de itens

    55
  • Registro em

  • Última visita

Tudo que webpantoja postou

  1. 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
  2. Cara, posta aí as outras classes para ficar melhor a visualização do problema.
  3. 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
  4. webpantoja

    logica para horario

    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
  5. 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
  6. 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:
  7. 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,&nota,); // 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
  8. 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
  9. 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
  10. 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
  11. webpantoja

    Matriz e vetor.

    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
  12. 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.
  13. 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
  14. 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
  15. 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
  16. * 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
  17. webpantoja

    exercicio em c++

    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
  18. webpantoja

    exercicio em c++

    Mas você tem dificuldade na linguagem C++ ou na lógica de programação?
  19. webpantoja

    exercicio em c++

    Tenta fazer alguma coisa aí e posta as dificuldades que a galera ajuda.
  20. 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.
  21. 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
  22. 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 " );
  23. Ops.. vacilei no gest gets(novoNome ); //agora tá correto :)
  24. 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
  25. 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...
×
×
  • Criar Novo...