' Olá pessoal do "scriptbrasil", estou tendo um problema com um trabalho que preciso entregar urgentemente, escrevi o codigo abaixo mas estou com algumas duvidas sobre duas falhas que estão me incomodando e ainda não consegui achar um modo de corrigir... ' 1° Ao compilar o codigo ele gera automaticamente um codigo para os campos requisitados (placa e nome) tipo abaixo: Posição na Fila : 1 (gera automatico) N° Placa Veiculo : WED5594 Nome Motorista : Fulano - agora começa o problema, não consegui limitar a quantidade de digitos com um mensagem de notificação acaso alguém queira realmente bagunçar colocando varios digitos um valor qualquer q fuja do padrão de uma placa veicular, qd isso acontece ele simplesmente da erro critico acima de varios digitos, para exibir a quantidade de 7 digitos é simples, mas eu queria q ele desse alguma notificação do tipo "numera da placa invalido" ou algo assim.... ' 2° No meio das insersões não posso adicionar espaço entre os caracteres, ex: Placa: WED 5594 ou Motorista: Fulano Silva - quando é colocado algum espaço entre os caracteres ele separa-os para os campos seguintes, como se a primeira palavra fosse salvar em um campo e a palavra separada pelo espaço para o campo posterior... ..... já cozinhei a cabeça e não consegui melhorar isso. ' Estou pedindo a ajuda de vocês para poder corrigir essas falhas, o codigo esta abaixo e desde já agradeço por qualquer ajuda. __________________________________________________________________ #include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
struct fila{
int Posicao;
char Placa [8];
char Motorista[20];
struct fila* prox;
};
typedef fila Fila;
int main(){
Fila *f;
int op, posicao;
char placa[8];
char motorista[20];
Fila* inicializa (void);
void libera (Fila *a);
Fila* insere_ultimo(Fila *a);
void imprime (Fila *l);
int vazia (Fila *a);
Fila* retira_primeiro (Fila *a);
Fila* altera_fila (Fila *a);
posicao=1;
f = inicializa();
do{
system("CLS");
system("title Sistema - Organizador de Fila");
system("color 0e");
printf("\n ======= MENU GERAL ======");
printf("\n| Organizador de Fila |");
printf("\n =========================");
printf("\n| 1 Incluir Motorista(s) |");
printf("\n| 2 Exibir Motorista(s) |");
printf("\n| 3 Retirar Motorista(s) |");
printf("\n| 4 SAIR |");
printf("\n =========================");
printf("\n\nEscolha a opcao desejada: ");
scanf("%d",&op);
switch (op){
case 1:
printf("\nPosicao: %d\n", posicao);
f=insere_ultimo(f);
posicao++;
break;
case 2:
imprime(f);
posicao--;
break;
case 3:
f=retira_primeiro(f);
break;
case 4:
printf("\nDeseja realmente sair ( 4-Sim , 1-não ) ? ");
scanf("%d",&op);
break;
default:
printf("Opcao Invalida! \n");
system("pause>nul");
break;
}
}while (op!=4);
libera(f);
return 0;
}
Fila* inicializa (void){
return NULL;
}
Fila* insere_ultimo (Fila* a){
Fila* p = a;
Fila *novo = (Fila*) malloc(sizeof(Fila));
char placa [8];
char motorista [20];
printf("Informe o Numero da Placa: ");
scanf("%s",&placa);
printf("Informe o Nome do Motorista: ");
scanf("%s",&motorista);
strcpy(novo->Placa,placa);
strcpy(novo->Motorista,motorista);
novo->prox=NULL;
if (a==NULL){
a=novo;
}
else{
while (p->prox!=NULL){
p=p->prox;
}
p->prox = novo;
}
system("pause>nul");
return a;
}
void imprime (Fila* a){
Fila* p = a;
int s=1;
if (p!=NULL){
while (p!=NULL){
printf("\nPosicao %d: \n", s);
printf("Placa = %s \n",p->Placa);
printf("Motorista = %s\n", p->Motorista);
s++;
p = p->prox;
};
}
else{
printf("\nFila Vazia! \n");
}
system("pause>nul");
}
Fila* retira_primeiro (Fila* a) {
Fila* p = a;
if (a != NULL){
printf("\n Placa = %s ", p->Placa);
printf("\n Motorista = %s ", p->Motorista);
printf("\n < Retirado > \n");
free(p);
if (a->prox!=NULL){
p = a->prox;
printf("\n -Proximo Motorista: ");
printf("\n Placa = %s ", p->Placa);
printf("\n Motorista = %s \n", p->Motorista);
}
else{
printf("\nNao há mais motoristas cadastrados! \n");
system("pause>nul");
return NULL;
}
}
else {
printf("\n Fila Vazia! \n");
system("pause>nul");
return NULL;
}
system("pause>nul");
return p;
}
void libera (Fila* a){
Fila* p = a;
Fila* t;
if (p!=NULL){
t = p->prox;
while (p != NULL) {
t = p->prox;
free(p);
p = t;
}
}
}