I want to know why the first gap of the is does not perform a second time

Asked

Viewed 52 times

-1

#include <stdio.h>
#include <stdlib.h>


struct carro    
{
    char marca[10];
    char modelo[10];
    int ano;
    char lplaca[3];
    int nplaca; 
}; 

struct carro cad[2];
int main (void)
{   
    int i;
    for (i=0; i<2; i++)
    {
        printf("\n\n ---------- Insira um novo carro ----------\n");
        printf("\n\nMarca do carro: ");
        fflush(stdin);
        scanf("%s",&cad[i].marca);
    
        printf("\nModelo do carro: ");
        fflush(stdin);
        scanf("%s",&cad[i].modelo);
        
        printf("\nAno do carro: ");
        fflush(stdin);
        scanf("%d",&cad[i].ano);
        
        if ((cad[i].ano>=2000)&&(cad[i].ano<= 2021)&&(cad[i].ano!="%d"))
        {
            printf("\nDigite as letras da placa: ");
            fflush(stdin);
            scanf("%s",&cad[i].lplaca);
            
            printf("\nDigite os numeros da placa: ");
            fflush(stdin);
            scanf("%d",&cad[i].nplaca);         
        
            printf("\n\n\n---------- Dados dos carros ----------\n\n");
            for (i=0; i<2; i++)
            {
                printf("\n\n\n Marca: %s",cad[i].marca);
                printf("\n\n Modelo: %s",cad[i].modelo);
                printf("\n\n Ano: %d",cad[i].ano);
                printf("\n\n Placa: %s-%d",cad[i].lplaca,cad[i].nplaca);
            }
        }else{
            printf("ERRO!! ANO DE FABRICACAO DIVERGENTE");  
            break;
        }   
    }
return(0);
}

1 answer

1


some errors, you used the same variable in the two loops, so to end the second loop i will have the value 2, and the condition of the first for will be satisfied and it ends.

#include <stdio.h>
#include <windows.h>
#include <stdlib.h>

typedef struct /// com typedef so usa a palavra struct uma vez
{              /// depois nao precisa mais usar struct, e
               /// sim apenas o nome que é ( carro )
    char marca [20];
    char modelo[20];
    cha r lplaca[ 8];
    int ano;
    int  nplaca;
}carro;

int  main (void)
{
    carro cad[2];       /// vetor de struct com dois elementos
    int i,j;
    for (i=0; i<2; i++) /// variaVEl i usada nos Dois Loop's
    {
        printf("\n\n ---------- Insira um novo carro ----------\n");
        printf("Marca do carro ---: ");
        fflush(stdin);
        scanf("%s", cad[ i ].marca );

        printf("Modelo do carro --: ");
        fflush(stdin);
        scanf("%s", cad[ i ].modelo);

        printf("Ano do carro -----: ");
        fflush(stdin);
        scanf("%d", & cad[ i ].ano);

        if ( cad[ i ].ano >= 2000 && cad[ i ].ano <= 2021 /* &&
             cad[i].ano != "%d"   */                       ) /// o que esse %d esta fazendo aqui ? ? ?
        {                                                    /// é lógico que sempre será difente
            printf("\nDigite as letras da placa: ");         /// pois em c as comparações são feitas
            fflush(stdin);                                   /// usando a função strcmp e além disso
            scanf("%s", cad[ i ].lplaca);                    /// está comparando inteiro( ano ) com string ( "%d" )

            printf("\nDigite os numeros da placa: ");
            fflush(stdin);
            scanf("%d",&cad[ i ].nplaca);

            printf("\n\n\n---------- Dados dos carros ----------\n\n");
            for (j=0; j<i+1; j++)
                printf("\n\t-------------------\n\             /// apenas uma chama a printf, executa mais rápido
                  \r  %d%c\tMarca -----: %s    \n\
                        \r\tModelo ----: %s    \n\
                        \r\tAno -------: %d    \n\
                        \r\tPlaca -----: %s-%d \n",
                        j + 1 , 167,  cad[j].marca,
                        cad[j].modelo, cad[j].ano ,
                        cad[j].lplaca,cad[j].nplaca);
        }           // j+1 eh o numero do cadastro 
        else     // e o 167 eh ocodigo ASCII do caractere ordinal de primeiro 
        {           // por isso tem esses %d%c ali antes
            printf("ERRO!! ANO DE FABRICACAO DIVERGENTE");
           /// break;     // para que o break ? , ele faz sair do loop for
        }
   }
    return 0;  /// por que os parenteses aqui no valor de retornar do return ? ? ?
}
  • On line 49, for what purpose are these 3 information j + 1 , 167? starting now at c, and I have some doubts

Browser other questions tagged

You are not signed in. Login or sign up in order to post.