Ir ao conteúdo
  • Cadastre-se

devair1010

Membro Pleno
  • Posts

    6.288
  • Cadastrado em

  • Última visita

Tudo que devair1010 postou

  1. @Matheus Marcelino Santos olá , esse erro se refere ao switch / case , onde o "case" precisa ser acompanhado por mais alguma instrução que pode ser o "break;" que é necessário e geralmente usado . case DOIS: /// Ou seja, usuário escolheu a opção CONQUISTAS: printf("eh DOIS\N"); break; Default: printf("opCAo invAlida . . . !\n"); break; porém observei também que esses "defines" #define UM 49 /// 49 - 48 = 1 #define DOIS 50 /// 50 - 48 = 2 #define TRES 51 /// 51 - 48 = 3 #define ESC 27 /// 49 - 27 = -21 /// que poderia ser assim : #define UM 1 #define DOIS 2 #define TRES 3 #define ESC -21 e essa função "lerOpc" são desnecessários pois você pode usar números mesmo , retornado da função "menu" , assim : /// FunCAo para imprimir o menu e retornar uma opCAo : int menu ( ) { printf("\t\tPEDRA PAPEL TESOURA "); printf("\n\t\t\tby Matheus Marcelino "); printf("\n\t__________________________________________ \n"); printf("\n\t[ 1 ] - Jogar "); printf("\n\t[ 2 ] - Conquistas "); printf("\n\t[ESC] - Sair "); printf("\n\t__________________________________________ "); printf("\n\n\tPressione a tecla referente a opção desejada."); return getch() - 48; /// retorna o nUmero 1 ou 2 ou ( -21 para o ESC ) } /// pega a opCAo e retorna sem teclar ENTER
  2. @gustavo_ffr olá , boa noite , sabe que você tem razão sobre configurar o VisualG , para que as palavras chaves fiquem todas sublinhadas , e também na cor que se queira , então com o visualG aberto clique em : manutenção / configurações , e na janela aberta clique em palavra chave e escolha uma dessas três opções : Negrito Itálico ou Sublinhado , e também pode escolher a cor , depois clique em OK e assim todas as palavras chave seguirão de acordo com as opções escolhidas , e na próxima vez que abrir o visualG as opções continuarão como escolhidas , mas se abrir a configuração novamente não terá nada , das opções escolhidas , marcado , mas funcionarão de acordo como escolhidas assim mesmo .
  3. @raphu_ olá , esse código não é de C++ , não , ele realmente é da linguagem C , a menor altura , você pode usar um if para pegar a primeira altura inserida pelo usuário , e a partir dessa vai testando as seguintes , pode ser assim : #include <stdio.h> #include <conio.h> #include <float.h> #include <iso646.h> #include <stdlib.h> #include <string.h> int main ( ) { int x ; int i ; int numhomem = 0 ; int nummulher = 0 ; float h = 0.0; float media = 0.0; float somahm = 0.0; float maioraltura = 0.0; float menoraltura = 0.0; char sexo[12] = ""; printf("digite o numero do grupo: "); fflush(stdin); /// quando muda o tipo de dado da leitura com scanf scanf("%d", & x ); /// ele pula essa instruCAo e vai para a outra linha for(i=0; i<x; i++) { printf("digite sua altura: "); fflush(stdin); /// quando muda o tipo de dado lido por scanf scanf("%f", & h ); /// costuma pular para outra linha if(i==0) /// só pega na primeira entrada { menoraltura = h; /// só pega a primeira altura digitada maioraltura = h; /// e inicializa as duas variAveis } printf("digite qual o seu sexo: "); fflush(stdin); /// limpa o buffer em ealguns casos scanf("%s", sexo); /// ler String não precisa desse sImbolo "&" /// pois já tem o endereCo da variAvel if(strcmp(sexo,"feminino") == 0 ) { printf("Mulher %.2f\n",h); nummulher++; somahm = h + somahm; ///media=somahm/nummulher; isso aqui melhor colocar depois do laCo for } else { if (strcmp(sexo,"masculino") == 0 ) { printf("Homen %.2f\n",h); numhomem++; } } if(h > maioraltura) { maioraltura = h; ///menoraltura= maioraltura; } else { if ( h < menoraltura ) { menoraltura = h; } } } media = somahm / nummulher; printf("maior altura -----------: %.2f\n", maioraltura); /// não precisa desse sImbolo "&"no printf , não printf("menor altura -----------: %.2f\n", menoraltura); printf("media altura mulheres --: %.2f\n", media ); printf("numero de homens -------: %3d \n", numhomem ); return 0; }
  4. @togresco na Udemy tem vários cursos de criação de jogos a um preço razoavelmente bons : https://www.udemy.com/courses/search/?src=ukw&q=criar+jogos alguns aqui , nesse Link acima . !
  5. @lucasz8k @lucasz8k se as duas memórias forem do mesmo tipo, ex : DDR4 , sim pode , como o @Dion10 disse, e ela vai funcionar em 2666 MHz igual a outra , mas se for DDR3 ou DDR5 , aí não , pois nem conseguiria encaixar no socket de memória da placa .
  6. @IzeraXD tem muitos erros de sintaxe nesse seu código , e a função "Text_In_Array" não retorna nada , e se retornasse alguma coisa precisaria usar a função "strcpy" para preencher a string , Text_II[ii][pp] = ( Text_In_Array ( F_R_N_LINES , F_R_N_Colums , (FILE*) (Text_I = fopen("Text_In_Array.txt","r")), Text_Read )) ; /// o sinal de igual "=" não preenche a string precisa do strcpy : strcpy( Text_II[ii][pp] , ( Text_In_Array ( F_R_N_LINES , F_R_N_Colums , (FILE*) (Text_I = fopen("Text_In_Array.txt","r") ), Text_Read ) ) ) ; /// o strcpy copia o texto e preenche a string e esse Array bidimensional "TEXT_II" na verdade é um vetor de string's , pois tem apenas Duas Dimensões , e uma matriz de string precisam ter 3 Dimensões , e não precisa e nem pode ter esse símbolos "&" no printf , e se quer apenas pegar o texto do Arquivo e colocar no Array , não precisa de tantas coisas , como _fpurge fflush setbuf , pode ser algo assim : #define _WIN32_WINNT 0x600 #define _h GetStdHandle(STD_OUTPUT_HANDLE) #include <stdio.h> #include <conio.h> #include <iso646.h> #include <stdlib.h> #include <string.h> #include <windows.h> #include <math.h> #include <time.h> #include <locale.h> int main ( int argc, char *argv[] ) { int letra,fundo; int i = 0; char txt[301] = ""; char Array[300][300] = {}; CONSOLE_SCREEN_BUFFER_INFO _c ; if( GetConsoleScreenBufferInfo ( _h, & _c ) ) { letra = ( _c.wAttributes & 0xFF ) & 0x0F; fundo = ( ( _c.wAttributes & 0xFF ) >> 4 ) & 0x0F; } SetConsoleTextAttribute( _h, 11 + ( 0 << 4 ) ); setlocale(LC_ALL,""); ///------------------------------------------------------- FILE* arq = fopen("nome_arquiv.txt","r"); while(fgets(txt,300,arq) != 0) { txt[strlen(txt)-1] = 0; /// remove o newLine pego por fgets strcpy( Array[i] , txt ); /// coloca na posi e incrementa printf("%3d - %s\n",i,Array[i]); i++; } fclose(arq); ///------------------------------------------------------- SetConsoleTextAttribute( _h, letra + ( fundo << 4 ) ); printf("\n\n\n"); return 0; }
  7. @welington08A posta uma imagem dessa imagem "sharper" , e parece que é o mesmo que aconteceu com minha placa de vídeo Nvidia Gforce 6200 , o ci dela pifou .
  8. @10programas se você já tiver feito um código sobre esse exercício, poste aqui e ajudaremos . Se ainda precisar
  9. qualquer uma das versões funciona , apesar de que a palavra-chave não esteja do modo que está no vídeo , e nsse link explica como baixar essa outra versão : https://www.clubedohardware.com.br/forums/topic/1660930-o-visualg-não-identifica-o-então/#comment-8646043
  10. @gustavo_ffr essa versão do visualG que está no vídeo e antiga , é a 2.0, e funcionava daquele jeito , mas nas versões mais novas não é daquele modo , e a versão mais estável e boa é mesmo a 3,0,6,5 , e essa que você está usando é a mais nova e contém alguns bug's , mas as palavras_chaves "procedimento" e "funcao" , são desse modo mesmo ,
  11. se estava funcionando no outro Gabinete então é a fonte de seu gaBinete que está pifadas .
  12. @LucasAHD não é a memória que tem Vídeo , e sim , a placa de vídeo , então experimente colocando outra placa de Vídeo , ou talvez seja as configurações da BIOS dessa sua placa .
  13. @hugoakauane você pode pegar as horas minutos segundos e millisegundos pela internet .
  14. olá , baixei o turbo pascal junto com DOSBOX e instalei ele e até funcionou , mas não estou conseguindo colocar em tela cheia , ele fica só minimizado dificultando ler as letras pequeninhas ., teria algum modo de maximizar a janela desse Turbo Pascal ? nesse Link : https://br.ccm.net/download/baixaki-17685-turbo-pascal Turbo PascaL com DOSBOX
  15. @Wescleualuno olá. , esse visual Studio code é problemático mesmo , use o codeblocks que é bom e fácil para as linguagens. C e c++ .
  16. @Cairo Alberto porque você quer usar esse Visual Studio Code , ? , melhor usar mesmo o VisuaL Studio Comunity da microsoft , ou o codeblocks , que funciona bem e é bem fácil de usar e reconhece todas as bibliotecas até mesmo as que você criar .
  17. @matheus.Matta para essas libs "HEADER" funcionar elas precisam estar na mesma pasta onde você coloca esse código da função main , seu código principaL , aqui a função "main.c" #define _WIN32_WINNT 0x600 #define _h GetStdHandle(STD_OUTPUT_HANDLE) #include <stdio.h> #include <conio.h> #include <iso646.h> #include <stdlib.h> #include <string.h> #include <windows.h> #include <math.h> #include <time.h> #include <locale.h> #include <dirent.h> #include "libbmp.h" #include "imghelpers.h" #include "libbmp.c" #include "imghelpers.c" int main ( int argc, char *argv[] ) { int letra,fundo; CONSOLE_SCREEN_BUFFER_INFO _c ; if( GetConsoleScreenBufferInfo ( _h, & _c ) ) { letra = ( _c.wAttributes & 0xFF ) & 0x0F; fundo = ( ( _c.wAttributes & 0xFF ) >> 4 ) & 0x0F; } SetConsoleTextAttribute( _h, 11 + ( 0 << 4 ) ); setlocale(LC_ALL,""); ///------------------------------------------------------- DIR *dp; struct dirent *ep; char filename[100]; int firstFile = 0; // Variável de controle const char directory[] = "uploads/"; // Caminho do diretório int ret = 0; dp = opendir(directory); if (dp != NULL) { while ((ep = readdir(dp))) { if (ep->d_type == DT_REG && !firstFile) { snprintf(filename, sizeof(filename), "%s%s", directory, ep->d_name); firstFile = 1; } } (void)closedir(dp); } else { SetConsoleTextAttribute( _h, 15 + ( 12 << 4 ) ); perror("\n Não foi possível abrir o diretório 'uploads'. ! "); ret = 1; } if( ! ret ) { // Utilize apenas imagens .bmp com o formato 24 (true color) // converta em: https://online-converting.com/image/convert2bmp/ bmp_img img; printf("\n"); IMG_TAM t = pegarTamanho(filename); int l = t.qtdLinhas, c = t.qtdColunas; int R[l][c]; int G[l][c]; int B[l][c]; carregaImagem(t, R, G, B, filename); // manipule sua imagem aqui. for (int i = 0; i < l; i++) { for (int j = 0; j < c; j++) { R[i][j] = G[i][j]; B[i][j] = R[i][j]; G[i][j] = B[i][j]; } } salvaImagem(t, R, G, B, filename); mostrarNoReplit(filename); } ///------------------------------------------------------ SetConsoleTextAttribute( _h, letra + ( fundo << 4 ) ); printf("\n\n\n"); return ret ; } o código do "HEADER" libbmp.h : #ifndef LIBBMP_H_INCLUDED #define LIBBMP_H_INCLUDED #include <stdio.h> #define BMP_MAGIC 19778 #define BMP_GET_PADDING(a) ((a) % 4) #define BMP_PIXEL(r, g, b) ((bmp_pixel){(b), (g), (r)}) enum bmp_error { BMP_FILE_NOT_OPENED = -4, BMP_HEADER_NOT_INITIALIZED, BMP_INVALID_FILE, BMP_ERROR, BMP_OK = 0 }; typedef struct ax as; typedef struct _bmp_header { unsigned int bfSize; unsigned int bfReserved; unsigned int bfOffBits; unsigned int biSize; int biWidth; int biHeight; unsigned short biPlanes; unsigned short biBitCount; unsigned int biCompression; unsigned int biSizeImage; int biXPelsPerMeter; int biYPelsPerMeter; unsigned int biClrUsed; unsigned int biClrImportant; } bmp_header; typedef struct _bmp_pixel { unsigned char blue; unsigned char green; unsigned char red; } bmp_pixel; typedef struct _bmp_img { bmp_header* img_header; bmp_pixel **img_pixels; } bmp_img; void bmp_header_init_df (bmp_header*, const int, const int); enum bmp_error bmp_header_write(const bmp_header*, FILE* ); enum bmp_error bmp_header_read (bmp_header*, FILE* ); void bmp_pixel_init (bmp_pixel*, const unsigned char , const unsigned char, const unsigned char); void bmp_img_alloc (bmp_img* ); void bmp_img_init_df (bmp_img*, const int, const int ); void bmp_img_free (bmp_img* ); enum bmp_error bmp_img_write (const bmp_img*, const char* ); enum bmp_error bmp_img_read (bmp_img*, const char* ); #endif /// LIBBMP_H_INCLUDED e o código do header imghelpers : #ifndef IMGHELPERS_H #define IMGHELPERS_H #include <stdio.h> typedef struct IMG_TAM { int qtdLinhas; int qtdColunas; }; typedef struct IMG_TAM IMG_TAM; IMG_TAM pegarTamanho(const char *filename); void carregaImagem( IMG_TAM t, int R[t.qtdLinhas][t.qtdColunas], int G[t.qtdLinhas][t.qtdColunas], int B[t.qtdLinhas][t.qtdColunas], const char *filename); void salvaImagem( IMG_TAM t, int R[t.qtdLinhas][t.qtdColunas], int G[t.qtdLinhas][t.qtdColunas], int B[t.qtdLinhas][t.qtdColunas], const char *filename); void zerarPixels( IMG_TAM t, unsigned char PIX[t.qtdLinhas][t.qtdColunas]); void mostrarNoReplit(const char *filename); #endif /// IMGPHELPERS_H_INCLUDED e aqui o código da libbmp. c : /// Aqui ColoQue O cOdigo Das FunCOes void bmp_header_init_df(bmp_header *header, const int width, const int height) { header->bfSize = (sizeof(bmp_pixel) * width + BMP_GET_PADDING(width)) * abs(height); header->bfReserved = 0; header->bfOffBits = 54; header->biSize = 40; header->biWidth = width; header->biHeight = height; header->biPlanes = 1; header->biBitCount = 24; header->biCompression = 0; header->biSizeImage = 0; header->biXPelsPerMeter = 0; header->biYPelsPerMeter = 0; header->biClrUsed = 0; header->biClrImportant = 0; } enum bmp_error bmp_header_write(const bmp_header *header, FILE *img_file) { if (header == NULL) { return BMP_HEADER_NOT_INITIALIZED; } else if (img_file == NULL) { return BMP_FILE_NOT_OPENED; } const unsigned short magic = BMP_MAGIC; fwrite(&magic, sizeof(magic), 1, img_file); fwrite(header, sizeof(bmp_header), 1, img_file); return BMP_OK; } enum bmp_error bmp_header_read(bmp_header *header, FILE *img_file) { if (img_file == NULL) { return BMP_FILE_NOT_OPENED; } unsigned short magic; if (fread(&magic, sizeof(magic), 1, img_file) != 1 || magic != BMP_MAGIC) { return BMP_INVALID_FILE; } if (fread(header, sizeof(bmp_header), 1, img_file) != 1) { return BMP_ERROR; } return BMP_OK; } void bmp_pixel_init(bmp_pixel *pxl, const unsigned char red, const unsigned char green, const unsigned char blue) { pxl->red = red; pxl->green = green; pxl->blue = blue; } void bmp_img_alloc(bmp_img *img) { const size_t h = abs(img->img_header->biHeight); img->img_pixels = malloc(sizeof(bmp_pixel *) * h); for (size_t y = 0; y < h; y++) { img->img_pixels[y] = malloc(sizeof(bmp_pixel) * img->img_header->biWidth); } } void bmp_img_init_df(bmp_img *img, const int width, const int height) { bmp_header_init_df(&img->img_header, width, height); bmp_img_alloc(img); } void bmp_img_free(bmp_img *img) { const size_t h = abs(img->img_header->biHeight); for (size_t y = 0; y < h; y++) { free(img->img_pixels[y]); } free(img->img_pixels); } enum bmp_error bmp_img_write(const bmp_img *img, const char *filename) { FILE *img_file = fopen(filename, "wb"); if (img_file == NULL) { return BMP_FILE_NOT_OPENED; } const enum bmp_error err = bmp_header_write(&img->img_header, img_file); if (err != BMP_OK) { fclose(img_file); return err; } const size_t h = abs(img->img_header->biHeight); const size_t offset = (img->img_header->biHeight > 0 ? h - 1 : 0); const unsigned char padding[3] = {'\0', '\0', '\0'}; for (size_t y = 0; y < h; y++) { fwrite(img->img_pixels[offset - y], sizeof(bmp_pixel), img->img_header->biWidth, img_file); fwrite(padding, sizeof(unsigned char), BMP_GET_PADDING(img->img_header->biWidth), img_file); } fclose(img_file); return BMP_OK; } enum bmp_error bmp_img_read(bmp_img *img, const char *filename) { FILE *img_file = fopen(filename, "rb"); if (img_file == NULL) { return BMP_FILE_NOT_OPENED; } const enum bmp_error err = bmp_header_read(&img->img_header, img_file); if (err != BMP_OK) { fclose(img_file); return err; } bmp_img_alloc(img); const size_t h = abs(img->img_header->biHeight); const size_t offset = (img->img_header->biHeight > 0 ? h - 1 : 0); const size_t padding = BMP_GET_PADDING(img->img_header->biWidth); const size_t items = img->img_header->biWidth; for ( size_t y = 0; y < h; y++) { if (fread(img->img_pixels[offset - y], sizeof(bmp_pixel), items, img_file) != items) { fclose(img_file); return BMP_ERROR; } fseek(img_file, padding, SEEK_CUR); } fclose(img_file); return BMP_OK; } e o código da função imghelpers.c : /// Aqui ColoQue Os cOdigo Das FunCOes typedef struct bmp_img; typedef struct IMG_TAM; typedef bmp_img; IMG_TAM pegarTamanho(const char *filename) { /// coloque o cOdigo Aqui, o q voce quer q ele faCa . printf("Você não tinhA essa FuCAo . !\n"); return; } void salvaImagem /// funCAo salvar imagem (IMG_TAM t, int R[t.qtdLinhas][t.qtdColunas], int G[t.qtdLinhas][t.qtdColunas], int B[t.qtdLinhas][t.qtdColunas], const char *filename) { /// coloque o cOdigo Aqui, o q voce quer q ele faCa . return; } void mostrarNoReplit(const char *filename) { return; } void carregaImagem( IMG_TAM t, int R[t.qtdLinhas][t.qtdColunas], int G[t.qtdLinhas][t.qtdColunas], int B[t.qtdLinhas][t.qtdColunas], const char *filename) { /// coloque o cOdigo Aqui, o q voce quer q ele faCa . return; } porém essas funções que fazem as modificações nas imagens , não estão prontas , pois falta exatamente um código para fazer tais modificações .
  18. @Eli Almeidaa se você quiser pode marcar essa minha resposta de cima , no #10 , como solução . . !
  19. @Eli Almeidaa está certo , sim , porém faltou um código para a opção 4 do menu , que sugere mostrar Todos os produtos cadastrados , imagino algo assim : Algoritmo "Gerenciamento de Produtos_2" const quantidadeMaximaProdutos = 2 tipo loja = registro nome : caractere preco : real estoque : inteiro fimRegistro var produtos : vetor [1..quantidadeMaximaProdutos] de loja quantidadeProdutosCadastrados : inteiro opcao, r, quantidade,a : inteiro nome, opcao2 : caractere funcao produtoExiste( nome : caractere ) : inteiro var contador, resultado : inteiro inicio para contador <- 1 ate quantidadeProdutosCadastrados faca se nome = produtos[contador].nome então resultado <- contador interrompa() fimse fimPara retorne resultado fimFuncao procedimento cadastrarProduto() inicio escreval("Informe o nome do produto") leia(nome) se produtoExiste(nome) > 0 então escreval("O produto ", produtos[quantidadeProdutosCadastrados].nome, " Já existe no cadastro!") senao produtos[ quantidadeProdutosCadastrados].nome <- nome escreval( "Informe o preço do produto") leia ( produtos[quantidadeProdutosCadastrados].preco) escreval( "Informe o estoque do produto") leia ( produtos[quantidadeProdutosCadastrados].estoque) quantidadeProdutosCadastrados <- quantidadeProdutosCadastrados+1 escreval( "Produto cadastrado com sucesso") fimSe fimProcedimento funcao consultarEstoque( nome : caractere ) : inteiro var contador : inteiro resultado : inteiro inicio para contador <- 1 ate quantidadeProdutosCadastrados faca se nome = produtos[contador].nome então resultado <- produtos[contador].estoque interrompa() fimSe fimPara retorne resultado fimFuncao funcao atualizarEstoque ( opcao2 : caractere ; quantidade : inteiro ) : inteiro var contador, c : inteiro inicio para contador <- 1 ate quantidadeProdutosCadastrados faca se opcao2 = "R" então produtos[contador].estoque <- produtos[contador].estoque - quantidade c <- produtos[contador].estoque interrompa senao se opcao2 = "A" então produtos[contador].estoque <- produtos[contador].estoque + quantidade c <- produtos[contador].estoque interrompa fimSe fimse fimPara retorne c fimfuncao Inicio quantidadeProdutoscadastrados <- 1 repita limpatela("") escreval (" [0] - Sair Do ProGrama") escreval (" [1] - Cadastrar produto") escreval (" [2] - consultar produto") escreval (" [3] - atualizar estoque") escreval (" [4] - listar produtos") escreval ("Escolha uma opcao " ) leia ( opcao ) limpatela("") escolha opcao caso 1 se quantidadeProdutosCadastrados <= quantidadeMaximaProdutos então cadastrarProduto() senao escreval(" Limite de cadastro atingido") fimSe caso 2 escreval ("Informe o nome do produto que deseja consultar o estoque") leia( nome ) r <- produtoExiste(nome) se r > 0 então r <- consultarEstoque(nome) escreval(" A quantidade de estoque do produto ", nome, " é ", r:1) senao escreval(" Produto não cadastrado.") fimSe caso 3 escreval ("Informe o nome do produto que deseja atualizar o estoque") leia( nome ) r <- produtoExiste(nome) se r > 0 então escreval( "[R] - retirar " ) escreval( "[A] - adicionar" ) leia ( opcao2 ) opcao2 <- maiusc( opcao2 ) se opcao2 = "R" então escreval ("Quanto gostaria de retirar" ) leia ( quantidade ) r <- atualizarEstoque(opcao2,quantidade) escreval("O novo estoque é de ", nome, " é ", r:1) senao se opcao2 = "A" então escreval ("Quanto gostaria de adicionar") leia ( quantidade ) r <- atualizarEstoque(opcao2,quantidade ) escreval("O novo estoque é de ", nome, " é ", r:1) fimse fimse senao escreval(" Produto não cadastrado.") fimSe caso 4 EscrevaL(" Listando Todos Prod Cadastrados" ) para a de 1 ate quantidadeProdutosCadastrados-1 faca EscrevaL("Dados Do ",a,"º Produto" ) escreval("Produto -: ",produtos[a].nome ) escreval("PreCo ---:" ,produtos[a].preco :5) escreval("PreCo ---:" ,produtos[a].estoque :5) EscrevaL("") fimpara fimescolha se opcao <> 0 então EscrevaL("") EscrevaL(" Tecle Enter ") leia(a) fimse ate ( opcao = 0 ) Fimalgoritmo ou de algum outro modo que melhor lhe agradar , com as formatações , textos de mensagens e opções de pausas para ver os resultados .
  20. @Eli Almeidaa essa Função "produtoExiste" contém um erro , pois no visualG o comando retorne funciona de outra forma , pois ele não retorna imediatamente , não , e só retorna mesmo no final da função , assim você precisa fazer o controle do valor que será retornado, usando uma variável auxiliar , e lá no final da Função, no comando retorne, coloque esse valor que será retornado aí sim nesse momento , funcao produtoExiste(nome:caractere):inteiro var contador, flg:inteiro inicio para contador <- 1 ate quantidadeProdutosCadastrados faca se nome = produtos[contador].nome então // retorne contador não iRah retornar nada aqui flg := contador /// armazena o valor que será retornado interrompa("32768") /// interrompe o loop para / fimpara fimse fimPara retorne flg /// aqui sim , vai retornaR o valor deseJado . fimFuncao
  21. @matheus.Matta essas bibliotecas foi você que as criou , então coloque-as na mesma pasta onde está o código de seu algoritmo , e se você puder / Quiser , poste essas bibliotecas que parecem bastante interessantes .
  22. @paulovitorr223 um "ranking" simples pode ser apenas adicionar mais um ao valor da variável a cada acerto , ranki++; assim ao digitar 'r' , vai mostrar o valor atual dessa variável com a quantidade acertos . você colocou a função "srand" para gerar números aleatórios , e isso está certo mesmo , porém ela só precisam ser colocada uma vez em todo seu código , e também colocou muitas "system("cls");" , sem necessidade . e seu código usando a formatação ficaria assim : #define _WIN32_WINNT 0x600 #define _h GetStdHandle(STD_OUTPUT_HANDLE) #include <stdio.h> #include <iso646.h> #include <stdlib.h> #include <string.h> #include <windows.h> #include <math.h> #include <time.h> #include <locale.h> #include <iostream> #include <string> #include <set> using namespace std; void getch(); int main ( int argc, char *argv[] ) { int letra,fundo; CONSOLE_SCREEN_BUFFER_INFO _c ; if( GetConsoleScreenBufferInfo ( _h, & _c ) ) { letra = ( _c.wAttributes & 0xFF ) & 0x0F; fundo = ( ( _c.wAttributes & 0xFF ) >> 4 ) & 0x0F; } SetConsoleTextAttribute( _h, 11 + ( 0 << 4 ) ); ///------------------------------------------------------ setlocale (LC_ALL, ""); int ranki=0, ranki2=0; srand (time(NULL)); /// isso só precisa uma Unica vez em todo o cOdigo char escolha = 'v', dificuldade='m'; //Início while (escolha != 'f') { system("cls"); /// Verificar a dificuldade cout << "Dificuldade atual: "; if (dificuldade == 'f' ) cout << "Fácil" << endl; else if (dificuldade == 'd' ) cout << "Difícil" << endl; else cout << "Média" << endl; /// Menu /// Caso queira adicionar mais uma opção, coloque a letra inicial da /// opção Ex.: r de Ranking. Então faça mais um else if com essa /// opção e coloque no menu. cout << "Para escolher, digite a primeira letra da opção.\n" "// - Jogar \n" "// - Dificuldade\n" "// - Sobre \n" "// - Fim \n" "// - Ranking " ; cin >> escolha; system("cls"); //Sobre if (escolha == 's') { cout << "jogo feito por." << endl; cout << "//Voltar" << endl; cin >> escolha; } //Fim else if (escolha == 'r') { cout<< "Rank --: " << ranki << "\n Tecle"; getch(); } //Dificuldade else if (escolha == 'd') { cout << "// Fácil ---: 3 dígitos, 08 tentativas.\n" "// Média ---: 4 dígitos, 10 tentativas.(Padrão Inicial)\n" "// Difícil -: 5 dígitos, 12 tentativas.\n" "// Voltar --: "; cin >> dificuldade; //Fácil if (dificuldade == 'f') { int numero; string valor; for(int i = 0; i < 3; i++) { numero = rand()%3+1; cout << numero<< " "; valor += to_string(numero); } cout << endl << endl << valor; } //Difícil else if (dificuldade == 'd') { int numero; string valor; for(int i = 0; i < 5; i++) { numero = rand()%5+1; cout << numero<< " "; valor += to_string(numero); } cout << endl << endl << valor; } //Média else { int numero; string valor; for(int i = 0; i < 4; i++) { numero = rand()%4+1; cout << numero<< " "; valor += to_string(numero); } cout << endl << endl << valor; } escolha = 'v'; } //O Jogo else if (escolha == 'j') { do { string senha; system("cls"); int numero; string valor; set<int> numerosgerados; // Para registrar os numeros // Checagem de dificuldade e geração dos números int maxnumero; if (dificuldade == 'f') { maxnumero = 3; } else if (dificuldade == 'd') { maxnumero = 5; } else { maxnumero = 4; } while (numerosgerados.size() < maxnumero) { numero = rand() % 6 + 1; if (numerosgerados.find(numero) == numerosgerados.end()) { numerosgerados.insert(numero); valor += to_string(numero); } } //cout << "Número gerado: " << valor << endl; para testes // Verificação de tentativas int tentativas; if (dificuldade == 'f') { tentativas = 8; } else if (dificuldade == 'd') { tentativas = 12; } else { tentativas = 2; /// p testar , deps coloc outr val } while (tentativas > 0 && senha != valor ) { cout << "Tentativas restantes: " << tentativas << endl; // Resposta do usuário e a comparação cout << "Digite um número com " << maxnumero << " dígitos: "; cin >> senha; system("cls"); cout << senha << endl; int acertosNaPosicao = 0; int acertosForaPosicao = 0; for (int i = 0; i < maxnumero; i++) { if (senha[i] == valor[i]) { acertosNaPosicao++; } else if (valor.find(senha[i]) != string::npos) { acertosForaPosicao++; } } //retorno cout << "Dígitos corretos na posição correta -----: " << acertosNaPosicao << endl; cout << "Dígitos corretos, mas na posição errada -: " << acertosForaPosicao << endl; tentativas = tentativas - 1; if (senha == valor) { cout << "Você ganhou, a senha era mesmo " << valor << endl; ranki++; } else if (tentativas == 0) { cout << "Você perdeu, a senha era: " << valor << endl; } numerosgerados.clear(); cout << " Tecle\n"; getch(); } if (senha == valor || tentativas == 0) { //Opções depois do jogo acabar cout << "// Jogar Novamente.\n" "// Voltar ao Menu. \n" "// Acessar Ranking " ; cin >> escolha ; } } while ( escolha == 'j' ); } } SetConsoleTextAttribute( _h, 15 + ( 12 << 4 ) ); cout << "\n Saindo Do Jogo . . . ! "; ///------------------------------------------------------ SetConsoleTextAttribute( _h, letra + ( fundo << 4 ) ); printf("\n\n\n"); return 0; } void getch() { FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE)); WaitForSingleObject(GetStdHandle(STD_INPUT_HANDLE), INFINITE); }

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