Ir ao conteúdo
  • Cadastre-se

Lucas Pelepek

Membro Pleno
  • Posts

    56
  • Cadastrado em

  • Última visita

posts postados por Lucas Pelepek

  1. Função que escreve e lê o arquivo binário:

    int FUNCAO_QUE_GRAVA_BIN (char filename[],int partida1,char resultado1)
    {
            typedef struct  {
                    int partida;
                    char jogvelha[3][3];
                    char resultado;
            } velha;
    
            velha partida = {partida1,{"a","b"},resultado1},read_data;
    
            FILE * file= fopen(filename, "wb");
            if (file != NULL) {
                    fwrite(&partida, sizeof(velha), 1, file);
                    fclose(file);
    
                    FILE* fin = fopen(filename, "rb");
                    fread(&read_data, sizeof(velha), 1, file);
                    printf("%d %c %c\n", read_data.partida, read_data.jogvelha[3][3], read_data.
                           resultado);
                    fclose(fin);
                    fflush(stdin);
                    while(getchar()!='\n'); // option TWO to clean stdin
                    getchar(); // wait for ENTER
                    return 0;//failure //ignore
            }
    
            return 1; //sucesso /ignore
    }

    chamando no main :

     

       int ganhador=1;
            char local[]={"binar"};
            int partidas= 1;
    
      FUNCAO_QUE_GRAVA_BIN(local,partidas,ganhador);

    o problema é que o output está saindo tudo errado, o jogvelha[3][3] não sai direito, como arrumar?

    • Curtir 1
  2. Um usuário escreve um titulo e um texto, que então são guardados em uma table, há como criar uma lista desses títulos que então se clicados redirecionam ao texto relacionado?

    o usuário se quiser pode escrever mais títulos e textos, e então a lista pode crescer.

     

    apenas queria saber se essa lista pode ser feita, consigo criar listas, porém não de uma database que recebeu input de um user.

     

    não sei se algo assim é possível, obrigado desde já, aprecio qualquer dica.

  3. Bom dia, tarde, noite.

    problema:
    Parse error: syntax error, unexpected ';' in C:\xampp\htdocs\check_form.php on line 37

     

    no codigo:

    else if ((filter_var($_POST["Email"],FILTER_VALIDATE_EMAIL)){
        $erro_Email = "Email é invalido." ; //  <---- linha 37
        $erro = true;
      }

    codigo completo:

    <?php
    function verifica_campo($texto){
      $texto = trim($texto);
      $texto = stripslashes($texto);
      $texto = htmlspecialchars($texto);
      return $texto;
    }
    
    function verifica_campoEmail($texto){
      $texto = filter_var($texto,FILTER_VALIDATE_EMAIL);
      return $texto;
    }
    
    
    $consenha= "";
    $senha= "";
    $datanasc= "";
    $Email= "";
    $nome = "";
    $erro = false;
    
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
    
      if(empty($_POST["nome"])){
        $erro_nome = "Nome é obrigatório.";
        $erro = true;
      }
      else{
        $nome = verifica_campo($_POST["nome"]);
      }
    
      if(empty($_POST["Email"])){
        $erro_Email = "Email é obrigatório.";
        $erro = true;
      }
      else if ((filter_var($_POST["Email"],FILTER_VALIDATE_EMAIL)){
        $erro_Email = "Email é invalido." ; // <----linha 37
        $erro = true;
      }
    
      if(empty($_POST["datanasc"])){
        $erro_datanasc = "datanasc é obrigatório.";
        $erro = true;
      }
      else{
        $datanasc = verifica_campo($_POST["datanasc"]);
      }
    
      if(empty($_POST["senha"])){
        $erro_senha = "senha é obrigatório.";
        $erro = true;
      }
      else if ((strcmp($_POST["senha"],$_POST["consenha"])) != 0 ){
        $erro_senha = "senha nao bate com consenha.";
        $erro = true;
      }
    
      if(empty($_POST["consenha"])){
        $erro_consenha = "consenha é obrigatório.";
        $erro = true;
      }
      else{
        $consenha = verifica_campo($_POST["consenha"]);
      }
    
    }
    ?>

    ainda estou trabalhando nele (obviamente), porém esse erro não me deixa ir pra frente.
     

    caso precisem do resto do cod:

    Spoiler
    
    <?php
      require("check_form.php");
    ?>
    <!DOCTYPE html>
    <html>
    <head>
      <title>Teste PHP</title>
      <meta charset="utf-8">
      <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
      <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
      <script src="check_form.js"></script>
    </head>
    <body>
    <div class="container">
      <div class="row">
        <div class="col-xs-12">
          <h1 class="page-header">Teste Formulário PHP</h1>
    
          <?php if ($_SERVER["REQUEST_METHOD"] == "POST"): ?>
            <?php if (!$erro): ?>
              <div class="alert alert-success">
                Dados recebidos com sucesso:
                <ul>
                  <li><strong>Nome Completo</strong>: <?php echo $nome ?>;</li>
                  <?php // limpa o formulário.
                    $nome = "";
                  ?>
                </ul>
    
                <ul>
                  <li><strong>Email</strong>: <?php echo $Email ?>;</li>
                  <?php // limpa o formulário.
                    $Email = "";
                  ?>
                </ul>
    
                <ul>
                  <li><strong>data nascismento</strong>: <?php echo $datanasc ?>;</li>
                  <?php // limpa o formulário.
                    $datanasc = "";
                  ?>
                </ul>
    
                <ul>
                  <li><strong>senha</strong>: <?php echo $senha ?>;</li>
                  <?php // limpa o formulário.
                    $senha= "";
                  ?>
                </ul>
    
                <ul>
                  <li><strong>confirmar senha</strong>: <?php echo $consenha ?>;</li>
                  <?php // limpa o formulário.
                    $consenha= "";
                  ?>
                </ul>
    
              </div>
            <?php else: ?>
              <div class="alert alert-danger">
                Erros no formulário.
              </div>
            <?php endif; ?>
          <?php endif; ?>
    
    
          <form enctype="multipart/form-data" id="form-test" class="form-horizontal" method="POST" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
    
            <div class="form-group <?php if(!empty($erro_nome)){echo "has-error";}?>">
              <label for="inputNome" class="col-sm-2 control-label">Nome Completo</label>
              <div class="col-sm-10">
                <input required type="text" class="form-control" name="nome" placeholder="Nome Completo" value="<?php echo $nome; ?>">
                <div id="erro-nome">
    
                  <div class="form-group <?php if(!empty($erro_Email)){echo "has-error";}?>">
                    <label for="inputEmail" class="col-sm-2 control-label">Email</label>
                    <div class="col-sm-10">
                      <input required type="text" class="form-control" name="Email" placeholder="Email" value="<?php echo $Email; ?>">
                      <div id="erro-Email">
    
                        <div class="form-group <?php if(!empty($erro_datanasc)){echo "has-error";}?>">
                          <label for="inputdatanasc" class="col-sm-2 control-label">data nascismento</label>
                          <div class="col-sm-10">
                            <input required type="text" class="form-control" name="datanasc" placeholder="data nascismento" value="<?php echo $datanasc; ?>">
                            <div id="erro-datanasc">
    
                              <div class="form-group <?php if(!empty($erro_senha)){echo "has-error";}?>">
                                <label for="inputsenha" class="col-sm-2 control-label">senha</label>
                                <div class="col-sm-10">
                                  <input required type="text" class="form-control" name="senha" placeholder="senha" value="<?php echo $senha; ?>">
                                  <div id="erro-senha">
    
                                    <div class="form-group <?php if(!empty($erro_consenha)){echo "has-error";}?>">
                                      <label for="inputconsenha" class="col-sm-2 control-label">confirmar senha</label>
                                      <div class="col-sm-10">
                                        <input required type="text" class="form-control" name="consenha" placeholder="confirmar senha" value="<?php echo $consenha; ?>">
                                        <div id="erro-consenha">
    
                </div>
                <?php if (!empty($erro_nome)): ?>
                  <span class="help-block"><?php echo $erro_nome ?></span>
                <?php endIf; ?>
    
                <?php if (!empty($erro_Email)): ?>
                  <span class="help-block"><?php echo $erro_Email ?></span>
                <?php endIf; ?>
    
                <?php if (!empty($erro_datanasc)): ?>
                  <span class="help-block"><?php echo $erro_datanasc ?></span>
                <?php endIf; ?>
    
                <?php if (!empty($erro_senha)): ?>
                  <span class="help-block"><?php echo $erro_senha ?></span>
                <?php endIf; ?>
    
                <?php if (!empty($erro_consenha)): ?>
                  <span class="help-block"><?php echo $erro_consenha ?></span>
                <?php endIf; ?>
    
              </div>
            </div>
    
            <div class="form-group">
              <div class="col-sm-offset-2 col-sm-10">
                <button type="submit" class="btn btn-default">Enviar</button>
              </div>
            </div>
          </form>
        </div>
      </div>
    </div>
    </body>
    </html>

    java script:

    
    $(function(){
      $("#form-test").on("submit",function(){
        nome_input = $("input[name='nome']");
    
        if(nome_input.val() == "" || nome_input.val() == null)
        {
          $("#erro-nome").html("O nome eh obrigatorio");
          return(false);
        }
    
        return(true);
      });
    });

     

    obrigado desde já.

  4. opa, a variavel ( i ) já está sendo inicializada no proprio FOR, mesmo colocando ela lá em cima dá o mesmo resultado.

     

    mas como você disse:
    era só ter mudado o anda.

    for (int i = 0; i <= (anda-1); i++) {
              matrizcopia[cod][i]=(portas[i] ? 'O' : 'C');
            }
            cod+=1;
          }

    outra mudança pra não ter espaço entre os outputs:

     for (int i = 0; i < strlen(matrizcopia[z]) ; i++) {
              printf("%c",matrizcopia[z][i]);
            }}}

    o unico problema é que está tendo 2 linhas puladas no final, não sei de onde elas vem, mas obrigado pela ajuda.

     

    #include <stdio.h>
    #include <string.h>
    
    void main()
    {
      int c, anda, numero,i, x,y,cod,z ,num;
      y=0;
      cod=0;
      char portas[100];
      char matrizcopia[1000][1000];
    
      while( 1 ) // 1 faz ser loop eterno
      {
        while (1)// loop pra verificar se está dentro dos limites
        {
         // printf("Escreva o numero de andares e quanto numeros jogara:\n");
          scanf( "%d %d", &anda, &numero );
    
          if ( (anda <= 100 && anda >= 1) && (numero <=200 && numero >= 1) || (anda == 0 && numero == 0) )
          {
            y+=anda;
            break;
          }}
          if( anda == 0 && numero == 0 ) // sai do loop caso 0 0
          {
            break;
          }
          for( c=0; c<anda; c++ ) // zera o vetor
          {
            portas[c] = 0;
          }
          for( c=0; c<numero; c++ ) // le as jogados de acordo com o numero lido antes
          {
            //printf("\njogada(%d): ",c+1);
            scanf( "%d", &num );
    
            for( x=num-1; x<anda; x+=num )// inverte o vetor nas portas calculadas
            {
              portas[x] = !portas[x];
            }}
            for ( i = 0; i <= (anda-1); i++) {
              matrizcopia[cod][i]=(portas[i] ? 'O' : 'C');
            }
            cod+=1;
          }
    
          for (z = 0; z <= cod; z++) {
    
            for ( i = 0; i < strlen(matrizcopia[z]) ; i++) {
              printf("%c",matrizcopia[z][i]);
            }
             printf("\n");
          }}


     

    • Curtir 1
  5. bom dia/tarde/noite.
     

    #include <stdio.h>
    #include <string.h>
    
    void main()
    {
      int c, anda, numero, x,y,cod,z ,num;
      y=0;
      cod=0;
      char portas[100];
      char matrizcopia[1000][1000];
    
      while( 1 ) // 1 faz ser loop eterno
      {
        while (1)// loop pra verificar se está dentro dos limites
        {
          printf("Escreva o numero de andares e quanto numeros jogara:\n");
          scanf( "%d %d", &anda, &numero );
    
          if ( (anda <= 100 && anda >= 1) && (numero <=200 && numero >= 1) || (anda == 0 && numero == 0) )
          {
            y+=anda;
            break;
          }}
          if( anda == 0 && numero == 0 ) // sai do loop caso 0 0
          {
            break;
          }
          for( c=0; c<anda; c++ ) // zera o vetor
          {
            portas[c] = 0;
          }
          for( c=0; c<numero; c++ ) // le as jogados de acordo com o numero lido antes
          {
            printf("\njogada(%d): ",c+1);
            scanf( "%d", &num );
    
            for( x=num-1; x<anda; x+=num )// inverte o vetor nas portas calculadas
            {
              portas[x] = !portas[x];
            }}
            for (int i = 0; i <= anda; i++) {
              matrizcopia[cod][i]=(portas[i] ? 'O' : 'C');
            }
            cod+=1;
          }
    
          for (int z = 0; z <= cod; z++) {
            printf("\n");
            for (int i = 0; i < 200; i++) {
              printf("%c",matrizcopia[z][i]);
            }}}

    colocando esse imput:
    5 3
    3

    4

    2

    0 0

     

    o resultado deveria dar:

    COOCC

     

    porém no meu codigo ele adciona uma letra a mais:

    COOCCO

     

    não importa qual imput.


    não consigo achar por onde essa letra tá entrando, HELP!

     

    obrigado desde já.
     

    • Curtir 2
    • Obrigado 1
  6. É que eu não coloquei aspas nos números na hora da soma, por isso minha pergunta, mas valeu.

    adicionado 1 minuto depois

    @DiF

    <!DOCTYPE html>
    
    <html>
    
    <head>
     <style>
    
     	caixa {
    
       	 width: 300px;
       	 border: 2px solid black;
       	 padding: 25px;
       	 margin: 25px;
         box-sizing: border-box;
         display: inline-block;
        }
    
        alinhador {
         text-align: center;
       	 margin-right: auto;
       	 margin-left: auto;
        }
    
        entrada[type=number] {
        	width: 100%;
        	padding: 12px 20px;
       	    margin: 8px 0;
        	box-sizing: border-box;
            display: inline-block;
        }
    
    
    
     </style>
    </head>
    
    <body>
    
    <alinhador>
     <h1>
     <caixa>calculador</caixa>
     </h1>
    
    	<form>
     		<input type="number" id="p1" name="p1" />
    
            <select id="operador" name="operador">
            <option
            value= "+">+</option>
    
            <option
            value="-">-</option>
    
            <option
            value="*">*</option>
    
            <option
            value="/">/</option>
    
            </select>
    
            <input type="number" id="p2" name="p2">
    
    
          <p id="resultado">=</p>
          <button id="button" onclick="mais()">calcular!</button>
    
    	</form>
    </alinhador>
    
    <script>
    
    
    
    	function mais (){
      var p1 = document.getElementById("p1").value;
     var p2 = document.getElementById("p2").value;
    
     for (var i = 0; i < tama.length; i++) {
        p1 = parseInt(tama[i]);
        p2 = parseInt(tama[i]);
     }
    
     var resultado1 = document.getElementById("resultado");
    
        resultado1.innerHTML = p1 + p2;
        }
    
    </script>
    
    </body>
    
    </html>

    valeu, porém mesmo assim não funciona.

    alguma ideia?

    o resultado não aparece.

  7. <!DOCTYPE html>
    
    <html>
    
    <head>
     <style>
     
     	caixa { 
         
       	 width: 300px;
       	 border: 2px solid black;
       	 padding: 25px;
       	 margin: 25px;
         box-sizing: border-box;
         display: inline-block;
        }
        
        alinhador {
         text-align: center;
       	 margin-right: auto;
       	 margin-left: auto;
        }
        
        entrada[type=number] {
        	width: 100%;
        	padding: 12px 20px;
       	    margin: 8px 0;
        	box-sizing: border-box;
            display: inline-block;
        }
        
        
        
     </style>
    </head>
    
    <body>
    
    <alinhador>
     <h1>
     <caixa>calculador</caixa>
     </h1>
    
    	<form> 
     		<input type="number" id="p1" name="p1" />
            
            <select id="operador" name="operador">
            <option 
            value= "+">+</option>
            
            <option
            value="-">-</option>
            
            <option
            value="*">*</option>
            
            <option
            value="/">/</option>
            
            </select>
     		
            <input type="number" id="p2" name="p2">
            
     
          <p id="resultado"></p>
          <button id="button" onclick="mais()">calcular!</button>
     		
    	</form>
    </alinhador>
    
    <script>
    
    
    
    	function mais (){
      var p1 = document.getElementById("p1").value;
     var p2 = document.getElementById("p2").value;
    
     var resultado1 = document.getElementById("resultado");
     
        resultado1.innerhtml = p1 + p2;
        }
        
    </script>
    
    </body>
    
    </html>

    bom dia/tarde/noite.
     

    sou muito novato em programação web, e estava tentando fazer esse calculador, porém mesmo seguindo os tutoriais ele não calcula! com certeza devo estar fazendo algo errado muito obvio.

    só quero que o resultado apareça, o resto do código eu termino depois.

  8. opa, bem, eu alterei pra isso: 
     

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define co 2
    #define li 2
    
    int main()
    {
      char w[41];
      char x[41];
      char email[co][li];
      int c,l,cont;
    
      for (c=0; c < co; c++) {
    
        printf("Email numero: %d\n",c);
        printf("email e senha:\n");
    
        for (l = 0; l < li; l++) {
    
          scanf("%s",&email[c][l]);
    
        }
      }
      printf("\ndigite email: ");
      scanf("%s",&x);
    
      for (c=0; c < co; c++) {
    
        if (!strcmp(x,email[1][c])) {
    
          printf("\ndigite a senha: ");
          scanf("%s",&w);
    
          if (!strcmp(w,email[2][c])) {
            printf("\nBem vindo");
          }
          else
          {
            printf("\nsenha incorreta");
          }
        }
        else
        {
          printf("\nemail não encontrado");
        }
      }
    }

    não sei se foi isso que voce tentou me passar, em qualquer caso, o erro acontece depois dessa parte que você me alertou, ou ainda estou errado?

  9. Bom dia,tarde,noite.

     

    Estou um tempo sem programar em C, acabei ficando enferrujado.
    objetivo do programa:


    Faça um programa que permita o cadastro de 5 logins com e-mail (máximo de 40 caracteres) e senha (máximo de 10 caracteres). Depois, peça para um usuário fazer o login digitando e-mail e senha. Se alguma informação for inválida, repetir. Se for certa, mostrar uma mensagem de confirmação de login e encerrar o programa. (não pode usar struct, nesse caso usei matriz).

     

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define co 2
    #define li 2
    
    int main()
    {
      char w[41];
      char x[41];
      char email[co][li];
      int c,l,cont;
      
      for (c=1; c <= co; c++) {
        
        printf("Email numero: %d\n",c);
        printf("email e senha:\n");
        
        for (l = 1; l <= li; l++) {
          
          scanf("%s",&email[c][l]);
          
        }
      }
      printf("\ndigite email: ");
      scanf("%s",&x);
      
      for (c=1; c <= co; c++) {
        
        if (!strcmp(x,email[1][c])) {
          
          printf("\ndigite a senha: ");
          scanf("%s",&w);
          
          if (!strcmp(w,email[2][c])) {
            printf("\nBem vindo");
          }
          else
          {
            printf("\nsenha incorreta");
          }
        }
        else
        {
          printf("\nemail não encontrado");
        }
      }
    }

    porém acontece o "segmentation fault (core dumped)" geralmente quando acontecia isso erá porque eu tinha esquecido um &, mas não é o caso.
    problema ocorre aqui:
     

      printf("\ndigite email: ");
      scanf("%s",&x);

     

  10. Bom dia,tarde,noite.

    desculpa pelo titulo vago, é que realmente estou perdido.

    o que foi pedido:

    construa o esquema de banco de dados que segue em DER e ralacional:

    tipo (codt,nome) (os tipos são:limpeza,higiene,laticinio,farinha,cereal,fruta,verdura).

    produto (codp,nome,valor) referencia tipo.

    cliente (codc,nome,rg,cpf,mae,dt_nasc,sexo,cidade,faixasalarial(salario em minimos)).

    nf (codnf,descrição,codcliente)referencia cliente.

    itensnf (codnf, codproduto,qtde) referencia produto e nota fiscal.
    OBS: utilize primary key, foreign key, unique.

    altere em mais de 10% o valor dos produtos da area de limpeza e higiene.

    acabei fazendo isso:
     

    create table tipo (
    codt serial primary key,
    nome varchar (100) unique
    );
    
    insert into tipo (nome) 
    values('limpeza'),
    ('higiene'),
    ('laticínio'),
    ('farinha'),
    ('cereal'),
    ('fruta'),
    ('verdura');
    
    create table produto (
    codp serial primary key,
    codt integer,
    nome varchar (100) unique,
    valor integer,
    foreign key (codt) references tipo (codt)
    );
    
    insert into produto (nome,codt,valor) 
    values
    ('vassoura',1,111),
    ('sabonete',2,222),
    ('leite',3,333),
    ('farinha branca',4,444),
    ('kellog',5,555),
    ('maçã',6,666),
    ('alface',7,777);
    
    create table cliente (
    codc serial primary key,
    nome varchar (100),
    rg integer unique,
    cpf integer unique,
    mae varchar (100),
    dt_nasc integer,
    sexo varchar (100),
    cidade varchar (100),
    faixasalarial integer
    );
    
    insert into cliente (nome,rg,cpf,mae,dt_nasc,sexo,cidade,faixasalarial) 
    values
    ('ana',1111,11111,'maria',1101999,'feminino','curitiba',1000),
    ('pedro',2222,22222,'eva',22021998,'masculino','maringa',2000),
    ('joao',3333,33333,'paula',30051997,'masculino','londrina',3000);
    
    create table nf (
    codnf serial primary key,
    descrição varchar (100),
    codc integer,
    foreign key (codc) references cliente (codc)
    ); 
    
    insert into nf (descrição,codc)
    values
    ('primeira',1);
    
    create table itensnf (
    codnf integer,
    codp integer,
    qtde integer,
    foreign key (codp) references produto (codp),
    foreign key (codnf) references nf (codnf)
    );
    
    insert into itensnf (codnf,codp,qtde)
    values
    (1,1,3);
    
    UPDATE produto 
    SET valor = valor * 1.1

    mas não acredito que seja isso que deveria ter feito, estou començando em banco de dados, alguma ajuda? obrigado.

  11. @LuisOPsum Opa, obrigado , tava apressado e esqueci de mudar o soma pra outra coisa, hahaha, era só pra fazer um exemplo, implementei a dica de vocês em um outro codigo maior, muito obrigado :D.

    @isrnick entendi, não sabia disso,tava quebrando minha cabeça, valeu, consertou o codigo :-BEER, vou aplicar sua instrução no futuro :thumbsup:.

    @giu_d Ficou lindo, soma era só um exemplo, mas consegui implementar perfeitamente no meu codigo principal.

    • Curtir 2
  12. bom dia,tarde,noite.

     

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main()
    {
      int n;
      char x[30];
    
      printf("Escreva qual deseja:\nsoma\nencerrar\nR: ");
    
      while (strcmp(x,"encerrar")!=0)
      {
        scanf ("%[^\n]%*c",&x);
    
        if (strcmp(x, "soma")==0)
        {
          printf("\nDigite um numero decimal: ");
          scanf("%d",&n);
          printf ("\n%d",n);
        }
      }
      printf("\nEncerrando programa ...\n");
    }

    Não sei porque apos a digitação da escolha "soma" ele não retorna ao primeiro scanf? ele continua na soma para sempre.
    Obrigado desde já.
     

    • Curtir 2
  13. Opa, era isso mesmo, hahaha, valeu pela ajuda, vou aplicar sua dica nos proximos.

    adicionado 5 minutos depois

    já tinha mandado antes de ver sua edição.

    ficou mil vezes melhor do jeito que voce ajeitou hahaha, tenho que usar como exemplo.

     

    valeu pelo limpa linha, irei usar futuramente.

    adicionado 26 minutos depois

    @giu_d um pequeno erro aqui:

     

     menor_media = aluno[0].media;
        for (i = 0; i < n; i++)
        {
            if (menor_media > aluno[i].media) {
                menor_media = aluno[i].media;
                nome_media = i;
            }
        }

    mudando o menor_media para:
     

     menor_media = maior_media;
        for (i = 0; i < n; i++)
        {
            if (menor_media > aluno[i].media) {
                menor_media = aluno[i].media;
                nome_media = i;
            }
        }

    arruma.

    :thumbsup:

  14. Bom dia/tarde/noite.

     

    #include <stdio.h>
    #include <string.h>
    # define n 3
    
    typedef struct fichaaluno
    {
      int matricula;
      char nome [30];
      int nota1 ;
      int nota2 ;
      int nota3 ;
      float media;
    } ;
    struct fichaaluno aluno[n];
    
    void main() {
    
    float maiormedia;
    int a,b,c;
     int tam,maiorno1,x1,x2,x3;
     int nomenota1aluno,mediasoma,nomemediaaluno;
    
    for (a=0;a<n;a++)
    {
     // printf("matricula: ");
     //   scanf("\n%d",&aluno[a].matricula);
    
      printf("nome:");
        fflush(stdin);
        fgets(aluno[a].nome,25,stdin);
         tam=strlen(aluno[a].nome);
         if(aluno[a].nome[tam-1]=='\n')
         aluno[a].nome[--tam]='\0';
    
           fflush(stdin);
    
      printf("nota1: ");
        scanf("\n%d",&aluno[a].nota1);
      printf("nota2: ");
        scanf("\n%d",&aluno[a].nota2);
      printf("nota3: ");
        scanf("\n%d",&aluno[a].nota3);
        printf("\n");
        while ( (c = getchar()) != '\n' && c != EOF );
    }
    maiorno1=aluno[0].nota1;
    printf("\naluno com maior nota na primeira prova: ");
    for (a=0;a<n;a++)
    {
      if (maiorno1<aluno[a].nota1)
      maiorno1=aluno[a].nota1;
      nomenota1aluno=a;
    //printf("\nmatricula: %d\nnome: %s\nnota1: %d\nnota2: %d\nnota3: %d\n", aluno[a].matricula, aluno[a].nome, aluno[a].nota1, aluno[a].nota2, aluno[a].nota3 );
    }
    printf("\nnota:%i aluno: %s\n",maiorno1,aluno[nomenota1aluno].nome);
    
    printf("\naluno com maior media: ");
    for (a=0;a<n;a++){
    
        x1=aluno[a].nota1;
        x2=aluno[a].nota2;
        x3=aluno[a].nota3;
        aluno[a].media= (x1+x2+x3)/3;
    }
    maiormedia=0;
    for (a=0;a<n;a++)
    {
      if (maiormedia<aluno[a].media)
      maiormedia=aluno[a].media;
      nomemediaaluno=a;
    }
    printf("\nmedia: %.2f aluno: %s\n",maiormedia,aluno[nomemediaaluno].nome);
    
    printf("\naluno com a menor media: ");
    float menormedia=maiormedia;
    int menormediaaluno;
    for (a=0;a<n;a++)
    {
      if (menormedia>aluno[a].media) 
      menormedia=aluno[a].media;
      menormediaaluno=a;
    }
    printf("\nmedia: %.2f aluno: %s",menormedia,aluno[menormediaaluno].nome);
    
    }

    O problema de logica é nessa parte: 

    maiormedia=0;
    for (a=0;a<n;a++)
    {
      if (maiormedia<aluno[a].media)
      maiormedia=aluno[a].media;
      nomemediaaluno=a; //<--------------
    }
    printf("\nmedia: %.2f aluno: %s\n",maiormedia,aluno[nomemediaaluno].nome);
    
    printf("\naluno com a menor media: ");
    float menormedia=maiormedia;
    int menormediaaluno;
    for (a=0;a<n;a++)
    {
      if (menormedia>aluno[a].media) 
      menormedia=aluno[a].media;
      menormediaaluno=a; // <------------ 
    }
    printf("\nmedia: %.2f aluno: %s",menormedia,aluno[menormediaaluno].nome);

    Tanto o 'nomemedialuno' quanto o 'menormediaaluno' apenas mostram o ultimo imput lido, em vez de mostrarem o que tem a maior media e menor media respectivamente.

    As medias são mostradas corretamentes, só o nome que sempre sai errado, não consigo pensar numa logica para arrumar isso.

     

    qualquer ajuda agradeço : ) .

  15. @Math.Pi Consegui arrumar o problema do scanf pedindo duas vezes imput, mudando a posição do \n pra antes do % .

    fiz a mudanças que você indicou e mudei o tamanho dos vetores, agora está funcionado corretamente, obrigado pelas dicas.

    #include <stdio.h>
    #include <string.h>
    
    int main(void) {
    
      int x,alunos,l,k,j,e,h,somanota;
      char gaba[9],respalu[9];
      int nota[9]={0,0,0,0,0,0,0,0,0};
      printf("GABARITO:\n");
    
      for ( x = 1; x < 9; x++) {
        printf("quest�o:%d\n",x);
        fflush(stdin);
        scanf("\n%c", &gaba[x]);
      }
      alunos=2;
      for (k=1;k<=alunos;k++){
        printf("aluno:%d\n",k);
        somanota=0;
        for ( h = 1; h < 9; h++) {
          printf("quest�o:%d\n",h);
          fflush(stdin);
          scanf("\n%c", &respalu[h]);
        }
        for ( j = 1; j < 9; j++) {
          if (gaba[j] == respalu[j])
            somanota+=1;
        }
        nota[k]=somanota;
      }
      for ( e = 1; e <= alunos; e++) {
        printf("aluno:%d\n",e);
        printf("nota:%d\n",nota[e]);
      }
    }

     

  16. usando o fflush(stdin); deu o mesmo resultado.

    foi mal, força do habito,mudei.

    não entendi, ele está comparando o aluno com o gabarito.

    if (alu[j] == gaba[j])
            nota[j]=1; <----- problema aqui talvez?
    #include <stdio.h>
    #include <string.h>
    
    int main(void) {
    
      int x,alunos,l,k,j,e,h;
      char gaba[7],alu[7];
      int nota[7]={0,0,0,0,0,0,0};
      printf("GABARITO:\n");
    
      for ( x = 1; x < 9; x++) {
        printf("questão:%d\n",x);
        fflush(stdin);
        scanf("%c\n",&gaba[x]);
      }
      alunos=1;
      for (k=1;k<=alunos;k++){
        printf("aluno:%d\n",k);
        for ( h = 1; h < 9; h++) {
          printf("questão:%d\n",h);
          fflush(stdin);
          scanf("%c\n",&alu[h]);
        }
        for ( j = 1; j < 9; j++) {
          if (alu[j] == gaba[j])
            nota[j]=1;
        }
      }
      for ( e = 1; e <= alunos; e++) {
        printf("aluno:%d\n",e);
        printf("nota:%d\n",nota[e]);
      }
    }

     

  17. opa, valeu, agora funcionou, mais ou menos, mesmo colando todas respostas corretas o programa só fala que cada aluno acertou = o numero de alunos. 

    exemplo tendo 2 alunos:

    aluno 1:

    nota:2

    aluno2:

    nota:2


    outra coisa é que ele está lendo 2 vezes do teclado cada vez vem uma questão, pode ser o "setbuf(stdin,NULL);"?.
    exemplo:
    "questão 1:

    a

    a

    questão 2:

    a

    a

    ..."

     

    #include <stdio.h>
    #include <string.h>
    
    int main(void) {
    
      int x,z,l,k,j,e,h;
      char y[7],w[7];
      int b[7]={0,0,0,0,0,0,0};
      printf("GABARITO:\n");
    
      for ( x = 1; x < 9; x++) {
        printf("questão:%d\n",x);
        setbuf(stdin,NULL);
        scanf("%c\n",&y[x]);
      }
      z=2;
      for (k=1;k<=z;k++){
        printf("aluno:%d\n",k);
        for ( h = 1; h < 9; h++) {
          printf("questão:%d\n",h);
          setbuf(stdin,NULL);
          scanf("%c\n",&w[h]);
        }
        for ( j = 1; j < 9; j++) {
          if (w[j] == y[j]) ;
            b[j]=1;
        }
      }
      for ( e = 1; e <= z; e++) {
        printf("aluno:%d\n",e);
        printf("nota:%d\n",b[e]);
      }
    }

     

  18. @Math.Pi Edentei e adicionei  "#include <string.h>" caso seja algum problema com o "strcmp", o programa compila, mas dá esses Warning:
     

    |28|warning: passing argument 1 of 'strcmp' makes pointer from integer without a cast [-Wint-conversion]|.

     

    |28|warning: passing argument 2 of 'strcmp' makes pointer from integer without a cast [-Wint-conversion]|

     

    pesquisando parece que tenho que por "*", mas não entendi.

     

    #include <stdio.h>
    #include <string.h>
    
    int main(void) {
    
      int x,z,l,k,j,e,h;
      char y[7],w[7];
      int b[7];
      printf("GABARITO:\n");
    
      for ( x = 1; x < 9; x++) {
        printf("questão:%d\n",x);
        setbuf(stdin,NULL);
        scanf("%c\n",&y[x]);
      }
      printf("numero de alunos:\n");
      setbuf(stdin,NULL);
      scanf("%d\n",&z);
    
      for (k=1;k<=z;k++){
        printf("aluno:%d\n",x);
        for ( h = 1; h < 9; h++) {
          printf("questão:%d\n",h);
          setbuf(stdin,NULL);
          scanf("%c\n",&w[h]);
        }                                 
        for ( j = 1; j < 9; j++) {
          l= (strcmp (w[j],y[j])); //erro
          if (l==1) {
            b[j]++;
          }
        }
      }
      for ( e = 1; e <= z; e++) {
        printf("aluno:%d\n",e);
        printf("nota:%d\n",b[e]);
      }
    }

     

  19. opa, valeu, Mudei todos o For's pra garantir : ).

    #include <stdio.h>
    
    int main(void) {
    
      int x,z,l,k,j,e,h;
      char y[7],w[7];
      int b[7];
      printf("GABARITO:\n");
    
    for ( x = 1; x < 9; x++) {
      printf("questão:%d\n",x);
      setbuf(stdin,NULL);
      scanf("%c\n",&y[x]);
    }
    printf("numero de alunos:\n");
    setbuf(stdin,NULL);
    scanf("%d\n",&z);
    
    for (k=1;k<=z;k++){
    printf("aluno:%d\n",x);
    for ( h = 1; h < 9; h++) {
      printf("questão:%d\n",h);
      setbuf(stdin,NULL);
      scanf("%c\n",&w[h]);
    }                                 //Segmentation fault
        for ( j = 1; j < 9; j++) {
          l= (strcmp (w[j],y[j]));
            if (l==1) {
              b[j]++;
            }
    }
    }
    for ( e = 1; e <= z; e++) {
      printf("aluno:%d\n",e);
      printf("nota:%d\n",b[e]);
    }
    }

    mas agora dá:
    Process returned -1073741819 (0xC0000005) .

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