Ir ao conteúdo
  • Cadastre-se

devair1010

Membro Pleno
  • Posts

    6.249
  • Cadastrado em

  • Última visita

Tudo que devair1010 postou

  1. @Isabella Borges da Silva o número primo só tem 2 divisores exatos , o número 1 e o próprio número mesmo , assim você pode extrair o módulo "mod" do número para saber se a divisão é exata ou não , e depois que você fizer um código sobre esse exercício , poste aqui e ajudaremos se precisar ,
  2. @João Parolini em C uma string é um char que tenha uma dimensão com mais de um espaço , e um vetor de string é um char com duas dimensões sendo que a segunda precisa ter mais de uma espaço , e uma Matriz de string tem três dimensões e a terceira dimensão com mais de um espaço , como postei no seu outro post https://www.clubedohardware.com.br/forums/topic/1625820-exercício-em-c-usando-matriz/ no tópico #9 char Matriz [30][4][10] = {0}; /// [30] esse primeiro par de colchetes são a qtd de Linhas /// [ 4] esse segundoo par de colchetes são a qtd de Colunas /// [10] esse Terceiro par de colchetes são a qtd de Caracteres das Strng's e para pegar um nome qualquer , que vai ter os sobrenomes também , é melhor usar a Função fgets , que lê todos os caracteres que for digitados ,
  3. @filipefreitas11 na sua função de carregar_dados , ela não lê nada no arquivo , pois a função fscanf , não funciona assim , /// caract juntos aos especificadores . ERRO fscanf(arqPrestador,"CPF/CNPJ: %d Idade: %d Placa: %d CNH: %d Telefone: %d Porte: %s Pets: %s Nome %s\n", &prest.cpfcnpj, &prest.idade, &prest.cnh, &prest.telefone, prest.porte, prest.pets, prest.nome ); que pode ser assim : fscanf ( arqPrestador , "%d%d%d%d%d%s%s%s", & prest.cpfcnpj , & prest.idade , & prest.cnh , & prest.telefone , & prest.placa , prest.porte , prest.pets , prest.nome ); e esses dados podem ser do tipo string , pois você não vai fazer nenhum cálculo usando eles , e também o cpf ou cnpj , vai dar erro , pois serão 11 dígitos , e o valor máximo de um int é 2.147.483.647 , https://qastack.com.br/programming/94591/what-is-the-maximum-value-for-an-int32 melhor seria usar string's: typedef struct /// dadosPrestador { char idade [ 5]; char placa [10]; char cpfcnpj [20]; char cnh [20]; char telefone[15]; char porte [10]; char pets [10]; char nome [30]; } prestador ; /// [30];
  4. @rafa amateur essa flg serve para pegar o primeiro valor inserido e armazenar nas variáveis "maior" e "menor" pois a variável menor foi criada e preenchida com valor zero lá antes do início e então para que ela modificasse esse valor só poderia ser um número negativo , e alí ao guardar o primeiro valor nessas variáveis , a flg é modificada e assim não permite pegar outro valor , e assim essa parte do programa não interfere nas comparações seguintes .
  5. @rafa amateur a condução de saída do programa é quando digitar zero , e você colocou 5 para terminar , e creio que só precisa mesmo é de três variáveis , e mais uma para controlar a inicialização no início , e usando o Botão code "<>" , seu código ficou assim : Algoritmo "maior e menor_211" Var num , maior, menor : inteiro comp1 , comp2 , flg : inteiro Inicio repita escreval ("digite o numero: ") leia (num) se flg = 0 então // não pode ter til maior := num menor := num flg := 1 fimse se num <> 0 então // o corretor ortografico do forum se(num > maior) então // inseriu errado maior := num senao se menor > num então menor := num fimse fimse senao escreval( "Maior -> ", maior) escreval( "Menor -> ", menor) fimse ate num = 0 fimalgoritmo
  6. @junglerfullclear creio que o primeiro esteja melhor , pois funcionou bem , e no entanto o segundo nem compilou , apresentando esse erro desconhecido , terminate called after throwing an instance of 'std::logic_error' what(): basic_string::_M_construct null not valid
  7. @João Parolini essa matriz foi criada com 3 elementos , mas você está colocando 4 coisas na hora de preencher , e como ela é de string , então precisa de mais uma dimensão , senão ela só poderia receber um caractere em cada coluna , e como são string's não precisa informar o endereço dessa variável , pois de algum modo bem desconhecido , o compilador já sabe o endereço "&" dela , e usando fgets evita de que o usuário digite algum dado inválido ,por exemplo era para digitar número e digitou letra , e travar o programa todo , e uma função que mostra o que foi cadastrado . #define WIN32_WINNT 0x600 #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string.h> #include <windows.h> #define _h GetStdHandle(STD_OUTPUT_HANDLE) /* Faça um programa que lê um número n e em seguida lê dados de n exames: A1;A2; : : : ;An. Cada exame Ai tem o nome do paciente, Nomei; uma taxa de xolesterol Xi (número entre 0 e 100); uma taxa de broteinas e Bi (número entre -10 e 10) e uma taxa de toroteinas Ti (um valor entre 5000 e 10000). Todos os valores numéricos são reais. Pessoas normais tem valores de Xi 2 [30; 50], Bi 2 [􀀀3; 7], Ti 2 [6500; 8000]. Os pacientes que tem taxa de xolesterol abaixo (acima) do normal, têm hipoxolesterol (hiperxolesterol). Os que tem taxa de broteinas abaixo (acima) do normal, têm hipobroteina (hiperbroteina). As que tem taxa de toroteinas abaixo (acima) do normal, têm hipotoroteinas (hipertoroteinas). Seu programa deve imprimir todos os pacientes que apresentam alguma doença. Para cada uma, deve se: (a) imprimir qual o tipo de doença que ela apresenta. (b) se ela apresentar duas doenças, deve se escrever que o estado do paciente é grave. (c) se ela apresentar três doenças, deve se escrever que o estado do paciente é muito grave. */ char Listar( char ex[30][4][10] , int ); int main() { char a[10]; char exames[30][4][10] = {0}; int i = 0 ; int j = 0 ; int n = 0 ; char aux[] = { "32768" }; L1: /// Label p onde o goto voltar printf("A Quantidade de ExaMes "); fgets( aux, sizeof( aux ), stdin ); /// isso evita q seja inserdo dados inválidos n = atoi( aux ); /// pois string aceita qq caract if( ! n ) /// se n For igual a zero goto L1; /// volta a pedir p informar o nUmero printf( "\n" ); for( int i=0; i<n; i++ ) /// alguns compiladores aceitam { /// criar a variAvel dentro do Loop printf(" Nome do paciente ---: "); scanf ("%s", & exames[i][0] ); /// só precisa de um loop , pois as Quatro colunas printf(" Taxa de Xolesterol -: "); /// de cada Linha da Matriz serAo preenchidas a cada scanf ("%s", exames[i][1] ); /// passada do Loop printf(" Taxa de Broteinas --: "); scanf ("%s", exames[i][2] ); printf(" Taxa de Toroteinas -: "); /// para string não precisa desse sImbolo "&" scanf ("%s", exames[i][3] ); /// pois jA tem o endereCo da variAvel printf( "\n" ); for( int j=0; j<4; j++ ) { /// aqui só para ver se digitou e estA funcionando bem printf( "Exames[%d][%d] -> %s\n" ,i,j, exames[i][j] ); } printf( "\n" ); } Listar( exames, n ); /*strcpy( a , Listar( exames, n ) ); printf( "Retornou -> %8s\n\n\n",a);*/ return 0; } char Listar( char exames[][4][10], int n ) { printf( "\nListando Todos Os %d PaciEntes:\n\n",n ); for( int i=0; i<n; i++ ) { printf(" Nome do paciente ---: %s\n" " Taxa de Xolesterol -: %s\n" " Taxa de Broteinas --: %s\n" " Taxa de Toroteinas -: %s\n", exames[i][0], exames[i][1], exames[i][2], exames[i][3] ); printf( " ----\n" ); } return "a"; }
  8. @Tati Schein . Testei seu código no pycharm , e não compilou , apresentando erro de sintaxe , pois não pode misturar float com list , então creio mesmo que seria melhor usar um laço de repetição , para fazer esse cálculo .
  9. @Robs156 você colocou para escrever o valor de i , mas melhor seria escrever o valor de n , e acrescentando depois o incremento em n , descartando assim essa variável o i .
  10. @Sathosi @Sathosi o enunciado não diz , mas creio que seria para criar um programa que calcula a raiz Quadrada , e não usar uma função , "sqrt()" , já pronta da linguagem C , e também não precisa pegar o número pois será usado aqueles do exemplo , que tem Raiz exata , e para extrair a raiz Quadrada você pode usar a multiplicação , #define WIN32_WINNT 0x600 #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string.h> #include <windows.h> #define _h GetStdHandle(STD_OUTPUT_HANDLE) /// Faça um programa que calcula a raiz quadrada de um número /// Assuma que apenas números que possuem raiz quadrada inteira /// serão passados para o programa (e.g. 4, 9, 16, etc) /// Você não precisa implementar o algoritmo para números que /// não possuem raiz quadrada inteira, e.g. 3, 5, 11, etc int raizQuadrada( int ); int main() { int numero = 81; int raiz = 0; printf( "Digite um Numero -: "); /// scanf ( "%d" , & numero ); raiz = raizQuadrada( numero );/// sqrt(numero); printf("Raiz = %d \n",raiz); return 0; } int raizQuadrada( int x ) { int y = 1; /// combinado no enunciado que while( y * y != x ) /// só vai receber num inteiro e posit { /// e com raiz exata if( y * y != x ) { y++; } } if( y<=x )return y; return 0; } e é claro que a multiplicação também é outra função que pode ser simplificada usando somas sucessivas , e em C não tem necessidade , mas no neanderWin , sim , pois esse compilador do hipotético processador "neander" tem apenas comando básicos elementares , de armazenamento , soma , subtração e comparações , assim uma simples multiplicação da linguagem C se torna bem trabalhosa sesse compilador neaderWin , que você pode baixar nesse site https://sourceforge.net/projects/neander-x/ baixe o neander X , que é o mesmo neanderwin ;-------------------------------- ; Programa -: Multiplic ; Autor ----: Devair ; Data -----: 11/12/2022 ;-------------------------------- org 0 ldi 0 ; carrega A com val 0 sta 128 ; valor iniciaL ldi 1 ; increment do loop sta 129 ; guard em end 129 ldi 7 ; num p multipl sta 130 ; Multiplicando L1: ; inicio do loop sta 131 ; Multiplicad qtd vezes jz fim ; se for zero pula p fim lda 128 ; carrega acumulador A add 130 ; soma com conteu end sta 128 ; armaz nesse ender lda 131 ; carreg acumul A sub 129 ; subtrai 1 jmp L1 ; jump incond p L1 fim: ; label lda 128 ; carrega o valor calc out 0 ; mostra result hlt ; termino do prg e a raiz Quadrada também pode ser calculada com esse programa , fazendo nele alguma adaptações .
  11. @Lucas Chevette você já sabe alguma coisa sobre programação ?
  12. @ningumx e mesmo colocando a quantidade de alunos em 24 não funcionou , e deletando aquele loop for , e escrevi ele novamente , aí funcionou , #define WIN32_WINNT 0x600 #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string.h> #include <windows.h> #define _h GetStdHandle(STD_OUTPUT_HANDLE) #include <locale.h> #include <time.h> typedef struct { int id_aluno ; char nm_aluno[50]; } arq_aluno ; void consulta( arq_aluno Alunos[] , int quant_alunos ) { FILE *entrada = fopen("alunos.txt", "r"); int id; if( entrada == NULL ) { printf( "Erro na leitura do arquivo ,. . . !\n"); return; } printf("\n------BUSCA DE ALUNOS------\n"); printf("Digite o id do aluno: "); scanf("%i", &id); getchar(); for (int i = 1; i <= quant_alunos; i++) { if (id == Alunos[i].id_aluno) { printf("Aluno: %s\n", Alunos[i].nm_aluno); } else if (id != Alunos[i].id_aluno) printf("Aluno não existe na base!\n"); } printf("---------------------------\n"); fclose(entrada); } void relatorio( arq_aluno Alunos[] , int quant_alunos ) { FILE* entrada = fopen("alunos.txt", "r"); if( entrada == NULL ) { printf( "Erro na leitura do arquivo ,. . . !\n"); return; } int i; printf("_____________________________\n\n" " ----RELATÓRIO DE ALUNOS---- \n" "___________________________ \n" "--------------------------- \n" "| ID | NOME | \n"); SetConsoleTextAttribute( _h , 11 + ( 0 << 4 ) ); for ( int i=0; i<24; i++ ) { fscanf(entrada, "%d", &Alunos[i].id_aluno ); fscanf(entrada, "%s", &Alunos[i].nm_aluno ); printf(" %3d | %s\n", Alunos[i].id_aluno, Alunos[i].nm_aluno); } struct tm *data_hora_atual; time_t segundos; time(&segundos); data_hora_atual = localtime(&segundos); printf("-----------------------------\n\n"); printf ( "_______________________________\n\n" " Gerado em %d/%d/%d %i:%i:%i" , data_hora_atual->tm_mday , data_hora_atual->tm_mon + 1 , data_hora_atual->tm_year + 1900 , data_hora_atual->tm_hour , data_hora_atual->tm_min , data_hora_atual->tm_sec ); fclose(entrada); } int main() { FILE* arq; int quant_alunos = 24 ; arq_aluno Alunos [24]; int cor_letra, cor_fundo; CONSOLE_SCREEN_BUFFER_INFO c; if( GetConsoleScreenBufferInfo( _h, & c ) ) { cor_letra = ( c.wAttributes & 0xFF ) & 0x0F; cor_fundo = ( (c.wAttributes & 0xFF ) >> 4 ) & 0x0F; } int escolha; arq = fopen("alunos.txt","a"); /// abre para ler ou gravar a partir o final do arquivo fprintf(arq,"%s","5 kiko\n"); /// id antes e nome depois fclose( arq ); do { setlocale(LC_ALL, ""); struct tm *data_hora_atual; time_t segundos; time(&segundos); data_hora_atual = localtime(&segundos); printf("\nAcesso em %d/%d/%d %i:%i:%i\n\n", data_hora_atual->tm_mday, printf ( "\nAcesso em %d/%d/%d %i:%i:%i\n\n", data_hora_atual->tm_mday , data_hora_atual->tm_mon + 1 , data_hora_atual->tm_year + 1900 , data_hora_atual->tm_hour , data_hora_atual->tm_min , data_hora_atual->tm_sec ); SetConsoleTextAttribute( _h , 14 + ( 0 << 4 ) ); printf(" --MENU PRINCIPAL--\n"); printf("|------------------------|\n"); printf("| [1] - Consultar por id |\n" "| [2] - Relatório |\n" "| [3] - Sair |\n" "-------------------------|\n" " Opção: " ); scanf("%d", &escolha); switch (escolha) { case 1: consulta( Alunos , quant_alunos ); break; case 2: relatorio( Alunos , quant_alunos ); break; case 3: SetConsoleTextAttribute( _h , 12 + ( 15 << 4 ) ); printf(" Saindo do Programa . . . !\n\n\n"); SetConsoleTextAttribute( _h , cor_letra + ( cor_fundo << 4 ) ); } } while ( escolha != 3 ); return 0; }
  13. @ningumx a quantidade de alunos está em zero typedef struct aluno { int id_aluno ; char nm_aluno[50]; } arq_aluno ; // VARIÁVEIS GLOBAIS int quant_alunos = 24 ; /// estava em zero arq_aluno arq_alunos[24];
  14. @ningumx nessa linha aqui você colocou a posição 50 da string for (int i = 1; i <= 24; i++) { fscanf(entrada, "%d", &arq_alunos[i].id_aluno); fscanf(entrada, "%s", &arq_alunos[i].nm_aluno[50]); /// não precisa informar a posiCAo } e o vetor começa em zero e vai ate 23 , assim não precisa colocar o sinal de igual for ( int i=0; i<24; i++ ) você já inseriu alguma coisa nesse arquivo ?
  15. @alan.modesto em cada posição da memória do pc sempre tem alguma coisa guardada nela , então não se pode excluir nada , apenas substituir por outro valor qualquer , e quando se cria um vetor , o compilador reserva um espaço na memória para armazenar a quantidade de valores especificada , e não modifica nada que já esteja armazenado nessas posições , assim pode haver qualquer valor , e se você quer que tenha um valor considerado nulo , como o zero , por exemplo , então ao criar o vetor já preencha ele tendo todas as posições com esse valor "zero " , também conhecido como inicialização de variáveis , , .., , ... ,: int v3[QUANT] = { 0 } ; que mostra
  16. @alicesky12 para que pegar o resto da divisão , só precisa saber se a divisão é exata , e creio que pode ser assim : #define WIN32_WINNT 0x600 #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string.h> #include <windows.h> #define _h GetStdHandle(STD_OUTPUT_HANDLE) /// Faça um módulo que receba o dividendo e o divisor /// de uma fração e substitua seus /// valores pelos equivalentes valores simplificados. void simplif( int* num , int* den ) { int ax = *num; int aux = 0; if( *num > *den )ax = *den; for(int i=2; i<ax; i++) { if( *num % i == 0 && *den % i == 0 ) { aux = i; } } if( aux ) { *num /= aux; *den /= aux; } } int main() { int* n = 0; int* m = 0; int cor_letra, cor_fundo; CONSOLE_SCREEN_BUFFER_INFO c; if( GetConsoleScreenBufferInfo( _h, & c ) ) { cor_letra = ( c.wAttributes & 0xFF ) & 0x0F; cor_fundo = ((c.wAttributes & 0xFF ) >> 4 ) & 0x0F; } SetConsoleTextAttribute( _h , 11 + ( 0 << 4 ) ); printf("escreva o primeiro numero -: "); scanf("%d", & n ); printf("escreva o segundo numero --: "); scanf("%d", & m ); simplif( & n , & m ); SetConsoleTextAttribute( _h , 10 + ( 12 << 4 ) ); printf("\n\n SimpliFicado "); SetConsoleTextAttribute( _h , 12 + ( 15 << 4 ) ); printf("\b\b\b\b\b\b\b\b\b %d/%d ", n , m ); SetConsoleTextAttribute( _h , cor_letra + ( cor_fundo << 4 ) ); printf("\n\n\n"); return 0; }
  17. @Sahel_Sancho mantendo o código igual você postou , na opção 2 a função "adicionaNotas" não retornou o que cadastrou , e nem pegou o retorno da função , e acertando ficaria assim : #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <windows.h> #define _h GetStdHandle(STD_OUTPUT_HANDLE) #include <string.h> #define MAX 5 /// aqui estabelece a qtd de cadastros typedef struct Aluno { char nome[100]; int matricula; float nota [2]; } Aluno; Aluno cadastrarAluno() { Aluno aluno; SetConsoleTextAttribute( _h, 14 + ( 0 << 4) ); printf( "\nInsira o nome do aluno -------: "); scanf ( "%s", & aluno.nome ); printf( "Insira o numero de matricula -: " ); scanf ( "%i", & aluno.matricula ); return aluno; } Aluno adicionaNotas(Aluno aluno) { printf("\n"); SetConsoleTextAttribute( _h, 15 + ( 12 << 4 ) ); printf( "Insira a primeira nota de %s: \b\b", aluno.nome ); scanf ( "%f", & aluno.nota[0] ); printf( "Insira a segunda nota de %s: \b\b", aluno.nome ); scanf ( "%f", & aluno.nota[1] ); return aluno ; } void mostraResultados(Aluno aluno) { SetConsoleTextAttribute( _h, 12 + ( 15 << 4) ); float media = ( aluno.nota[0] + aluno.nota[1] ) / 2; /// MAX eh a qtd de cadastros printf("\n Aluno ------: %s \n" " Matricula --: %i \n" " Media ------: %5.2f \n", aluno.nome, aluno.matricula, media); if( media >= 7 ) { printf( " Aprovado . . . ! \n" ); } else { printf( " Reprovado . . . ! \n" ); } } int main() { Aluno aluno[5]; /// melhor colocar esse comando antes do while int cor_letra, cor_fundo; CONSOLE_SCREEN_BUFFER_INFO c; if( GetConsoleScreenBufferInfo( _h , & c ) ) { cor_letra = ( c.wAttributes & 0xFF ) & 0x0F; cor_fundo = ( ( c.wAttributes & 0xFF ) >> 4 ) & 0x0F; } while( 1 ) { int escolha; SetConsoleTextAttribute( _h, 11 + ( 0 << 4) ); /// cor anil em fundo preto printf("\n" " [1] Cadastrar \n" " [2] Lancar Notas \n" " [3] Listar Resultados\n" " [4] Sair \n" " Digite o numero da opcao desejada: "); scanf("%i", &escolha); if(escolha == 1) { int i; for( i = 0; i < MAX; i++ ) /// alguns compiladores aceita criar a variAvel dentro do loop { aluno[i] = cadastrarAluno(); } } if( escolha == 2 ) { int i; for(i = 0; i < MAX; i++) /// alguns compiladores aceita criar a variAvel dentro do loop { aluno[i] = adicionaNotas(aluno[i]); } } if( escolha == 3 ) { int i; printf("\n FunCAo MostrarResultado \n"); for(i = 0; i < MAX; i++) /// alguns compiladores aceita criar a variAvel dentro do loop { mostraResultados(aluno[i]); } } if(escolha == 4) { SetConsoleTextAttribute( _h, 10 + ( 12 << 4 ) ); printf("\n\n\t\t\tFim do programa . . . ! \n\n\n"); SetConsoleTextAttribute( _h, cor_letra + ( cor_fundo << 4 ) ); return 0; } } }
  18. @Sahel_Sancho @Sahel_Sancho aquele aluno que está lá na função adicionaNotas não é o mesmo que está na mostrarResultado não , void adicionaNotas(Aluno aluno) { printf("\nInsira a primeira nota de %s: ", aluno.nome); scanf("%f", &aluno.nota[0]); printf("\nInsira a segunda nota de %s: ", aluno.nome); scanf("%f", &aluno.nota[1]); } que modificada seria assim Aluno adicionaNotas(Aluno aluno) { printf("\nentrada da Funcao\n" "nome -------= %s \n" "matricula --= %3d \n" "nota -------= %5.2f\n", aluno.nome, aluno.matricula, aluno.nota[0] ); printf( "Insira a primeira nota de %s: ", aluno.nome); scanf ( "%f" , & aluno.nota[0] ); printf( "Insira a segunda nota de %s: ", aluno.nome); scanf ( "%f" , & aluno.nota[1] ); printf("\n saida da Funcao\n" "nome ------= %s \n" "matricula -= %3d \n" "nota ------= %5.2f\n", aluno.nome, aluno.matricula, aluno.nota[0] ); return aluno; } e seu código ficou assim : #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <windows.h> #define _h GetStdHandle(STD_OUTPUT_HANDLE) #include <string.h> #define MAX 1 typedef struct Aluno { char nome[100]; int matricula; float nota[2]; } Aluno; Aluno cadastrarAluno() { Aluno aluno; printf( "\nInsira o nome do aluno -----: "); scanf ( "%s" , & aluno.nome ); printf( "Insira o numero de matricula -: "); scanf ( "%i" , & aluno.matricula ); return aluno; } Aluno adicionaNotas(Aluno aluno) { printf("\nentrada da Funcao\n" "nome -------= %s \n" "matricula --= %3d \n" "nota -------= %5.2f\n", aluno.nome, aluno.matricula, aluno.nota[0] ); printf( "Insira a primeira nota de %s: ", aluno.nome); scanf ( "%f" , & aluno.nota[0] ); printf( "Insira a segunda nota de %s: ", aluno.nome); scanf ( "%f" , & aluno.nota[1] ); printf("\n saida da Funcao\n" "nome ------= %s \n" "matricula -= %3d \n" "nota ------= %5.2f\n", aluno.nome, aluno.matricula, aluno.nota[0] ); return aluno; } void mostraResultados(Aluno aluno) { printf("\nFunCAo MostrarResultado\n" "nome -------= %s \n" "Matricula --= %3d \n" "nota -------= %5.2f \n", aluno.nome , aluno.matricula , aluno.nota[0] ); float media = aluno.nota[0] + aluno.nota[1] / MAX; printf("\nAluno ----: %s \n" "Matricula --: %i \n" "Media ------: %5.2f\n", aluno.nome, aluno.matricula, media); if( media >= 7 ) { printf( "Aprovado\n" ); } else { printf( "Reprovado\n" ); } } int main() { Aluno aluno[5]; while( 1 ) { int escolha; printf("\n" " [1] Cadastrar \n" " [2] Lancar Notas \n" " [3] Listar Resultados\n" " [4] Sair \n" " Digite o numero da opcao desejada: "); scanf("%i", &escolha); if(escolha == 1) { int i; for( int i = 0; i < MAX; i++ ) /// alguns compiladores aceita criar a variAvel dentro do loop { aluno[i] = cadastrarAluno(); printf("\nretorno do Cadastro\n" "nome -------= %s \n" "Matricula --= %3d \n" "nota -------= %5.2f \n", aluno[i].nome , aluno[i].matricula , aluno[i].nota[0] ); /// faltou oS colchets e enviar para o sof } } if( escolha == 2 ) { int i; for(i = 0; i < MAX; i++) /// alguns compiladores aceita criar a variAvel dentro do loop { aluno[i] = adicionaNotas(aluno[i]); printf( "\nretorno de adicionarNotas\n" "nome -------= %3s \n" "Matricula --= %3d \n" "nota -------= %5.2f \n", aluno[i].nome , aluno[i].matricula , aluno[i].nota[0] );/// esse aqui estava faltando os colchetes /// colocar cor também e gotoxy /// cria uma moldura para a teLa } } if( escolha == 3 ) { int i; for(i = 0; i < 1; i++) /// alguns compiladores aceita criar a variAvel dentro do loop { mostraResultados(aluno[i]); } } if(escolha == 4) { printf("\nFim do programa"); return 0; } } }
  19. @Joao Huertas no visualG 3.0 você pega os dados do teclado usando o comando leia( variavel ) , e para comparar use o comando se ... então // sem Til fimse e depois que você fizer um código sobre esse exercício , poste aqui e ajudaremos .
  20. @Igor Rossoni creio que possa ser por que você não inicializou os dados do vetor antes de usa lo , pois o Compilador criou o vetor totalLPI reservando um espaço na memória , e nesse espaço com certeza há algum valor já armazenado nele , e você não sabe que valor seja esse , e ao somar o valor dessa posição do vetor com a nota do Aluno , conterá um valor desconhecido e pouco provável de estar certo . float totalLPI [5] = {0}; float mediaLPI [5] = {0}; float totalAlg [5] = {0}; float mediaAlg [5] = {0}; float totalDisc [5] = {0}; float mediaDisc [5] = {0}; float totalGeralAlg = 0 ; float mediaGeralAlg = 0 ; float maiorAlg = 0 ; float maiorDisc = 0 ; float maiorLPI = 0 ; e soma com o valor pego no scanf for( int k=0; k<3; k++ ) /// alguns compiladores aceitam cria a varAvel dento do Loop { l=0; printf("NOTA %d: ", k+1); scanf("%d", &nLPI[l][k]); printf("valor lpi[ %d ]= %5.2f\n" , i , totalLPI[ 0 ] ); system("pause"); totalLPI[i] += nLPI[l][k]; l++; }
  21. @jelmig você pode usar o método upper() , que converte todos os caracteres da string para maiúsculas , depois na procurar na string , as palavras com mais de dois caracteres . e se você fizesse um código sobre esse exercício , post ele aqui e ajudaremos se precisar . .
  22. @Dev0011 e você quer transmitir esses dados para uma única tv philco ? , ou muitas outras ? se for apenas em uma , você pode conectar pela outra saída de vídeo do seu pc , ou a VGA ou a HDMI ou dvi .
  23. @rickinhoohh muito boa essa configuração , e esses componentes e mais esse monitor https://www.pichau.com.br/monitor-gamer-pichau-24-full-HD-curvo-athen-c24m-1ms-144hz-HDMI-dp-pgm-ac24m vai ficar em 8k . . . !
  24. @Leticia da Silva existe vários métodos de ordenação de vetores , e os mais conhecidos pode ser o bubbleSort , selectionSort , e outros . . . ! , mas esses tem um conceito mais apurado e mais difícil de fazer e entender e demora mais tempo para fazer a organização , e tem esse , ancoraSort , que considero bem simples e fácil e rápido , pois na primeira passada ele já decide o menor ou o maior número que existe no vetor , dependendo da necessidade , e nesse seu código , você cadastra o nome e o tempo , e o tempo é o tempo gasto por cada um dos competidores , e quanto menor o tempo , mais em primeiro chegou , assim a ordenação pode classificar dos que chegaram em primeiro para os que chegaram por último , e assim , depois da ordenação o primeiro é o vencedor : e nesse vídeo pode se ver como é o funcionamento dos vários métodos: cada passada da barra vermelha representa uma volta no loop mais interno , e as barras brancas são os números , que vão sendo organizados do menor para o maior . representação Gráfica dos métodos de ordenação : https://www.youtube.com/watch?v=rQTQF46o16k https://www.youtube.com/watch?v=kPRA0W1kECg&t=75s #include <stdio.h> #include <windows.h> #include <stdlib.h> #define NUMERO_DE_CORREDORES 5 #define TAMANHO_MAXIMO_DO_NOME 500 #define _h GetStdHandle(STD_OUTPUT_HANDLE) int ordenacao ( char nome[][500] , float* tempo ); char gravar_arq( char nome[][500] , float* tempo ); char ler_arq ( char nome[][500] , float* tempo ); float informacao(char nome[][TAMANHO_MAXIMO_DO_NOME], float tempo[NUMERO_DE_CORREDORES]) { int i; SetConsoleTextAttribute( _h , 12 + ( 10 << 4 ) ); printf(" Nome Tempo \n"); for( int i=0; i<5; i++ ) /// alguns compiladores / IDE's aceitam criar a variAvel dntro do Loop printf("\n %8s == %8.2f ", nome[i], tempo[i]); } void cadastro( char nome[][ TAMANHO_MAXIMO_DO_NOME ] , double tempo[ NUMERO_DE_CORREDORES ] ) { int i = 0; int maior = 0; double total = 0; for( int i=0; i<NUMERO_DE_CORREDORES; i++ ) { fflush(stdin); printf("\nInforme o nome do corredor %d: ", i+1); fgets(nome[i], TAMANHO_MAXIMO_DO_NOME,stdin); printf("Insira o tempo de %s: ", nome[i]); scanf("%lf", &tempo[i]); } } int main() { int cor_letra , cor_fundo; CONSOLE_SCREEN_BUFFER_INFO c; if( GetConsoleScreenBufferInfo( _h , & c ) ) { cor_letra = ( c.wAttributes & 0xFF ) & 0x0F; cor_fundo = ((c.wAttributes & 0xFF ) >> 4 ) & 0x0F; } int opcao; char nome [ NUMERO_DE_CORREDORES ][ TAMANHO_MAXIMO_DO_NOME ] = { "kiko" ,"lolipop" ,"juju" ,"kolip" ,"lopol" }; float tempo[ NUMERO_DE_CORREDORES ] = { 2.21 , 0.98 , 1.83 , 1.26 , 2.02 }; float numeros[] = { 0.0 }; do { SetConsoleTextAttribute( _h , 11 + ( 0 << 4 ) ); printf("\n=======================\n\n" " 1 - Cadastro de Corredores\n" " 2 - informações \n" " 3 - ClassificaCAo Geral \n" " 4 - Gravar Arquivo \n" " 5 - Ler Arquivo \n" " 6 - Sair \n" " Escolha Uma opcao " ); scanf( "%d" , & opcao ); printf("\n\n"); SetConsoleTextAttribute( _h , 7 + ( 0 << 4 ) ); switch( opcao ) { case 1: cadastro(nome,tempo); break; case 2: informacao(nome, tempo); break; case 3: ordenacao(nome, tempo); break; case 4: gravar_arq(nome,tempo); break; case 5: ler_arq(nome, tempo); break; case 6: printf("\n\n\tSainDo Do Programa . . . !"); break; default: printf("\nOpCAo InvaLida . . . !\n"); } } while( opcao != 6 ); printf("\n\n\n"); return 0; } int ordenacao( char nome[][500] , float* tempo ) { char ax[500]; printf("OrdenaCAo dos competidores por tempo\n" ); for( int i=0; i<NUMERO_DE_CORREDORES; i++ ) { for( int j=i+1; j<NUMERO_DE_CORREDORES; j++ ) { if( tempo[i] > tempo[j] ) { float aux = tempo[i]; tempo[i] = tempo[j]; tempo[j] = aux; strcpy( ax , nome[i] ); strcpy( nome[i] , nome[j] ); strcpy( nome[j] , ax ); } } } return 0; } char gravar_arq( char nome[][500] , float* tempo ) { return NULL; } char ler_arq ( char nome[][500] , float* tempo ) { return NULL; }
  25. @raonyreis13 @raonyreis13 e você pode postar a configuração desse seu pc , o nome e a marca da placa-mãe , da fonte , e memória ?

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!