-
Posts
6.318 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Livros
Cursos
Análises
Fórum
Tudo que devair1010 postou
-
@F1rmeza seu código não está rodando , falta a função textcolor e gotoxy .
-
Pascal como eu faço para soma dois nomes?
devair1010 respondeu ao tópico de AbreuS22003 em Programação - outros
@AbreuS22003 você quer juntar os dois nomes . então você pode usar o comando concat , e use uma variável para pegar o nome e outra para pegar o sobrenome e na hora de juntar coloque mais uma variável recebendo a variável que recebeu o primeiro nome depois coloca um espaço e em seguida coloca a variável que pegou o segundo nome . -
C++ Transformar um Número da base Binária para Base Decimal
devair1010 respondeu ao tópico de OddFox em C/C#/C++
@OddFox para postar seu código é melhor usar o botão <> que está lá na barra de ferramentas da janela de postar , pois senão seu código fica faltando alguns caracteres como os [ i ] que sumiram do seu código , e seu código está bom , mas você precisa usar uma variável char para pegar os dígitos do número binário , pois se for hum inteiro então cada caractere do número não será zero ou hum e sim um número muito alto e não teria como pegar cada um desses dígitos , então seu código poderia ser assim : #include <stdio.h> #include <windows.h> #include <stdlib.h> #include <string.h> /* 0 1 2 3 4 5 6 7 8*/ typedef enum{BLACK,BLUE,GREEN,CYAN,RED,MAGENTA,BROWN,LIGHTGRAY,DARKGRAY, LIGHTBLUE,LIGHTGREEN,LIGHTCYAN,LIGHTRED,LIGHTMAGENTA,YELLOW,WHITE} COLORS; /* 9 10 11 12 13 14 15 */ static int __BACKGROUND = BLACK; static int __FOREGROUND = LIGHTGRAY; void textcolor (int color, int fundo){/*para mudar a cor de fundo mude o background*/ __FOREGROUND = color; __BACKGROUND = fundo; SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), color + (__BACKGROUND << 4)); } int main (){ int decimal=0,dois=1,i; char binario[50]; do{ system("cls"); textcolor(14,0); printf ("Digite o seu numero em binario: "); textcolor(10,0); scanf ("%s",binario); /* pega os dígitos do número binario */ i=strlen(binario); }while(i > 8); /* repete se digitar mais de oito dígitos */ i--; while( i >= 0 ){ decimal += ((int)binario[i]-48)*dois;/*valor decimal do caractere */ /*pegando código ASCII do caractere e subtraindo 48*/ dois *= 2; i--; } textcolor(15,9); printf("\nO numero %d na base decimal eh %d\n\n",atoi(binario),decimal); textcolor(7,0); return 0; } -
@Leonardo scarton se o jogo tiver alguma opção para salvar esses dados aí sim você pode salva-los , porém se você quer fazer um programa que colete esses dados do jogo e salve eles então não , isso não é possível pois para isso você precisaria ter acesso aos códigos de programação do jogo , o que não é informado pelos criadores do jogo .
-
Java Não consigo atualizar o jdk
devair1010 respondeu ao tópico de Francine Guimarães em Java/Android SDK
@Francine Guimarães por que você está usando o terminal para atualizar o jdk ? você pode baixar a versão do jdk 8 nesse site : http://www.oracle.com/technetwork/java/javase/downloads. e instalar ela normalmente clicando em executar , e em seguida instalar também o netbeans que é uma boa IDE . -
@naruto19494 sim , é uma boa linguagem de programação , e uma boa IDE muito usada é a netbeans .
-
@giu_d na internet mesmo , estou estudando lógica de programação aqui no senac , mas faço pesquisas sobre programação , e encontrei esse livro de programação , em formato pdf , usando a API do windows , com o nome de programing windows do autor charles petzold , parece bom , mas ainda não tenho muito conhecimento desse tipo de código . http://vulms.vu.edu.pk/Courses/CS410/Downloads/Charles Petzold - Programming Windows - 5th Ed.pdf
-
@Hello_World você pode fazer um triangulo com uma melhor definição , experimente esse código , e para isso crie um projeto do tipo windows aplication no dev c++ ou win32GUI project no code blocks : #include <windows.h> #include <math.h> #include <tchar.h> static int i; LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ; int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow){ static TCHAR szAppName[] = TEXT ("Connect") ; HWND janela ; MSG msg ; WNDCLASS wndclass ; wndclass.style = CS_HREDRAW | CS_VREDRAW ; wndclass.lpfnWndProc = WndProc ; wndclass.cbClsExtra = 0 ; wndclass.cbWndExtra = 0 ; wndclass.hInstance = hInstance ; wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ; wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ; wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ; wndclass.lpszMenuName = NULL ; wndclass.lpszClassName = szAppName ; if (!RegisterClass (&wndclass)){ MessageBox (NULL, TEXT ("Program requires Windows NT!"), szAppName, MB_ICONERROR) ; return 0 ; } janela = CreateWindow (szAppName, TEXT ("Desenhar Um Triangulo"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL) ; ShowWindow (janela, iCmdShow) ; UpdateWindow (janela) ; while (GetMessage (&msg, NULL, 0, 0)){ TranslateMessage (&msg) ; DispatchMessage (&msg) ; } return msg.wParam ; } LRESULT CALLBACK WndProc (HWND janela, UINT message, WPARAM wParam, LPARAM lParam){ HDC tela ; static TCHAR frase[] = _T("Tecle ESC Para Sair !"); PAINTSTRUCT ps ; int j; tela = GetDC (janela) ; switch (message){ case WM_KEYDOWN: // se pressionar a tecla ESC if (wParam == VK_ESCAPE) PostQuitMessage (0) ; case WM_PAINT : tela = BeginPaint (janela, &ps) ; TextOut (tela, 650, 50, frase, _tcslen(frase));// escreve mensagem na tela MoveToEx(tela, static_cast<int>(sin(i*3.141615/180)*100+700), static_cast<int>(cos(i*3.141615/180)*100+250),NULL) ;//posição de inicio do triangulo for(j=1;j<4;j++) LineTo(tela,static_cast<int>(sin((i+ j*120+00)*3.141615/180)*100+700) , static_cast<int>(cos((i+ j*120+00)*3.141615/180)*100+250));//vai para essas posições i++; if(i>360)i=0; Sleep(50); InvalidateRect (janela, NULL, TRUE) ;//limpa a tela EndPaint (janela, &ps) ; return 0 ; case WM_DESTROY: // se clicar no botão X vermelho da janela PostQuitMessage (0) ; } return DefWindowProc (janela, message, wParam, lParam) ; }
-
-
Pc liga mas não dá imagem.
devair1010 respondeu ao tópico de Lucas Ximenes em Computador não liga ou não dá vídeo
@Lucas Ximenes o HD não tem nada a ver com a imagem no monitor , as memórias sim , e podem estar pifando ou os slots da placa , então precisa de memória nova para testar , e se o problema persistir testar com uma placa nova também . -
@giu_d com esse código , testei aqui , mas ele não gera números entre hum e zero , ele apenas gera um número zero ou um número hum , e o @Conixs disse que quer gerar números entre hum e zero .
-
@Conixs na função addInnerWalls ele está imprimindo o que tem na matriz . e para gerar um número entre zero e hum , você pode gerar números entre zero e dez e dividir esse número por dez , assim você terá o número entre zero e hum como resultado . aqui um exemplo para obter um número entre zero e hum : #include <iostream> #include <ctime> int main(){ int a; float b; srand(time(NULL)); a=rand()%10; b=(float)a/10; printf("valor de a= %d \n",a); printf("valor de b= %.1f\n",b); return 0; }
-
VisualG Colocar vetor em ordem crescente
devair1010 respondeu ao tópico de Lucas Da Silva Aleixo em Programação - iniciantes
@Lucas Da Silva Aleixo para ele não gerar número zero você pode colocar isso no comando randi assim : n[x] := randi(60)+1 assim ele vai gerar números de 1 até 60 , e para não gerar números repetidos você precisa usar um laço de repetição que pode ser o repita de modo que após ser gerado um número ele verifica no vetor se o número já existe e em caso afirmativo ele repete e gera outro número , assim não haverá números repetidos , e para organizar em ordem crescente você precisa usar um método de ordenação de vetores , e o mais fácil de usar é o método sound of sorting , então seu código com algumas modificações pode ser assim : algoritmo "ordem crescente" var n :vetor [1..6] de inteiro x,y,k,flag,aux :inteiro inicio escreval("10 Cartões Da MegaSena Em Ordem Crecente") escreval para x de 1 ate 10 faca repita flag := 0 // controla o repita para y de 1 ate 6 faca n[y] := randi(60) + 1 // gera o número para k de 1 ate 6 faca se (n[k] = n[y])e(k <> y) ENTÃO// verifica se o número já existe flag := 1 // para repetir se número já existir interrompa // iterrompe o fluxo do programa pulando os dois próximos fimpara fimse fimpara fimpara ate flag = 0 // repete se flag diferente de zero para k de 1 ate 5 faca para y de k+1 ate 6 faca // para colocar em ordem crescente se n[k] > n[y] ENTÃO // verifica qual número é maior aux := n[k] // preserva o número que está nessa posição do vetor n[k] := n[y] // passa o número menor para a posição anterior n[y] := aux // coloca o número maior na posição posterior fimse fimpara fimpara se x < 10 ENTÃO escreva(" ",x,". ")// esvreve o início da linha senao escreva(x,".") fimse para k de 1 ate 6 faca se n[k] < 10 ENTÃO escreva(" ",n[k])// escreve o restante da linha se k<6 ENTÃO escreva(" - ")// imprime um traço entre os números fimse senao escreva(n[k]) se k<6 ENTÃO escreva(" - ") fimse fimse fimpara escreval fimpara fimalgoritmo -
VisualG Salvar saída em arquivo (.txt)
devair1010 respondeu ao tópico de Lucas Da Silva Aleixo em Programação - iniciantes
@Lucas Da Silva Aleixo no visualg existe o comando arquivo , mas ele é bem limitado e difícil de usar , pelo que vi ele serve para ler o arquivo e colocar o valor lido na variável do comando leia que estiver no programa , então crie um arquivo txt no bloco de notas e escreva alguma coisa nele e salve ele com o nome que você quiser e depois coloque no código o caminho para o arquivo , testei com esse código : algoritmo "lendo do arquivo" arquivo "c:\testeArquivos2.txt" var x,y: inteiro inicio para x de 1 ate 5 faca escreva("digite algo ") leia (y) escreval("valor no arquivo ",y) fimpara fimalgoritmo e usei esse arquivo para testar : e ele leu o que está no arquivo e imprimiu todos os dados do arquivo , sendo um a cada vez que o comando leia foi executado , sendo assim ele não serve para o que você quer pois ele não salvou o arquivo , mas apenas leu o que estava no arquivo , então se você quer usar arquivos é melhor usar outro compilador . -
@Cambalinho se a data for uma string você verificar o início na posição zero da string , e o fim da data seria também o fim da string , então você verifica se encontrou o caractere nulo ' \0 ' que indica o fim da string .
-
@Conixs seu código está bom , apenas você precisa colocar as funções antes da main , ou se você quiser deixar elas lá embaixo mesmo , então faça a declaração delas no início antes da main , rodei o código mas ele não apresentou nenhum outro erro não , então seu código com algumas modificações ficaria assim : #include <stdio.h> #include <time.h> #include <conio.h> #include <windows.h> #include <iostream> #define HORIZONTAL 1 #define VERTICAL 2 using namespace std; const int linhas = 5; const int colunas = 5; /* 0 1 2 3 4 5 6 7 8 */ typedef enum{BLACK,BLUE,GREEN,CYAN,RED,MAGENTA,BROWN,LIGHTGRAY,DARKGRAY, /* nome das cores */ LIGHTBLUE,LIGHTGREEN,LIGHTCYAN,LIGHTRED,LIGHTMAGENTA,YELLOW,WHITE} COLORS; /* 9 10 11 12 13 14 15 */ static int __BACKGROUND = 1/*BLUE*/; /*pode ser o numero ou o nome da cor*/ static int __FOREGROUND = LIGHTGRAY; void textcolor (int letras, int fundo){/*para mudar a cor de fundo mude o background*/ __FOREGROUND = letras; __BACKGROUND = fundo; SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), letras + (__BACKGROUND << 4)); } /* y = linha de 0 a 24 , x = coluna de 0 a 80 */ void gotoxy(int x, int y){/*imprimir na linha e coluna desejada */ COORD c; c.X = x; c.Y = y; SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE), c); } void addOuterWalls(int chamber[linhas][colunas], int rows, int cols){ for (int i = 0; i < rows; i++){ if (i == 0 || i == (rows - 1)){ for (int j = 0; j < cols; j++){ chamber[i][j] = 1; } } else { chamber[i][0] = 1; chamber[i][cols - 1] = 1; } } } void addEntrance(int chamber[linhas][colunas], int rows){ int random = 0 + (rand() % ((rows - 1) - 0) + 1); chamber[0][random] = 2; } void addExit(int chamber[linhas][colunas], int rows){ int random = 0 + (rand() % ((rows - 1) - 0) + 1); chamber[rows - 1][random] = 2; } void addInnerWalls(int chamber[linhas][colunas], int startRow, int startCol, int endRow, int endCol){ int orientation, randR, randC, i, j, randPR, randPC; if (endRow < 2 || endCol < 2) { return; } if (endCol < endRow){ orientation = HORIZONTAL; } else{ if (endCol > endRow){ orientation = VERTICAL; } else{ orientation = 0 + (rand() % (1 - 0) + 1) == 0 ? HORIZONTAL : VERTICAL; } } randR = startRow + (rand() % ((endRow - 1) - startRow) + 1); randC = startCol + (rand() % ((endCol - 1) - startCol) + 1); if (orientation == HORIZONTAL){ for(i = startRow; i < endRow; i++){ if(i == randR) { randPR = startRow + (rand() % ((endRow - 1) - startRow) + 1); for(j = startCol; j < endCol; j++){ if(j == randPR){ chamber[i][j] = 8; } else { chamber[i][j] = 1; } } } } addInnerWalls(chamber, startRow, startCol, randR - 1, endCol); addInnerWalls(chamber, randR + 1, startCol, endRow, endCol); } else { for(j = startCol; j < endCol; j++){ if(j == randC){ randPC = startCol + (rand() % ((endCol - 1) - startCol) + 1); for(i = startRow; i < endRow; i++){ if(i == randPC){ chamber[i][j] = 8; } else { chamber[i][j] = 1; } } } } addInnerWalls(chamber, startRow, startCol, randC - 1, randC - 1); addInnerWalls(chamber, randC + 1, randC + 1, endRow, endCol); } } int main(){ int camara[linhas][colunas],i,j,L=10; for(i = 0; i < linhas; i++){ for(j = 0; j < colunas; j++){ camara[i][j] = 0; } } addOuterWalls(camara, sizeof(camara)/sizeof(camara[0]), sizeof(camara[0])/sizeof(camara[0][0])); addEntrance(camara, sizeof(camara)/sizeof(camara[0])); addExit(camara, sizeof(camara)/sizeof(camara[0])); addInnerWalls(camara, 1, 1, sizeof(camara)/sizeof(camara[0]) - 1, sizeof(camara[0])/sizeof(camara[0]) - 1); textcolor(14,0); for(i = 0; i < linhas; i++){ gotoxy(25,L); for(j = 0; j < colunas; j++){ cout<<camara[i][j]<<" "; } L++; cout<<endl; } textcolor(7,0); cout<<"\n\n"<<endl; return 0; }
-
@Guilherme Quinquinel @Guilherme Quinquinel qual compilador você está usando ? testei aqui no codeblocks mas não funcionou , nem compilou , estou querendo aprender assembly mas tenho pouco conhecimento pois ainda estou estudando lógica de programação aqui no senac . tenho esse código em assembly que funciona no codeblocks e ele serve para somar e multiplicar dois números e imprimir o resultado : #include <iostream> int main(){ // Em C, seria: // bar = foo * 2 + foo; int bar,foo=25; asm volatile ( "movl $2 , %%eax ;" // registrador eax = 2 "movl $25 , %%ebx ;" /* registrador ebx = 25 */ "imul %%ebx, %%eax ;" /* eax * ebx */ "addl %%ebx, %%eax ;" // eax + ebx/*para multiplicar use -> imul */ "movl %%eax, %0 ;" // faz bar igual ao resultado. :"=q" (bar) // variáveis de saída :"c" (foo) // variáveis de entrada (ebx = foo) ); printf("bar= %d foo= %d\n\n",bar,foo); }
-
C++ Armazenar valores de uma matriz em dois vetores
devair1010 respondeu ao tópico de Fiterman em C/C#/C++
@Fiterman nesse primeiro enunciado , para pegar um elemento da matriz você precisa de duas variáveis que indicam a linha e a coluna onde está o elemento , e depois de pegar esse elemento faça a comparação com os outro elementos dessa mesma linha para ver qual é o maior , e para colocar no vetor você precisa de uma variável para indicar a posição do vetor , e faça o mesmo para saber qual é o menor em cada coluna e coloque no outro vetor da mesma forma . depois imprimir a matriz e os dois vetores . não podemos fazer o código para você pois é contra as regras do fórum , então faça e poste aqui para podermos ver como está e em que podemos ajudar . -
C Fazer a posição do vetor retornar para trás.
devair1010 respondeu ao tópico de Lucas Assunção de Sousa em C/C#/C++
@Lucas Assunção de Sousa então você quer imprimir a palavra digitada , mas sem esses caracteres P e Q , de forma que ela fique organizada sem nenhum espaço entre as letras , então seu código com algumas modificações pode ser assim : #include <stdio.h> #include <string.h> #include <ctype.h> #include <stdlib.h> #include <locale.h> void atualiza(char p[100], int t){ int j; for(j=t;j<strlen(p);j++){ p[j]=p[j+1]; if(p[j]=='\n')p[j]='\0'; } } int main (){ char linha[100]; int l; setlocale(LC_ALL,""); puts("Língua do P"); puts(""); printf("Digite a frase: "); fgets(linha, 100, stdin); for(l = 0; l < 100; l++){ if(toupper(linha[l]) == 'P' && toupper(linha[l + 1]) == 'Q'){ linha[l] = ' '; linha[l + 1] = ' '; atualiza(linha,l); } else{ if(toupper(linha[l]) == 'R'){ linha[l] = ' '; atualiza(linha,l); } } } printf("frase: %s\n\n", linha); return 0; } -
Outro soma de vetores em assembly
devair1010 respondeu ao tópico de Leandro Rodriguez em Programação - iniciantes
@Leandro Rodriguez qual compilador você está usando ? poste seu código para vermos como está e em podemos ajudar . -
C funcões que remova numeros e simbolos
devair1010 respondeu ao tópico de Kevin Karlsson em C/C#/C++
@Kevin Karlsson @Kevin Karlsson para fazer essa função você precisa criar uma variável string e outra string2 e a string conterá a string que você tem e quer remover os caracteres e então usar um laço de repetição para percorrer todos os caracteres da string comparando eles com o que você que remover e no caso der ser um deles então não coloca esse caractere na string2 e se não for então coloca esse caractere na string2 e no final depois do laço de repetição , coloque o caractere nulo ' \0 ' no fim da string2 para sinalizar que a string termina ali , e então pode imprimir essa string . mas não podemos te dar o código pronto pois é contra as regras do fórum , então faça e poste aqui para podermos ver como está e em que podemos ajudar . -
@Leiru a cifra de cesar é colocar as letras uma quantidade determinada de posições a frente da letra na palavra original , então seu código com algumas modificações pode ser assim : #include <stdio.h> #include <ctype.h> #include <string.h> int main(){ int tam,tam2,i=0,j,k,n,l; char *maiu = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; char palavra[50],codi[100]; printf("Digite Quatidade De Vezes "); scanf("%d",&n); while(i < n){ printf("Digite Uma Palavra Ou Frase "); fflush(stdin); gets(palavra); printf("Digite Um Numero Para Cifrar ( De 1 ate 9 ) "); fflush(stdin); scanf("%d",&k); tam = strlen(palavra); tam2 = strlen(maiu); for(l=0;l < tam; l++){ for(j=0;j < 26; j++){ if(toupper(palavra[l]) == (maiu[j]) && palavra[l] != ' '){ codi[l]= maiu[j+k]; break; } else{ if(palavra[l] == ' ') codi[l] = ' '; } } if(j+k > 25){ codi[l]=maiu[k-(26-j)]; } } codi[tam] = '\0'; /* sinalizando o final da string */ printf("%s\n%s\n\n",palavra,codi); i++; } return 0; }
-
@Leiru para postar seu código é melhor usar o botão <> que está lá na barra de ferramentas da janela de postar , pois senão seu código fica faltando alguns caracteres como o [ i ] que sumiram do seu código , e o que você quer fazer nesse código pois ele não está compilando .
-
Outro visualg matris oposta olha ai pf
devair1010 respondeu ao tópico de ALLAN26BR em Programação - outros
@ALLAN26BR para postar seu código é melhor o botão <> que está lá na barra de ferramentas de postar , pois senão seu código fica faltando alguns caracteres , e seu código está bom , faltou apenas transformar a matriz em matriz oposta , então seu código pode ser assim : Algoritmo "matriz oposta" var matriz : vetor[1..3,1..4] de inteiro matriz_oposta : vetor[1..3,1..4] de inteiro linha,coluna, soma, matrizoposta : inteiro inicio para linha de 1 ate 3 faca para coluna de 1 ate 4 faca matriz[linha,coluna] := randi (100)+(-50) fimpara fimpara escreval("--------------------------------------------------") escreval("valores cadastrados:") para linha de 1 ate 3 faca para coluna de 1 ate 4 faca escreva(matriz[linha,coluna]) soma := soma + matriz[linha,coluna] fimpara escreval(" ") fimpara escreval("----------------------------------------------") escreval("Valor Canto Superior Direito ----:",matriz[1,4]) escreval("Valor Canto Inferior Esquerdo ---:",matriz[3,1]) escreval("A Soma De Todos Os Números é ----:",soma ) escreval("----------------------------------------------") escreval("----------------------------------------------") escreval("matriz oposta:") para linha de 1 ate 3 faca para coluna de 1 ate 4 faca matriz_oposta[linha,coluna] := matriz[linha,coluna] * -1 escreva(matriz_oposta[linha,coluna]," ") fimpara escreval fimpara fimalgoritmo -
C Dificuldade em armazenar em arquivos o meu cadastro
devair1010 respondeu ao tópico de Pedro1998 em C/C#/C++
@Pedro1998 para postar seu código é melhor usar o botão <> que está lá na barra de ferramentas da janela de postar , pois senão seu código fica faltando alguns caracteres como os [ i ] que sumiram do seu código , seu código está bom , apenas tem alguns comandos desnecessários e essa forma de abrir os arquivos que você usou é bem complicada , é melhor usar da forma direta e bem mais simples , e essa função de alterar é bem difícil e não consegui fazer , então tente fazê-la e poste para que eu possa ter uma ideia de como fazer da próxima vez , então seu código com algumas modificações pode ser assim : #include <stdio.h> #include <conio.h> #include <locale.h> #include <stdlib.h> #include <string.h> #include <windows.h> /* 0 1 2 3 4 5 6 7 8 */ typedef enum{BLACK,BLUE,GREEN,CYAN,RED,MAGENTA,BROWN,LIGHTGRAY,DARKGRAY, /* nome das cores */ LIGHTBLUE,LIGHTGREEN,LIGHTCYAN,LIGHTRED,LIGHTMAGENTA,YELLOW,WHITE} COLORS; /* 9 10 11 12 13 14 15 */ static int __BACKGROUND = 1/*BLUE*/;/*pode ser o numero ou o nome da cor*/ static int __FOREGROUND = LIGHTGRAY; void textcolor (int letras, int fundo){/*para mudar a cor de fundo mude o background*/ __FOREGROUND = letras; __BACKGROUND = fundo; SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), letras + (__BACKGROUND << 4)); } typedef struct alunos { int codigo ; char tipo[50] ; float area ; int Ncomodos ; char padron[50] ; float sugerido ; float negociado ; }imobiliaria ; imobiliaria ImoBit[50]; int main(){ char op,resp='s',tip[30],pad[30]; int x=0,pesquisaid,cod;/* precisa inicializar */ FILE *arquivo,*arquivo2; setlocale(LC_ALL,""); do{ op='0'; textcolor(9,15); system("cls"); printf("0 - FINALIZAR O PROGRAMA =\n"); printf("1 - CADASTRAR ============\n"); printf("2 - LISTAR ===============\n"); printf("3 - PESQUISAR ============\n"); printf("4 - LISTAR POR TIPOS =====\n"); printf("5 - LISTAR POR PADRÃO ====\n"); printf("6 - ALTERAR ==============\n"); printf("7 - EXCLUIR ==============\n"); fflush(stdin); op=getche(); printf("\n"); switch(op){ case '0': printf("\n\nVocê Digitou Zero , Saindo "); for(x=0;x<10;x++){ printf(". "); Sleep(400); } printf("!\n\n"); break; case '1':/* cadastrar */ arquivo=fopen("imobiliaria.txt", "ab"); resp='s'; x=0; while(resp!='n'){ if(x<50){ system("cls"); printf("\n Insira o código de identificação do imóvel: " ); scanf("%d", &ImoBit[x].codigo ); printf("\n Informe o tipo de imóvel (Apartamento ou Casa): "); scanf("%s", ImoBit[x].tipo ); printf("\n Informe a área construída em M²: " ); scanf("%f", &ImoBit[x].area ); printf("\n Informe a quantidade de cômodos: " ); scanf("%d", &ImoBit[x].Ncomodos ); printf("\n Qual o padrão de acabamento do imóvel (Popular, Bom, Excelente): "); scanf("%s", ImoBit[x].padron ); printf("\n Informe o preço sugerido (em reais) \n R$ " ); scanf("%f", &ImoBit[x].sugerido ); fwrite(&ImoBit[x], sizeof(imobiliaria), 1, arquivo ); printf("\ndeseja cadastrar outro aluno ? S/N " ); resp=getch(); if(resp!='n') x++; } } fclose (arquivo); break; case '2':/* listar */ system("cls"); arquivo=fopen("imobiliaria.txt", "rb"); x=0; while(fread(&ImoBit[x], sizeof(imobiliaria), 1, arquivo)>0) { if(ImoBit[x].codigo!=-1){ printf("-------------------------------\n" ); printf("Código ---------: %d\n" ,ImoBit[x].codigo ); printf("Tipo -----------: %s\n" ,ImoBit[x].tipo ); printf("Area -----------: %.2f\n" ,ImoBit[x].area ); printf("Cômodos --------: %d\n" ,ImoBit[x].Ncomodos); printf("Padrão ---------: %s\n" ,ImoBit[x].padron ); printf("Preço Sugerido -: R$%.2f\n",ImoBit[x].sugerido); x++; } } fclose(arquivo); printf("\n Tecle !"); getch(); break; case '3':/* pesquisar */ system("cls"); arquivo=fopen("imobiliaria.txt", "rb"); x=0; printf("\nDigite O Número De Identificação Do Imóvel: "); scanf("%d", &pesquisaid); while(fread(&ImoBit[x], sizeof(imobiliaria), 1, arquivo)>0) { if(ImoBit[x].codigo == pesquisaid){ printf("-------------------------------\n"); printf("Código ---------: %d\n" ,ImoBit[x].codigo ); printf("Tipo -----------: %s\n" ,ImoBit[x].tipo ); printf("Area -----------: %.2f\n" ,ImoBit[x].area ); printf("Cômodos --------: %d\n" ,ImoBit[x].Ncomodos); printf("Padrão ---------: %s\n" ,ImoBit[x].padron ); printf("Preço Sugerido -: R$%.2f\n",ImoBit[x].sugerido); x++; } } fclose(arquivo); printf("\n Tecle !"); getch(); break; case '4':/* listar por tipo */ system("cls"); arquivo=fopen("imobiliaria.txt", "rb"); x=0; printf("\nInforme O Tipo Desejado: "); scanf("%s", tip); printf("Lista De Im´veis Do Tipo %s\n",tip); while(fread(&ImoBit[x], sizeof(imobiliaria), 1, arquivo)>0) { if(strcmp(ImoBit[x].tipo,tip)==0 && ImoBit[x].codigo!=0 ) { printf("-------------------------------\n"); printf("Código ---------: %d\n" ,ImoBit[x].codigo ); printf("Tipo -----------: %s\n" ,ImoBit[x].tipo ); printf("Area -----------: %.2f\n" ,ImoBit[x].area ); printf("Cômodos --------: %d\n" ,ImoBit[x].Ncomodos); printf("Padrão ---------: %s\n" ,ImoBit[x].padron ); printf("Preço Sugerido -: R$%.2f\n",ImoBit[x].sugerido); x++; } } fclose(arquivo); printf("\n Tecle !"); getch(); break; case '5':/* listar por padrão */ system("cls"); arquivo=fopen("imobiliaria.txt", "rb"); x=0; printf("\nInforme O Padrão Desejado: "); scanf("%s", pad); printf("Lista De Imóveis Do Tipo %s\n",pad); while(fread(&ImoBit[x], sizeof(imobiliaria), 1, arquivo)>0){ if(strcmp(ImoBit[x].padrão,pad)==0 && ImoBit[x].codigo!=0){ printf("-------------------------------\n"); printf("Código ---------: %d\n" ,ImoBit[x].codigo ); printf("Tipo -----------: %s\n" ,ImoBit[x].tipo ); printf("Area -----------: %.2f\n" ,ImoBit[x].area ); printf("Cômodos --------: %d\n" ,ImoBit[x].Ncomodos); printf("Padrão ---------: %s\n" ,ImoBit[x].padron ); printf("Preço Sugerido -: R$%.2f\n",ImoBit[x].sugerido); x++; } } fclose(arquivo); printf("\n Tecle !"); getch(); break; case '6': printf("Está No Alterar . . . ! Tecle"); getche(); /* esse é bem difícil e não consegui fazer , veja o que consegue .*/ break; case '7':/* excluir */ x=0; arquivo =fopen("imobiliaria.txt", "rb"); arquivo2=fopen("imobiliaria2.txt","ab"); printf("digite o id a ser apagado: "); fflush(stdin); scanf("%d",&cod); while(fread(&ImoBit[x], sizeof(imobiliaria), 1, arquivo)>0){ if(ImoBit[x].codigo != cod){ fwrite(&ImoBit[x], sizeof(imobiliaria), 1, arquivo2); x++; } } fclose(arquivo2); fclose(arquivo ); remove("imobiliaria.txt"); rename("imobiliaria2.txt","imobiliaria.txt"); printf("\nExclusao Concluida Com Sucesso !\n\n"); printf(" Tecle !\n\n"); getch(); break; default: printf("\nOpção Inválida"); Sleep(1000); break; } }while(op!='0'); textcolor(12,15);/* primeiro cor letra , segundo cor fundo */ return 0; }
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