-
Posts
6.315 -
Cadastrado em
-
Última visita
Tópicos solucionados
-
O post de devair1010 em Realocar arquivos do .txt ao abrir o programa em c foi marcado como solução
@arthur Oliver 19 seu código está bom , só precisa fazer a parte de inserir na struct , então seu código com algumas modificações poderia ser assim :
#include <stdio.h> #include <conio.h> #include <windows.h> int slot,cont,j,i,k; /* variáveis globais */ struct registro{ /* a struct */ char nome[30]; /* os campos da struct */ char sobrenome[30]; }reg[10]; /* o vetor da struct */ FILE *ARQUIVOS; /* ponteiro para arquivo */ char separa_nome(char *res){ /* ponteiro aponta para endereço da variável enviada */ for(j=0;j<strlen(res);j++){ /* percorrer a variável do começo ao fim */ if(res[j]=='-'){ /* se encontar o sinal de menos */ res[j]='\0'; /* coloca o sinal de fim de string */ break; /* sai do loop pois já pegou o nome toda */ } } } char separa_sobrenome(char *res){ /* ponteiro aponta para endereço da variável enviada */ for(j=0;j<strlen(res);j++){ /* percorrer a variável do começo ao fim */ if(res[j]=='-'){ /* se encontrar o sinal de menos */ k=-1; /* posiciona o contador uma posição antes */ for(i=j+1;res[i]!='\0';i++){ /* percorrer a variável até encontrar o sinal do fim da string */ k++; /* incrementa a posição */ if((int)res[i]>47 && (int)res[i]<58 )break;/* se o caractere for um digite de zero até nove*/ /* sai desse loop pois já pegou o sobrenome */ res[k]=res[i]; /* coloca o caractere na posição certa */ } res[k]='\0'; /* coloca o finalizador da string */ break; } } } int main(){ ARQUIVOS = fopen("Nomes.txt", "r"); /* abre o arquivo */ if(ARQUIVOS == NULL){ /* se o arquivo não existir */ printf("\n\n\nNao foi possivel abrir o arquivo. \n\n\n"); Sleep(700); /* dorme hum pouquinho */ /*getchar();*/ exit (0); /* sai do programa */ } system("cls"); /* limpa a tela */ printf(" ");printf("\t\t\t PALAVRAS CADASTRADA NO BANCO ");printf("\t\t \n"); printf(" %c**********************************************************%c\n",200,188); Sleep(700); /* dorme hum pouquinho */ char palavra[200],aux[20]; /* variáveis locais */ while(fscanf(ARQUIVOS,"%s",palavra) != EOF){/* lê caract juntos até encontrar o fim do arquivo EOF */ slot++; printf("A Palavra ---------------------> %s\n\n", palavra); strcpy(aux,palavra); separa_nome(&aux); /* envia o endereço na memória da variável palavra */ strcpy(reg[cont].nome,aux); printf("o nome gravado na struct ------> %s\n",reg[cont].nome); separa_sobrenome(&palavra); /* envia o endereço na memória da variável palavra */ strcpy(reg[cont].sobrenome,palavra); printf("o sobrenome gravado na struct -> %s\n",reg[cont].sobrenome); printf("=================================================================\n\n"); cont++; } fclose(ARQUIVOS); for(j=0;j<cont;j++){ printf("Nome e sobreNome --> %s " ,reg[j].nome ); printf( "%s\n",reg[j].sobrenome); } getch(); } na saída o cont terá determinado valor que será usado para continuar inserir dados na struct a partir dessa posição , e nesse código insere string , mas se quiser inserir números basta converter a string para int usando a função atoi , e inserir na struct no campo int .
-
O post de devair1010 em apresentar em ordem crescente e decrescente usando o switch foi marcado como solução
@Jessica Nunes Amorim quase ! , mas precisa colocar a função que ordena na posição certa dentro do switch , e você colocou antes do switch , então , organizando seu código , e ele poderia ser assim :
#include <iostream> #include <ctype.h> #include <conio.h> #include <windows.h> #define N 3 using namespace std; int carac[4]={47,92,179,196}; int main(){ int val[N],i,j,aux,menor,k=0; char ordem,op; for(i=0;i<N;i++){ cout<<"informe o valor : "; cin>>val[i];/* faltou a posição no vetor */ } cout<<"informe a ordem desejada [c/d]:"; cin>>ordem; switch(toupper(ordem)){ case 'C': cout<<"ordem crescente\n"<<endl; for(i=0;i<N-1;i++) for(j=i+1;j<N;j++) if( val[i] > val[j]){/* faltou a posição no vetor */ aux = val[i] ;/* faltou a posição no vetor */ val[i] = val[j] ;/* faltou a posição no vetor */ val[j] = aux ; } for(i=0;i<N;i++) cout<<val[i]<<" "; cout<<endl; break;/* parar senão faz esse de baixo também */ case 'D': cout<<"ordem decrescente\n"<<endl; for(i=0;i<N-1;i++){ for(j=i+1;j<N;j++) if( val[i] < val[j]){/* faltou a posição no vetor */ aux = val[i] ;/* faltou a posição no vetor */ val[i] = val[j] ;/* faltou a posição no vetor */ val[j] = aux ; } } for (i=0;i<N;i++) cout<<val[i]<<" "; cout<<endl; break;/* parar senão faz esse de baixo também */ default: cout<<"ordem invalida"<<endl; } cout<<"\n\n Sair S/N \n\n"<<endl; while(toupper(op)!='S'){ cout<<" "<<(char)carac[k]<<"\r"; Sleep(200); k++; if(k>3)k=0; if(kbhit())op=(char)getch(); } cout<<"\n\n"<<endl; return 0; }
-
O post de devair1010 em algoritmo e técnica de programação foi marcado como solução
@Jessica Nunes Amorim seu código está bom , apenas alguns erros , e seu código com algumas modificações poderia ser assim :
#include <stdio.h> #include <conio.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/*BLACK*/;/*pode ser o numero ou o nome da cor*/ static int __FOREGROUND = lightgray; void textcolor_2 (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)); } int i,num,numinpar,numpar,cont; int maiornumpar,menornuminpar; int main(){ textcolor_2(14,0); while(7==7){ printf("insira um valor Positivo ou Negativo Para Sair : "); scanf("%i",&num); cont++; if(cont==1)menornuminpar=num; if(num < 0){ break; } if( num % 2 == 0 ) { numpar++ ; } else{ numinpar++ ; } if(num > maiornumpar){ maiornumpar = num; } else if(num < menornuminpar){ menornuminpar = num; } } cont--; textcolor_2(10,12); printf("\n\nMedia dos valores impares --: %.2f por cento \n",(float)numinpar/cont*100); printf("Media dos valores pares ----: %.2f por cento \n" ,(float)numpar/cont*100 ); printf("Menor numero impar ---------: %d \n" ,menornuminpar ); printf("Maior numero par -----------: %d \n\n" ,maiornumpar ); printf("Digite Quatro Numeros Separados Por Hum Espaço E Tecle Enter " ); scanf("%d %d %d %d",&numinpar,&numpar,&menornuminpar,&maiornumpar);/* não tem nescessidade */ printf("\n\n Tecle !\n\n\n"); textcolor_2(15,0); getch();/* espera teclar algo */ return 0; }
-
O post de devair1010 em Problema em C: conversor de medidas foi marcado como solução
@Nathan Holanda você precisa colocar um comando de parada , como
getch(); ou
system("pause"); , para que se consiga ver o que foi impresso , esse código vai precisar fazer as outras funções , mas você pode testar escolhendo as opções 3 , 1 , 3 a partir do menu principal , e seu código poderia ser assim :
#include<stdio.h> #include<ctype.h> #include<conio.h> #include<stdlib.h> #include<math.h> #include<locale.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/*BLACK*/;/*pode ser o numero ou o nome da cor*/ static int __FOREGROUND = lightgray; void textcolor_2 (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)); } int start,op[2]; char km[2],cm[2],m[1200],ha[2],s2[300]; char mm[2],nm[2],um[2],s1[300]; int opções( );/* protótipo das funções */ void converte(double a,int olp[2]);/* protótipo das funções */ void menu(){ textcolor_2(10,0); do{ printf("*****MENU*****\n\n"); printf("Ecolha uma op%c%co atrav%cs do n%cmero correspondente\n\n",135,198,130,163); printf(" 1 - Sobre o programa\n"); printf(" 2 - Descri%c%co do programa\n",135,198); printf(" 3 - Fazer uma convers%co\n",198); printf(" 4 - Sair do Programa\n\n"); printf("Op%c%co : ",135,198); scanf("%d",&start); system("cls"); }while(start < 1 || start > 4 ); textcolor_2(7,0); } char description1(){ //as descrições das unidades ainda serão inseridas km[0]='a'; km[1]='a'; ha[1]='a'; strcpy(m,"O metro quadrado (m²) é a unidade padrão de área adaptada para o Sistema Internacional de Unidades, e derivada da unidade básica metro. Corresponde à área que tem um quadrado com um metro de lado."); system("pause"); cm[1],'a'; mm[1],'a'; um[1],'a'; nm[1],'a'; op[0]=opções(); switch(op[0]){ case 1:strcpy(s1,km);break; case 2:strcpy(s1,ha);break; case 3:strcpy(s1,m );break; case 4:strcpy(s1,cm);break; case 5:strcpy(s1,mm);break; case 6:strcpy(s1,um);break; case 7:strcpy(s1,nm);break; } puts(s1); } void description2(){ //as descrições das unidades ainda serão inseridas km[2]='a'; ha[2]='a'; strcpy(m,"O metro quadrado (m²) é a unidade padrão de área adaptada para o Sistema Internacional de Unidades, e derivada da unidade básica metro. Corresponde à área que tem um quadrado com um metro de lado."); cm[2]='a'; mm[2]='a'; um[2]='a'; nm[2]='a'; op[1]=opções(); switch(op[1]){ case 1:strcpy(s2,km);break; case 2:strcpy(s2,ha);break; case 3:strcpy(s2,m );break; case 4:strcpy(s2,cm);break; case 5:strcpy(s2,mm);break; case 6:strcpy(s2,um);break; case 7:strcpy(s2,nm);break; } puts(s2); } int main(){ setlocale(LC_ALL, ""); int op[2], i=1; double a,b,tabela[2]; do{ system("cls"); menu(); switch(start){ case 1: printf("teste\n"); printf("ser%co inseridas aqui informa%c%ces gerais sobre o programa\n\n",198,135,228); //serão inseridas aqui informações gerais sobre o programa break; case 2: printf("teste\n"); printf("est%c na op%c%co 2\n\n",160,135,198); system("pause"); break; case 3: printf("CONVERTER DE:\n\n"); op[0]=opções(); system("cls"); printf("CONVERS%cO PARA:\n\n",199); op[1]=opções(); printf("\nValor a ser convertido -: "); scanf("%lf", &a); converte(a,op);/* op tem duas as posições */ break; case 4: printf("\n\n Saindo . . . !\n\n\n"); return 0; default : printf("\nOp%c%co inv%clida !\n",135,198,160); } system("pause"); }while( start != 4 ); //minhas funções description não estão funcionando :( } int opções(){ textcolor_2(14,0); int opc; printf("\n============================\n\n"); textcolor_2(11,0); printf(" 1 - Quilômetro quadrado (km²)\n" ); printf(" 2 - Hectare (ha) \n" ); printf(" 3 - Metro quadrado (m²) \n" ); printf(" 4 - Centímetro quadrado (cm²)\n" ); printf(" 5 - Milímetro quadrado (mm²) \n" ); printf(" 6 - Micrometro quadrado (μm²)\n" ); printf(" 7 - Nan%cmetro quadrado (nm²)",226); textcolor_2(14,0); printf("\n\n============================\n"); printf(" Op%c%co : ",135,198); textcolor_2(11,0); scanf("%d",&opc); return opc; } void converte(double a,int op[]){ textcolor_2(7,0); switch(op[0]){ case 1: switch(op[1]){ case 1: break; case 2: break; case 3: printf("\n de kil%cmetro para metro => %.2lf\n\n",226,(double)a * 1000000); break; case 4: break; case 5: break; case 6: break; case 7: break; default : printf("\nOp%c%co inv%clida !\n\n",135,198,160); } break; case 2: break; case 3: break; case 4: break; case 5: break; case 6: break; case 7: break; default : printf("\nOp%c%co inv%clida !\n\n",135,198,160); } }
-
O post de devair1010 em Como ligar um led em um interruptor foi marcado como solução
@WhoTiEIK_ eu entendi que seja assim :
-
O post de devair1010 em Por onde poderia começar essas duas avaliações foi marcado como solução
@Neilton102 como no enunciado disse que o programa apresenta uma mensagem motivacional , então não precisa do usuário informar essa tal mensagem , seria você mesmo que criaria essa mensagem e coloca no programa , uma para cada signo , para que quando o usuário inserir a data o programa calcula o signo correspondente e imprime a mensagem , então uma ideia poderia ser assim :
#include <stdio.h> #include <conio.h> #include <string.h> int main(){ int d,m,fim,flag; char s[12]; do{ do{ do{ printf("informe o dia de nascimento de ( 1 ate 31 ) "); scanf("%d",&d); }while( d<1 || d>31 ); /* ate inserir um valor válido */ flag=0; printf("informe o mes de nascimento de ( 1 ate 12 ) "); scanf("%d",&m); if((m==4 || m==6 || m==9|| m==11) && d>30)flag=1; if(m==2&&d>29)flag=1; }while( flag ); /* ate inserir um valor válido */ strcpy(s,""); /* zerar a variável do signo */ if(m==1 && (d>20 && d<32))strcpy(s,"Aquario");/* para o mês de aquário */ else if(m==2 && d<20) strcpy(s,"Aquario"); /* outros blocos como esse ai de cima para calcular os outros signos */ if(strcmp(s,"Aquario")==0)/* verifica qual o signo corresponde a essa data */ printf("\n%s -> bom dia para ir pescar !\n",s); /* imprime a mensagem */ printf("\noutro signo ? S/N "); /* se quiser ver outro signo */ fim=getch(); /* pega uma tecla sem esperar pressionar enter */ printf("\n\n"); }while(fim != 110 && fim != 77 ); /* se precionar S maiúsculo ou minúsculo */ printf("\n\n Tecle !\n\n"); getch(); /* espera até precionar alguma tecla do teclado */ return 0; }
-
O post de devair1010 em Erro em SWITCH...CASE no programa foi marcado como solução
@NhemonF testei e está funcionando e mostrando as opções
-
O post de devair1010 em vetores em arquivos em lote batch foi marcado como solução
@ricardo_br @ricardo_br ô Obrigado mesmo , agora ficou do jeito que preciso ! ! ! . . .
o código final ficou assim :
@echo off setlocal EnableDelayedExpansion set g=1 set vetor[0]=comandcom set vetor[1]=comentarios set vetor[2]=enabled echo conteudo do vetor com variavel = !vetor[%g%]! echo conteudo do vetor com numero = %vetor[1]% echo. for /l %%n in (0,1,2) do ( echo vetor dentro do loop ---------= %%n -= !vetor[%%%n]! ) echo. echo. pause
-
O post de devair1010 em PASCAL error com código identificador de Palavras. foi marcado como solução
@TheMajor está com um erro no último until , que parece ser da linguagem lua ou python , então seu código com algumas modificações poderia se assim :
Program Pzim ; uses crt; var P,sair : string; //Palavra Cont : string; //palavra ao contrario x : integer; r : char; Begin repeat cont:=''; write('Digita a palavra: '); readln(P); P := upcase(P); repeat delete(P,pos(' ',P),1) until pos(' ',P) = 0; //remover espaços repeat delete(P,pos('-',P),1) until pos('-',P) = 0; //remover hífens for x := length(P) downto 1 do begin cont := cont + P[x]; end; clrscr; writeln(' A palavra normal é: ', P); writeln(' A palavra ao contrario é: ',cont); if P = cont then writeln(' Essa palavra é Polindromo!!') else writeln(' Essa palavra não é um Polindromo.'); //====================================================================================// writeln; write('OUTRA CONSULTA? [S/N] >> '); repeat sair := upcase(readkey); until (sair = 'S') or (sair = 'N'); // in ['S','N']; writeln; writeln; until sair='N'; End.
-
O post de devair1010 em implementar estruturas do do-while e for. foi marcado como solução
@Adrielle Maques você usou o sinal maiorque e menorque do teclado , mas o certo nesse caso seria usar o simbolo <> que está desenhado lá na barra de ferramentas da janela de postar , e para usar cinco variáveis você pode colocar junto com as que já tem no código , ali :
int a,b,c,d,e,temp; o do - while é igual ao while , apenas que você coloca o do , e coloca seu código , e depois no final coloca o while com as condições dele , e ele é usado para que o código que esteja dentro dele seja rodado pelo menos uma vez , pois no while pode acontecer de não usar nenhuma vez , e o for também seria a mesma coisa apenas que ao invés de usar o while você coloca o for e as condições para ele rodar , o restante que está entre as chaves é igual .
#include <stdio.h> #include <stdlib.h> int main(){ int a,b,c,d,e,temp; printf ("Ordenar tres numeros em ordem crescente \n\n"); printf ("\n Entre com o valor de a: "); scanf ("%d" ,&a) ; printf ("\n Entre com o valor de b: "); scanf ("%d" ,&b) ; printf ("\n Entre com o valor de c "); scanf ("%d" ,&c); system ("cls"); for(d=0;d<3;d++)/*while(a > b || b > c)*/{ if(a > b){ temp = a; a = b; b = temp ; } if(b > c){ temp = b; b = c; c = temp ; } } printf ("\n Resultado \n\n") ; printf ("%d\t%d\t%d\n",a,b,c) ; return 0; } o que está entre os sinais / * e * / são comentários que serão ignorados pelo compilador , deixei aí apenas para ver o que se modificou .
-
O post de devair1010 em Raíz quadrada em java foi marcado como solução
@Ray fourth o T é a quantidade de testes , se T for 2 então serão duas linhas de testes e em cada linha terá um número N que precisa ser calculado a raiz quadrada dela , e essa função , raiz , não funciona , por que você não usa a função Math.sqrt(x) ? .
package raiz_quadrada; import java.util.Scanner; public class Raiz_quadrada { public static void main(String[] args) { Scanner sc = new Scanner(System.in); Scanner st = new Scanner(System.in); int x = 12; System.out.println("informe a quantidade de testes"); int op1 = sc.nextInt(); for(int j=0;j<op1;j++){ System.out.println("informe um numero maior que zero e menor que 10001"); int op2=st.nextInt(); System.out.println("valor da raiz quadrada "+Math.sqrt(op2)); } } }
-
O post de devair1010 em Como deleta o conteúdo de um arquivo txt em c++ foi marcado como solução
@Khaled M você quer deletar apenas uma linha do arquivo ou deletar tudo que está no arquivo ? pois para deletar todo o arquivo você pode usar a função remove , que irá remover todo o arquivo e depois você cria o arquivo novamente e ele estará vazio , assim :
remove("ARQTXT.txt"); /* remove o arquivo */ ARQTXT.open("ARQTXT.txt", ios_base::app);/* cria o arquivo novamente vazio */ mas para deletar apenas algum caractere ou mesmo uma linha do arquivo você pode criar um arquivo auxiliar e abrir o arquivo onde você quer deletar os dados e ir lendo o arquivo e comparando com o que você quer deletar e se for diferente você coloca esse dado no arquivo auxiliar , assim no final o arquivo auxiliar conterá todos os dados menos os dados que você quer deletar , depois use a função remove para deletar o arquivo , que nesse caso seria o ARQTXT.txt , e em seguida renomeie o arquivo auxiliar com o nome do primeiro arquivo , assim :
ofstream ARQTXT; ofstream aux; ARQTXT.open("ARQTXT.txt", ios_base::app); aux.open("auxiliar.txt", ios_base::app); . deletar os dados . fclose(aux); fclose(ARQTXT); remove("ARQTXT.txt"); rename("auxiliar.txt","ARQTXT.txt"); mas antes de remover e renomear precisa fechar os dois arquivos , assim você terá seu arquivo original contendo todos os dados menos os que você quis deletar .
-
O post de devair1010 em Wumpus posiçoes aleatorias para os objetos na matriz foi marcado como solução
@zepelinmdr para gerar apenas duas posição você coloca um loop que repita duas vezes , então seu código com algumas modificações poderia ser assim :
#include<stdlib.h> #include<stdio.h> #include<time.h> int main(){ srand(time(NULL)); int i,j,cont=0,flag; //contadores int const N; // constante para definir o tamanho da matriz ambiente printf("informe o tamanho do ambiente:"); scanf("%i", &N); int Am[N][N];//matriz usada como ambiente for(i=0;i<N;i++) for(j=0;j<N;j++) Am[i][j] = 0; //matriz ambiente criada e preenchida com 0*/ flag=0; for(cont=0;cont<2;cont++){ do{ i=rand()%N; j=rand()%N; if(Am[i][j]!= 0)flag=1; }while( flag ); Am[i][j]=rand()%100; } for(i=0; i<N; i++){ for(j=0;j<N; j++){ printf(" %2i",Am[i][j]); } printf("\n"); } printf("\n\n"); return 0; }
-
O post de devair1010 em Alterações e Queue ou Fila foi marcado como solução
@MrCricket para alterar algum dado você procura no vetor de struct qual a posição que está o dado que quer alterar , e coloca o valor que quiser , como no exemplo o número do celular então use o scanf para inserir novo número , e para eliminar algum componente você procura no vetor o dado que quer excluir e a posição onde se encontra esse elemento , em seguida copie o que está na posição seguinte a ele em cima dele e assim com os próximos até o final do vetor e decremente o contador , poste seu código para vermos como está e em que podemos ajudar .
-
O post de devair1010 em Scanf limitado para determinado numero de caracteres foi marcado como solução
@Rafael Carvalho Alencar uma função para fazer esse procedimento não existe naturalmente na linguagem c / c++ , então você pode criar uma função que faça isso , aqui um exemplo de uma bem simples , mas que funciona bem nesse caso com esses números que você disse :
#include <stdio.h> #include <conio.h> #include <math.h> int meu_scanf(int n){ int j,q=pow(10,n-1),a=0; for(j=n;j>0;j--){ a+=(getche()-48)*q; q=q/10; } return a; } int main(){ int a,b,c; printf("Dois numeros "); a = meu_scanf(2);/* quantidade de números */ printf("\nnumeros digitados -> %d\n\n",a); printf("Dois numeros "); b = meu_scanf(2);/* quantidade de números */ printf("\nnumeros digitados -> %d\n\n",b); printf("Quatro numeros "); c = meu_scanf(4);/* quantidade de números */ printf("\nnumeros digitados -> %d\n\n",c); return 0; }
-
O post de devair1010 em programa em c++ que leia arquivo txt e salve valores em struct foi marcado como solução
@Rafael Carvalho Alencar seu código está bom , então para gravar os dados seria melhor no final do código , quando tiver usado o programa e ter feito outros cadastrado e modificado , etc ... então ele grava tudo de uma vez , então seu código com algumas modificações poderia ser assim :
#include <stdio.h> #include <string.h> #include <conio.h> #include <stdlib.h> #include <ctype.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/*BLACK*/;/*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)); } void gotoxy(int x, int y){ COORD c; c.X = x; c.Y = y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c); } struct Usuarios { int codigo[ 5]; char nome[ 15]; char sobrenome[30]; char cargo[ 30]; }; struct Usuarios usuario[100]; void imprime(int j){ printf(" codigo ---: %d\n" ,usuario[j].codigo[0]); /* imprime os dados referente ao usuário */ printf(" nome ------: %s\n" ,usuario[j].nome ); printf(" sobrenome -: %s\n" ,usuario[j].sobrenome); printf(" cargo -----: %s\n\n",usuario[j].cargo ); } int main(){ textcolor(12,15); system("cls"); int i=0,j=0,w,flag; // valor que o usuario vai digitar para identificar a que usuario está se referindo. int carac[8]={179,47,196,92,179,47,196,92}; int tam_struct,opc; /* informa a posição da struct onde vai colocar novos dados */ char op,cod[10]; FILE *arq=fopen("arquivo_de_dados.txt","a+");/* cria o arquivo txt e abre para leitura e escrita no final */ if(arq==NULL){printf("erro no arquivo !\n");exit(0);} printf("Lista com todos os usuarios cadstrados !\n\n"); while( fscanf(arq, "%d" , &usuario[j].codigo[0])!= EOF && /* aqui pega do arquivo e coloca na struct */ fscanf(arq, "%s" , &usuario[j].nome )!= EOF && /* seguindo nessa ordem */ fscanf(arq, "%s" , &usuario[j].sobrenome)!= EOF && /* no arquivo precisa estar nessa mesma ordem */ fscanf(arq, "%s" , &usuario[j].cargo )!= EOF ){ imprime(j); j++; } fclose(arq); /* fecha o arquivo */ tam_struct=j; printf(" Tecle !"); getch(); do{ system("cls"); printf("\n\n Menu\n\n\n"); printf(" 1 - Listar hum usuario\n"); printf(" 2 - Listar Todos usuario\n"); printf(" 3 - Cadastrar usuario\n"); printf(" 4 - Excluir hum usuario\n"); printf(" 5 - Alterar hum usuario\n"); printf(" 6 - sair do programa\n\n"); for(j=1;j<41;j++){ if(j<12){ gotoxy(20,j); printf("%c",186); gotoxy(60,j); printf("%c",186); } gotoxy(j+19,1); printf("%c",205); gotoxy(j+19,3); printf("%c",205); gotoxy(j+19,12); printf("%c",205); } gotoxy(60,1 );printf("%c",187); gotoxy(20,1 );printf("%c",201); gotoxy(20,12);printf("%c",200); gotoxy(60,12);printf("%c",188); gotoxy(60,3 );printf("%c",185); gotoxy(20,3 );printf("%c",204); gotoxy(30,14); printf("Opcao : "); opc = getch()-48; /* pegando o numero de codigo do usuario */ printf("\n"); switch( opc ){ case 1 : flag=0; printf("Qual o n%cmero do usu%crio ",233,160); /* esses números se refrem às letras ú á ASCII */ fflush(stdin); scanf("%d",&i); /* pegando o numero de codigo do usuario */ for(j=0;j<tam_struct;j++) if(usuario[j].codigo[0] == i ){ imprime(j); flag=1; } if( ! flag )printf("\nCodigo inexistente !\n"); printf(" Tecle "); getch(); break; case 2 : for(j=0;j<tam_struct;j++){ imprime(j); } if( ! j)printf("\nNenhum usuario cadastrado !\n"); printf(" Tecle !"); getch(); break; case 3 : printf("\nCadastrando usuario\n\n"); do{ do{ printf("codigo usuario "); fflush(stdin); /* limpa o buffer do teclado para não pegar sujeira que esteja lá */ scanf("%s", cod ); /* pega o codigo do usuario em uma string */ flag=0; /* flag igual falso */ for(j=0;j<strlen(cod);j++) /* percorre todos os caracteres da string */ if( ! isdigit(cod[j])) /* se algum caractere não for um digito de zero a nove */ flag=1; /* flag igual verdadeiro */ if( flag ) /* se flag verdaeiro */ printf("O codigo precisa ser só numeros , e nesse tem caracteres invalidos .\n");/* imprime mensagem */ for(j=0;j<tam_struct;j++) if(usuario[j].codigo[0] == atoi(cod)){ /* atoi converte string para inteiro */ printf("Esse codigo ja existe , insira outro .\n"); flag=1; break; } }while( flag ); /* se flag verdaeiro repete para pegar um codigo valido */ usuario[tam_struct].codigo[0] = atoi(cod); /* coloca o codigo valido na struct */ printf("nome usuario "); fflush(stdin); /* limpa o buffer do teclado para não pegar sujeira que esteja lá */ scanf("%s", usuario[tam_struct].nome); /* pega o nome do usuario */ printf("sobrenome usuario "); fflush(stdin); scanf("%s", usuario[tam_struct].sobrenome); /* pega o sobrenome do usuario */ printf("cargo usuario "); fflush(stdin); scanf("%s", usuario[tam_struct].cargo); /* pega o cargo do usuario */ tam_struct++; printf("Quer inserir outro usuario S/N "); printf("\n\n"); op=getche(); }while(toupper(op) != 'N'); break; case 4 : flag=0; printf("\nNome usuario excluir "); scanf("%s",cod); for(j=0;j<tam_struct;j++){ if(strcmp(usuario[j].nome,cod)==0){ imprime(j); printf("Quer mesmo excluir S/N "); op = getche(); if(toupper(op) == 'S'){ for(w=j;w<tam_struct;w++){ usuario[w] = usuario[w+1]; } flag=1; tam_struct--; break; } else break; } } if( flag ) printf("\nUsuario excluido com sucesso !\n Tecle "); else printf("\nOk , Usuario nao foi excluido !\n Tecle "); getch(); break; case 5 : flag=0; printf("Alerando hum usuario \n\n"); printf("\nNome usuario alterar "); scanf("%s",cod); for(w=0;w<tam_struct;w++){ if(strcmp(usuario[w].nome,cod)==0){ imprime(w); printf("\nQuer mesmo alterar S/N "); op = getche(); if(toupper(op) == 'S'){ do{ printf("\ncodigo usuario "); fflush(stdin); /* limpa o buffer do teclado para não pegar sujeira que esteja lá */ scanf("%s", cod ); /* pega o codigo do usuario em uma string */ flag=0; /* flag igual falso */ for(j=0;j<strlen(cod);j++) /* percorre todos os caracteres da string */ if( ! isdigit(cod[j])) /* se algum caractere não for um digito de zero a nove */ flag=1; /* flag igual verdadeiro */ if( flag ) /* se flag verdaeiro */ printf("O codigo precisa ser só numeros , e nesse tem caracteres invalidos .\n");/* imprime mensagem */ for(j=0;j<tam_struct;j++) if(usuario[j].codigo[0] == atoi(cod)){ /* atoi converte string para inteiro */ printf("Esse codigo ja existe , insira outro .\n"); flag=1; break; } }while( flag ); /* se flag verdaeiro repete para pegar um codigo valido */ usuario[w].codigo[0] = atoi(cod); /* coloca o codigo valido na struct */ printf("nome usuario "); fflush(stdin); /* limpa o buffer do teclado para não pegar sujeira que esteja lá */ scanf("%s", usuario[w].nome); /* pega o nome do usuario */ printf("sobrenome usuario "); fflush(stdin); scanf("%s", usuario[w].sobrenome); /* pega o sobrenome do usuario */ printf("cargo usuario "); fflush(stdin); scanf("%s", usuario[w].cargo); /* pega o cargo do usuario */ printf("Usuario alterado com sucesso !\n Tecle "); flag=1; break; } } } if( ! flag ) printf("\nOk , Usuario nao foi aletrado !\n Tecle "); getch(); break; default : if(opc!=6){ printf("Opcao invalida !\n Tecle "); getch(); } } }while(opc!= 6 ); arq=fopen("arquivo_de_dados.txt","w"); /* abre o arquivo e reseta ele para gravar dese o inicio do arquivo */ for(j=0;j<tam_struct;j++){ fprintf(arq, "%d " , usuario[j].codigo[0]); /* grava no arquivo txt */ fprintf(arq, "%s " , usuario[j].nome ); /* grava no arquivo txt */ fprintf(arq, "%s " , usuario[j].sobrenome); /* grava no arquivo txt */ fprintf(arq, "%s " , usuario[j].cargo ); /* grava no arquivo txt */ } fclose(arq); for(j=0;j<10;j++){ gotoxy(0,23); printf("Ok , Vamos fechar o programa "); for(w=0;w<8;w++){ gotoxy(j*2+29,23); printf("%c",carac[w]); Sleep(70); } gotoxy(j*2+29,23); printf("."); if(j==9)printf(" !"); printf(" %d",9-j); gotoxy(79,23); Sleep(50); } gotoxy(53,23); printf(" \n\n"); textcolor(0,15); return 0; }
-
O post de devair1010 em somar diagonal principal e multiplicar foi marcado como solução
@Luiz Jordão no enunciado pede para preencher um vetor com os valor gerados das diagonais principais de duas matrizes , então para gerar esses valores das diagonais você verifica se i igual j e se for multiplica a matriz A na posição i j e coloca no vetor e também multiplica a matriz B e coloca no vetor na posição + l*c/2 e depois imprimir esses valores que estarão no vetor .
essa parte seria assim :
//Processamento e saida em tela printf("---------------------------- 3 - Matriz Gerada == SOMA E MULTIPLICA PELOS ULTIMOS NUMEROS DA MATRICULA == ----\n\n"); int cont=0; for(i=0; i<l; i++){ for(j=0; j<c; j++){ if(i==j){ vetor[cont ] = matrizA[i][j]*13; vetor[cont+l*c/2] = matrizB[i][j]*13; printf("%6.f %6.f",vetor[cont],vetor[cont+l*c/2]); cont++; } /*// REALIZA A SOMA DAS MATRIZES E MULTIPLICA POR 13 matrizC[i][j] = (matrizA[i][j] + matrizB[i][j])*13; // IMPRIMI A MATRIZ NA TELA printf("%6.f", matrizC[i][j]);*/ } rintf("\n\n"); } printf("\n\n");
-
O post de devair1010 em Como posso escrever esse algoritmo ? foi marcado como solução
@Luiz Jordão você pode criar os três vetores colocando eles com 100 posições e coloque eles antes da main , para que eles sejam inicializados com valor zero , e em seguida pegue o valor de N digitado pelo usuário e se o valor for maior que 100 faça N igual a 100 ou se for menor que hum faça N igual a 1 , e use esse valor em for que começa em zero e vai até N e dentro do for pegue os números em uma variável e compare se é par ou ímpar usando o comando mod e se for par coloque no vetor_par senão coloque no vetor_impar e para imprimir use um for com o valor de N e imprima o valor que está no vetor , poste seu código que você já tenha feito para podermos ajudar .
-
O post de devair1010 em Cadastro de alunos em linguagem c foi marcado como solução
@João Luiz Mainardi para ele imprimir o que foi salvo no arquivo precisa pegar esses dados lá no arquivo antes de imprimir , e se você usar arquivo binário fica mais fácil , mas pode fazer com arquivo txt também , então seu código pode ser assim :
#include <stdio.h> #include <stdlib.h> #include <string.h> #define TAM 1000 typedef struct { char matricula[10]; char nome[50]; char curso[25]; } Aluno; void inicializaLista(Aluno *lista, int n) { int i; for (i = 0; i < n; i++) { strcpy(lista[i].matricula,""); strcpy(lista[i].nome,""); strcpy(lista[i].curso,""); } } void copiaAlunosLista2Arquivo(Aluno *lista, int n, char *nomeArquivo) { FILE *procurador = fopen(nomeArquivo,"a"); //foi aberto para escrita int i; //fprintf(procurador, "ALUNOS MATRICULADOS\n\n"); for (i = 0; i < n; i++) { if (strcmp(lista[i].matricula,"") == 0) { break; } fprintf(procurador, "%s ", lista[i].matricula); fprintf(procurador, "%s ", lista[i].nome); fprintf(procurador, "%s\n", lista[i].curso); fflush(procurador); } fclose(procurador); } void insereAluno(Aluno *lista, int n) { int i; FILE *procurador = fopen("salvaAlunos.txt","a"); char matricula[10]; printf("Matricula : "); scanf("%s", matricula); fflush(stdin); for (i = 0; i < n; i++) { if (strcmp(lista[i].matricula, matricula) == 0) { printf("Matricula já cadastrada. Voltando para menu\n"); break; } if (strcmp(lista[i].matricula,"") == 0) { printf("Aluno sera inserido na posicao %d.\n", i); strcpy(lista[i].matricula, matricula); fflush(stdin ); printf("Nome: " ); scanf("%s",lista[i].nome ); fflush(stdin ); printf("Sigla curso: " ); scanf("%s", lista[i].curso); fprintf(procurador, "%s " , lista[i].matricula); fprintf(procurador, "%s " , lista[i].nome ); fprintf(procurador, "%s\n", lista[i].curso ); break; } } fclose(procurador); if (i == n) printf("Lista cheia!\n"); } int pega_do_arquivoTXT(Aluno *lista, int n){ FILE *fp = fopen("salvaAlunos.txt","r"); if(fp == NULL)return 0; int i=0; while(fscanf(fp,"%s",&lista[i].matricula)!= EOF && fscanf(fp,"%s",&lista[i].nome )!= EOF && fscanf(fp,"%s",&lista[i].curso )!= EOF ){ i++; } return 1; } void exibeAlunos(Aluno *lista, int n) { int i; for (i = 0; i < n; i++) { if (strcmp(lista[i].matricula,"") == 0) { break; } printf("Matricula -: %s\n", lista[i].matricula); printf("Nome ------: %s\n", lista[i].nome ); printf("Curso -----: %s\n", lista[i].curso ); printf("-----------------------------------\n"); } } int main() { Aluno lista[TAM]; int opcao,r; inicializaLista(lista, TAM); r = pega_do_arquivoTXT(lista,TAM);/* pega os dados que foram gravados anteriormente no arquivo txt*/ do { printf("1 - Insere aluno\n"); printf("2 - Lista alunos\n"); printf("3 - Remove aluno\n"); printf("4 - Sair\n"); printf("Opcao: "); scanf("%d", &opcao); switch (opcao) { case 1 : printf("INSERCAO DE ALUNO !\n\n"); insereAluno(lista,TAM); r=1; break; case 2 : printf("\nEXIBICAO DE ALUNOS !\n\n"); if( r )exibeAlunos(lista, TAM); else printf("Primeiro Insira Os Dados !"); printf("\n\n"); break; case 3 : break; case 4 : break; default : printf("Opcao invalida ! !\n"); } } while (opcao != 4); //copiaAlunosLista2Arquivo(lista, TAM, "salvaAlunos.txt"); return 1; }
-
O post de devair1010 em Como acessar o conteúdo de um ponteiro? foi marcado como solução
T@BlackM00n_ você precisa criar os dois ponteiro colocando asterisco antes das duas variáveis , depois inicializar os dois ponteiros e em seguida faça ponteiro2 igual ponteiro1. poste seu código para vermos como está .
-
O post de devair1010 em como faz para mostrar qm tem mais tempo de servico??? foi marcado como solução
@l8i9l0o5 para isso você precisa amarrar uma coisa à outra , primeiro você precisa verificar qual é o maior tempo de serviço e encontrando atribua a uma variável auxiliar para guardar o nome de quem teve o maior tempo de serviço , então seu código poderia ser assim :
Program Pzim ; var soma,somam,somaf,anos,anos1 : integer; anos2,anos3,f,m,cont,idade,s : integer; anosmaior,sexo,nome,aux : string ; anos_trabalhados : integer; Begin for cont:=1 to 2 do begin writeln('nome'); readln(nome); writeln('idade'); readln(idade); writeln('anos trabalhando'); readln(s); writeln('sexo'); readln(sexo); if s > anos_trabalhados then begin anos_trabalhados := s; aux := nome; end; if sexo='f' then f := f+1; if sexo='m' then m := m+1; if (s>0) and (sexo='m') then anos := anos +1; if (s=0) and (sexo='m') then anos1 := anos1+1; if (s>0) and (sexo='f') then anos2 := anos2+1; if (s=0) and (sexo='f') then anos3 := anos3+1; if sexo='f' then somaf := somaf + idade; if sexo='m' then somam := somam + idade; soma := soma+idade; end; writeln('1-' ,f ); writeln('2-' ,m ); writeln('3-' ,anos ); writeln('4-' ,anos1 ); writeln('5-' ,anos2 ); writeln('6-' ,anos3 ); writeln('7-' ,anosmaior ); writeln('8-' ,soma ); writeln('9-' ,soma /2 :0:0); writeln('10-',somaf/2 :0:0); writeln('11-',somam/2 :0:0); write ('O Funcionário '); textcolor(lightred); textbackground(white); write(' ',aux,' '); textcolor(green); textbackground(black); write(' Tem O Maior Tempo De Serviço Com '); textcolor(lightred); textbackground(white); write(' ',anos_trabalhados,' '); textcolor(green); textbackground(black); write(' Anos Trabalhados'); textcolor(yellow); writeln(' tecle'); readkey; End.
-
O post de devair1010 em Fazer um algoritmo em c foi marcado como solução
@Felipe Eduardo R. Mesquita 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 você postou no tópico de c++ mas seu código que você postou é em c , pois os comandos do c++ são outros , apesar de que esses aí funcionam em c++ também , mas os comandos do c++ não funcionam no c , mas tudo bem , nesse caso funcionará bem , então seu código poderia ser assim :
#include <string.h> #include <conio.h> #include <math.h> #include <stdlib.h> #include <iostream> int main(){ int i,j,c,vetor[10]; for(i=0; i<10; i++){ printf("Digite O Valor Da Posicao %2d : ",i+1); scanf("%d",&vetor[i]); } for(i=0; i<9; i++){ c=0; for(j=i+1; j<10; j++){ if(vetor[i] == vetor[j] && vetor[i]!=0){ vetor[j]=0; c++; } } if(c > 0){ printf("O Numero %d Saiu %d Vezes\n",vetor[i],c+1); vetor[i]=0; } } for(i=0;i<9;i++) /* essa parte aqui não foi pedida no enunciado */ for(j=i+1;j<10;j++){ /* mas ela serve para colocar os números em ordem Crescente */ if(vetor[i]>vetor[j]){ c=vetor[i]; vetor[i]=vetor[j]; vetor[j]=c; } } printf("Os Numeros Sem Repeticao Sao : "); for(j=0;j<10;j++) if(vetor[j] != 0) printf("%d ",vetor[j]); getch(); return 0; }
-
O post de devair1010 em problema com posicionamento de sprite sfml foi marcado como solução
@João Augusto Gomes Ribeiro não uso essa biblioteca pois ainda não consegui instalar ela , já tentei várias vezes e nada , mas no seu código me parece que está precisando você usar uma bandeira para indicar que chegou do lado direito da tela e é hora de voltar para o lado esquerdo da tela , então essa parte do seu código poderia ser assim :
int flag=0; if(ini2[0][8].getPosition().x + ini2[0][8].getLocalBounds().width >= window.getSize().x){ flag=1; /* indicando que chegou do lado direito da tela */ } if(ini2[0][8].getPosition().x + ini2[0][8].getLocalBounds().width <= window.getSize().x){ flag=0; /* indica que chegou do lado esquerdo da tela */ } if(flag==1){ for (int p = 0; p < 9; p++){ X1[p] -= 0.3; /* volta para o lado esquerdo */ } } else{ for (int p = 0; p < 9; p++) { X1[p] += 0.3; /* vai para o lado direito */ } } for(int i = 0; i < 2; i++){ /* são duas linhas de alliens */ for(int p = 0; p < 9; p++){ /* são nove alliens em cada linha */ ini2[i][p].setPosition(X1[p], Y1[i]); } }
-
O post de devair1010 em Soma de vetores em Lua foi marcado como solução
@ffeliperobot seu código está bom , só precisa organizar melhor , e para preencher o vetor você usa o valor da variável de controle do loop , então seu código pode ser assim :
vetor = {} total = 0 for x = 0, 99, 1 do vetor[x]=x total = total + vetor[x] end io.write("Resultado Da Soma => ",total ,"\n\n")
-
O post de devair1010 em Comparação de strings em Java foi marcado como solução
@Joanderson Pereira melhor usar uma função do java para comparar string , e pode ser essa variavel_string . equalsIgnoreCase("outra_string") , então seu código pode ser assim :
package quest2; import java.util.Scanner; public class Quest2 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); Scanner scanner2 = new Scanner(System.in); Scanner scanner3 = new Scanner (System.in); //Entrada System.out.println("Seja Bem vindo ao Java Calculator"); System.out.println("Digite um número"); double n1 = scanner.nextDouble(); System.out.println("Digite outro número"); double n2 = scanner2.nextDouble(); //Processamento double r1 = n1 + n2; double r2 = n1 - n2; double r3 = n1 * n2; double r4 = n1 / n2; System.out.println("Agora digite um operador correspondente a operação desejada: " + "Adição +, Subtração -, Multiplicação *, Divisão /"); String op1 = scanner3.nextLine(); //System.out.println("valor de op1= "+op1); //Saída //if( op1.charAt(0) == '+') este aqui também funciona desse jeito if(op1.equalsIgnoreCase("+")) System.out.println("A soma deles é :" + r1 ); else if (op1.equalsIgnoreCase("/")) System.out.println("O quociente deles é :" + r4 ); else if (op1.equalsIgnoreCase("*")) System.out.println("O produto deles é :" + r3 ); else if (op1.equalsIgnoreCase("-")) System.out.println("A subtração deles é :" + r2 ); else { System.out.println("Digite um operador válido!"); } } }
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