Ir ao conteúdo

C Algoritmo de cadastro <>


Ir à solução Resolvido por devair1010,

Posts recomendados

Postado

Boa tarde pessoal! Estou realizando uma atividade de algoritmo em linguagem C com vetores onde eu preciso criar um menu com as seguintes opções: cadastro de cliente, cadastro de pet, imprimir pets, imprimir produtos e sair. Já consegui criar os menus porém estou empacado e não consegui seguir sempre da algum erro, segue o código que já criei e se alguém puder me dar uma orientação eu agradeço:

#include <stdio.h>

#include <stdlib.h>

#include <locale.h>

#include <string.h>




void topo1(){

printf("\n************************************************");

printf("\n* SISTEMA DE CONTROLE DE PET SHOP *");

printf("\n************************************************");

}



void topo2(){

printf("\n************************************************");

printf("\n* SISTEMA DE CONTROLE DE PET SHOP *");

printf("\n* CADASTRO DE CLIENTE *");

printf("\n************************************************");

}



void topo3(){

printf("\n************************************************");

printf("\n* SISTEMA DE CONTROLE DE PET SHOP *");

printf("\n* CADASTRO DE PET *");

printf("\n************************************************");

}



void topo4(){

printf("\n************************************************");

printf("\n* PETCOMERCE *");

printf("\n************************************************");

}



int main() {



int menu, i, opcao;

char enter;



setlocale(LC_ALL,"");



struct ficha_cliente{

char nome[3];



} ficha_cliente;



typedef struct ficha_cliente tcliente;



struct ficha_pet{

int codigo;

char nome_pet[3];



};

typedef struct ficha_pet tpet;



topo2();

printf("\n*CADASTRO DE CLIENTE--------------------opção 1*");

printf("\n*CADASTRO DE PET------------------------opção 2*");

printf("\n*IMPRIMIR PETS--------------------------opção 3*");

printf("\n*IMPRIMIR PRODUTOS----------------------opção 4*");

printf("\n*SAIR-----------------------------------opção 5*");

topo4();

printf("\nESCOLHA A OPÇÃO DESEJADA: ");

scanf("%d",&menu);

    system("clear");

    switch(menu)

    {

case 1:



topo2();

printf("\n*CADASTRO DE CLIENTE------------------------- 1*");

printf("\n*VOLTAR AO MENU PRINCIPAL-------------------- 2*");

printf("\n************************************************");

printf("\nESCOLHA A OPÇÃO DESEJADA: ");

scanf("%d",&menu);

    system("clear");

    switch(menu)

while (opcao>=0 && opcao<=2)

printf("\n*DIGITE O NOME DO CLIENTE: ");

struct ficha_cliente cad;

scanf("%d",&cad.nome);

  

break;



case 2:

topo3();

printf("\n*CADASTRO DE PET----------------------------- 1*");

printf("\n*VOLTAR AO MENU PRINCIPAL-------------------- 2*");

printf("\n************************************************");



break;



case 3:

topo1();

printf("\n* MODULO DE IMPRESSÃO DE PETS *");

printf("\n*IMPRIMIR PETS------------------------------- 1*");

printf("\n*VOLTAR AO MENU PRINCIPAL-------------------- 2*");

printf("\n************************************************");



break;



case 4:

topo1();

printf("\n* MODULO DE IMPRESSÃO PRODUTOS *");

printf("\n*IMPRIMIR PETS------------------------------- 1*");

printf("\n*VOLTAR AO MENU PRINCIPAL-------------------- 2*");

printf("\n************************************************");



break;




}





return 0;

}

 

  • Obrigado 1
Postado

@vini.alves     você criou um codigozao  e na hora que foi testar deu ruim   ,  por isso é melhor ir fazendo aos poucos  e testando  até que esteja funcionando bem , e aí faz mas um pouquinho .  e seu menu tá bem esquisito , para que aquelas função topo ?  não precisa delas não , apenas escreva cada opção com printf e depois o scanf para pegar a opção , e isso dentro de um while e um switch para as decisões de qual função ir de acordo com a escolha escolhida  .

  • Curtir 1
Postado

Não devia perder seu tempo criando um menu ou vários, antes do programa estar pronto. Isso não leva a nada e só faz você perder tempo na hora de testar o programa.

 

Pense primeiro nos dados e escreva as partes em torno dos dados. 

  • Curtir 2
Postado
struct ficha_cliente
{
    char nome[3];
}   ficha_cliente;
typedef struct ficha_cliente tcliente;

struct ficha_pet
{
    int codigo;
    char nome_pet[3];
};
typedef struct ficha_pet tpet;

Então um pet pode ter um nome de ate 3 letras. ok para Rex e Toy ao menos

Mas é só isso?

E o cliente também? Só 3 letras. E nenhum outro campo?

  • Curtir 2
  • Haha 1
Postado

@arfneto verdade eu entendi errado essa parte, no caso eu confundi com o vetor.

na verdade seria um vetor que armazene 3 clientes e outro que armazene 3 pets

  • Curtir 1
Postado

@vini.alves o vetor é declarado para o novo tipo da struct já que estamos falando desse assunto veja um pouco sobre os tipos

//Existem quatro tipos de struct: 

//Struct com tipo logo apos a chave. (apenas uma unica estrutura)
struct estrutura1{
	int a;
	int b;
}var1; //aqui cria-se um novo tipo, poderia ser vetor.
var1.a=3;
printf("%d\n",var1.a);



//Struct com a variável depois. (apenas uma unica estrutura)
struct estrutura2{
	int a;
	int b;
};
struct estrutura2 var2;//aqui cria-se o novo tipo var2, poderia ser vetor.
var2.a=5;
var2.b=7;
printf("%d %d\n",var2.a,var2.b);



//Struct typedef com o tipo logo apos a chave.
typedef struct{
	int a;
	int b;
}var3; //aqui cria-se um novo tipo

//Observe que nao pode fazer var1 x,y; nem var2 x,y; mas com struct typedef pode.
//ou seja cada variavel que criar sera outra estrutura.

var3 x,y;//aqui foi criado 2 variavel do tipo var3 cada variavel representa 1 struct.
x.a=1;
y.a=2;
printf("%d %d\n",x.a,y.a);



//Struct com typedef na variavel
struct estrutura4{
	int a;
	int b;
};
typedef struct estrutura4 novo;//tipo e variavel na mesma linha.
//observe que agora podemos declarar novas variaveis para a mesma estrutura.
novo struct1, struct2, struct3;
struct1.a=8;
struct2.a=10;
struct3.a=20;
printf("%d %d %d\n",struct1.a,struct2.a,struct3.a);

 

  • Curtir 3
Postado
5 minutos atrás, vini.alves disse:

erdade eu entendi errado essa parte, no caso eu confundi com o vetor.

na verdade seria um vetor que armazene 3 clientes e outro que armazene 3 pets

 

Você está declarando ao contrário. Você não declara uma struct com vetores. Declara um vetor com structs. Esse é o objetivo e isso é muito mais fácil.

 

Comece seu programa pelos dados. Sempre. Nunca, mas nunca mesmo por um menu. Não leva a nada. Não há dúvida de que um printf() sai na tela, um scanf() tenta ler algo, um fgts()...
Você vai achar que fez algo, mas não fez.

  • Curtir 2
Postado
1 hora atrás, vini.alves disse:

@arfneto entendi estou tentando fazer correções

 

Vou te mostrar um exemplo que digitei em cima de seu programa

 

Veja os dados como podem contar uma história ANTES de escrever o programa:


typedef struct
{
	int  id;
	char nome[30];
	char telefone[20];
	int  pet[8];
}   Cliente;

typedef struct
{
	int id;
	char nome[30];
	char raca[30];
	int  humano[8];
}	Pet;

Você tem pets e clientes. Um mínimo de info só pra ter um sentido.

  • os caes tem um vetor para os donos, os donos tem um vetor para os caes. Assim se uma mulher deixa o cão e o marido vem buscar esta coberto :) tem os dois
  • um cliente pode ter mais de um cão


Como usar isso, ANTES de uma p$%%a de um menu

	Cliente  loja1[50];
	Pet      pet1[50];

uns clientes e pets

 

Como criar uns, ANTES de um printf() infeliz e um scanf() que não tem & uma linha que pula sozinha, nada disso:


	const Pet Rex = {
		.id = 1,
		.nome = "Rex",
		.raca = "york",
		.humano = { 1,2 }
	};

	const Pet Toy = {
		.id = 2,
		.nome = "Thor",
		.raca = "Pastor",
		.humano = { 3 }
	};

	const Cliente Joao1 = {
		1,
		"Jhonny Cash",
		"999-123-456",
		{ 1 }
	};

	const Cliente June = {
		.id = 2,
		.nome = "June Carter",
		.telefone = "999-123-456",
		.pet = { 1 }
	};

	const Cliente Will = {
		.id = 3,
		.nome = "Willie Nelson",
		.telefone = "999-123-456",
		.pet = { 2 }
	};

Olha só: dois pets e 3 clientes. já dá pra terminar o programa. antes do menu. Note que você pode iniciar os campos direto pelo nome. E nem precisa colocar todos. Ou pode por na ordem como no primeiro.

 

Como colocar essa m#$%a nos vetores pra testar?

	loja1[0] = Joao1;
	loja1[1] = June;
	loja1[2] = Will;

	pet1[0] = Rex;
	pet1[1] = Toy;

Simples, não?

 

E como acessar um desses caras?


	printf("Pet: %s id %d id dono: %d\n",
		Rex.nome, Rex.id, Rex.humano[0]);

	printf("Cliente: %s F: %s id: %d id pet: %d\n",
		loja1[0].nome,
		loja1[0].telefone,
		loja1[0].id,
		loja1[0].pet[0]
		);

Note que assim você até pode saber quem é o dono do Rex, quais os cães do Jhonny e por aí vai. E nem começou o programa ainda.

 

E funciona?  Claro.

 

Pet: Rex id 1 id dono: 1
Cliente: Jhonny Cash F: 999-123-456 id: 1 id pet: 1

 

Teste esse

#include <string.h>
#include <stdio.h>

typedef struct
{
	int  id;
	char nome[30];
	char telefone[20];
	int  pet[8];
}   Cliente;

typedef struct
{
	int id;
	char nome[30];
	char raca[30];
	int  humano[8];
}	Pet;

int main(int argc, char** argv)
{
	Cliente  loja1[50];
	Pet      pet1[50];

	const Pet Rex = {
		.id = 1,
		.nome = "Rex",
		.raca = "york",
		.humano = { 1,2 }
	};

	const Pet Toy = {
		.id = 2,
		.nome = "Thor",
		.raca = "Pastor",
		.humano = { 3 }
	};

	const Cliente Joao1 = {
		1,
		"Jhonny Cash",
		"999-123-456",
		{ 1 }
	};

	const Cliente June = {
		.id = 2,
		.nome = "June Carter",
		.telefone = "999-123-456",
		.pet = { 1 }
	};

	const Cliente Will = {
		.id = 3,
		.nome = "Willie Nelson",
		.telefone = "999-123-456",
		.pet = { 2 }
	};

	loja1[0] = Joao1;
	loja1[1] = June;
	loja1[2] = Will;

	pet1[0] = Rex;
	pet1[1] = Toy;

	printf("Pet: %s id %d id dono: %d\n",
		Rex.nome, Rex.id, Rex.humano[0]);

	printf("Cliente: %s F: %s id: %d id pet: %d\n",
		loja1[0].nome,
		loja1[0].telefone,
		loja1[0].id,
		loja1[0].pet[0]
		);
	return 0;
};	// main()

Apenas control-c control-v para copiar os caras, digita em cima dos dados e aumenta a base, um ou dois de cada. E faz o programa.

 

Depois escreve um menu, le os dados e tal.

 

Se possível leia o menu do disco porque já vem alinhadinho :D porque você pode digitar no próprio IDE afinal. E o a opção do menu é o retorno da função que mostra o menu, só com uma letrinha...

 

E não perde tempo

 

 

  • Curtir 2
  • Obrigado 1
Postado
2 horas atrás, arfneto disse:

 

Vou te mostrar um exemplo que digitei em cima de seu programa

 

Veja os dados como podem contar uma história ANTES de escrever o programa:



typedef struct
{
	int  id;
	char nome[30];
	char telefone[20];
	int  pet[8];
}   Cliente;

typedef struct
{
	int id;
	char nome[30];
	char raca[30];
	int  humano[8];
}	Pet;

Você tem pets e clientes. Um mínimo de info só pra ter um sentido.

  • os caes tem um vetor para os donos, os donos tem um vetor para os caes. Assim se uma mulher deixa o cão e o marido vem buscar esta coberto :) tem os dois
  • um cliente pode ter mais de um cão


Como usar isso, ANTES de uma p$%%a de um menu


	Cliente  loja1[50];
	Pet      pet1[50];

uns clientes e pets

 

Como criar uns, ANTES de um printf() infeliz e um scanf() que não tem & uma linha que pula sozinha, nada disso:



	const Pet Rex = {
		.id = 1,
		.nome = "Rex",
		.raca = "york",
		.humano = { 1,2 }
	};

	const Pet Toy = {
		.id = 2,
		.nome = "Thor",
		.raca = "Pastor",
		.humano = { 3 }
	};

	const Cliente Joao1 = {
		1,
		"Jhonny Cash",
		"999-123-456",
		{ 1 }
	};

	const Cliente June = {
		.id = 2,
		.nome = "June Carter",
		.telefone = "999-123-456",
		.pet = { 1 }
	};

	const Cliente Will = {
		.id = 3,
		.nome = "Willie Nelson",
		.telefone = "999-123-456",
		.pet = { 2 }
	};

Olha só: dois pets e 3 clientes. já dá pra terminar o programa. antes do menu. Note que você pode iniciar os campos direto pelo nome. E nem precisa colocar todos. Ou pode por na ordem como no primeiro.

 

Como colocar essa m#$%a nos vetores pra testar?


	loja1[0] = Joao1;
	loja1[1] = June;
	loja1[2] = Will;

	pet1[0] = Rex;
	pet1[1] = Toy;

Simples, não?

 

E como acessar um desses caras?



	printf("Pet: %s id %d id dono: %d\n",
		Rex.nome, Rex.id, Rex.humano[0]);

	printf("Cliente: %s F: %s id: %d id pet: %d\n",
		loja1[0].nome,
		loja1[0].telefone,
		loja1[0].id,
		loja1[0].pet[0]
		);

Note que assim você até pode saber quem é o dono do Rex, quais os cães do Jhonny e por aí vai. E nem começou o programa ainda.

 

E funciona?  Claro.

 


Pet: Rex id 1 id dono: 1
Cliente: Jhonny Cash F: 999-123-456 id: 1 id pet: 1

 

Teste esse


#include <string.h>
#include <stdio.h>

typedef struct
{
	int  id;
	char nome[30];
	char telefone[20];
	int  pet[8];
}   Cliente;

typedef struct
{
	int id;
	char nome[30];
	char raca[30];
	int  humano[8];
}	Pet;

int main(int argc, char** argv)
{
	Cliente  loja1[50];
	Pet      pet1[50];

	const Pet Rex = {
		.id = 1,
		.nome = "Rex",
		.raca = "york",
		.humano = { 1,2 }
	};

	const Pet Toy = {
		.id = 2,
		.nome = "Thor",
		.raca = "Pastor",
		.humano = { 3 }
	};

	const Cliente Joao1 = {
		1,
		"Jhonny Cash",
		"999-123-456",
		{ 1 }
	};

	const Cliente June = {
		.id = 2,
		.nome = "June Carter",
		.telefone = "999-123-456",
		.pet = { 1 }
	};

	const Cliente Will = {
		.id = 3,
		.nome = "Willie Nelson",
		.telefone = "999-123-456",
		.pet = { 2 }
	};

	loja1[0] = Joao1;
	loja1[1] = June;
	loja1[2] = Will;

	pet1[0] = Rex;
	pet1[1] = Toy;

	printf("Pet: %s id %d id dono: %d\n",
		Rex.nome, Rex.id, Rex.humano[0]);

	printf("Cliente: %s F: %s id: %d id pet: %d\n",
		loja1[0].nome,
		loja1[0].telefone,
		loja1[0].id,
		loja1[0].pet[0]
		);
	return 0;
};	// main()

Apenas control-c control-v para copiar os caras, digita em cima dos dados e aumenta a base, um ou dois de cada. E faz o programa.

 

Depois escreve um menu, le os dados e tal.

 

Se possível leia o menu do disco porque já vem alinhadinho :D porque você pode digitar no próprio IDE afinal. E o a opção do menu é o retorno da função que mostra o menu, só com uma letrinha...

 

E não perde tempo

 

 

@arfneto Deixa eu ver se  entendi certo... no caso em cima do exemplo que mostrou eu faria os menus que preciso tipo opção 1 pra cadastrar cliente, 2 cadastrar pet e assim sucessivamente. seria isso? 

é que sou iniciante na programação e estou aprendendo agora o C

  • Curtir 1
Postado
28 minutos atrás, vini.alves disse:

Deixa eu ver se  entendi certo... no caso em cima do exemplo que mostrou eu faria os menus que preciso tipo opção 1 pra cadastrar cliente, 2 cadastrar pet e assim sucessivamente. seria isso? 

é que sou iniciante na programação e estou aprendendo agora o C

 

Como eu disse, primeiro os dados. Defina algo que faça sentido. Eu mostrei a diferença. cadastrar os dados não significa nada além de uma série de leituras. Seu enunciado não parece ter nenhum processamento. Nada. Apenas defina os dados e escreva um a um os processos de que precisa..

 

Você tem um livro de C? Conhece alguma outra linguagem? Já fez alguns programas antes?

 

Que são os produtos que vai listar? Nada falou sobre produtos

 

Você entendeu o programa que te mostrei? Rodou em seu computador? Ficou claro pra você?

 

 

 

 

  • Curtir 2
  • Solução
Postado

@[email protected]    agora que observei melhor seu código , entendi aquelas funções e estão certas , e seu código poderia ser assim  :

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <string.h>
typedef struct ficha_cliente{ // colocado aqui antes da main poderá ser acessada em qq lugar do prog
    char nome[30];
}ficha_cliente;
ficha_cliente tcliente[100];  // pode armazenar até 100 clientes

typedef struct ficha_pet{     // colocado aqui antes da main poderá ser acessada em qq lugar do prog
    int codigo;
    char nome_pet[23];
}ficha_pet;
ficha_pet tpet[100];          // pode armazenar até 100 pets

void topo1(){
    printf("\n************************************************");
    printf("\n* SISTEMA DE CONTROLE DE PET SHOP *");
    printf("\n************************************************");
}
void topo2(){
    printf("\n************************************************");
    printf("\n* SISTEMA DE CONTROLE DE PET SHOP *");
    printf("\n* CADASTRO DE CLIENTE *");
    printf("\n************************************************");
}
void topo3(){
    printf("\n************************************************");
    printf("\n* SISTEMA DE CONTROLE DE PET SHOP *");
    printf("\n* CADASTRO DE PET *");
    printf("\n************************************************");
}
void topo4(){
    printf("\n************************************************");
    printf("\n* PETCOMERCE *");
    printf("\n************************************************");
}
int cont_c,cont_p;
int main(){
    int menu, i, opcao;
    char enter;
    setlocale(LC_ALL,"");
    do{
        topo2();
        printf("\n* CADASTRO DE CLIENTE ------------------ opção 1 *");
        printf("\n* CADASTRO DE PET ---------------------- opção 2 *");
        printf("\n* IMPRIMIR PETS ------------------------ opção 3 *");
        printf("\n* IMPRIMIR PRODUTOS -------------------- opção 4 *");
        printf("\n* IMPRIMIR CLIENTES -------------------- opção 5 *");
        printf("\n* SAIR --------------------------------- opção 6 *");
        topo4();
        printf("\nESCOLHA A OPÇÃO DESEJADA: ");
        fflush(stdin);
        scanf("%d",&menu);
        system("cls");
        switch(menu){
        case 1:
            topo2();
            printf("\n*CADASTRO DE CLIENTE------------------------- 1*");
            printf("\n*VOLTAR AO MENU PRINCIPAL-------------------- 2*");
            printf("\n************************************************");
            printf("\nESCOLHA A OPÇÃO DESEJADA: ");
            scanf("%d",&menu);
            system("cls");
            do{
                printf("\n*DIGITE O NOME DO CLIENTE: ");
                scanf("%s",tcliente[cont_c].nome);
                cont_c++;
                printf("Outro Cadastro S/N\n");
            }while( toupper((char)getch())!='N');
            break;
        case 2:
            topo3();
            printf("\n*CADASTRO DE PET----------------------------- 1*");
            printf("\n*VOLTAR AO MENU PRINCIPAL-------------------- 2*");
            printf("\n************************************************\n");
            do{
                printf("o nome ");
                scanf("%s",tpet[cont_p].nome_pet);
                cont_p++;
                printf("Outro Cadastro S/N\n");
            }while( toupper((char)getch())!='N');
            break;
        case 3:
            topo1();
            printf("\n* MODULO DE IMPRESSÃO DE PETS *");
            printf("\n*IMPRIMIR PETS------------------------------- 1*");
            printf("\n*VOLTAR AO MENU PRINCIPAL-------------------- 2*");
            printf("\n************************************************\n");
            for(i=0;i<cont_p;i++){
                printf("Nome %3d ---: %s\n",i+1,tpet[i].nome_pet);
            }
            system("pause");
            break;
        case 4:
            topo1();
            printf("\n* MODULO DE IMPRESSÃO PRODUTOS *");
            printf("\n*IMPRIMIR PETS------------------------------- 1*");
            printf("\n*VOLTAR AO MENU PRINCIPAL-------------------- 2*");
            printf("\n************************************************\n");
            break;
        case 5:
            printf("\n* MODULO DE IMPRESSÃO CLIENTES *");
            printf("\n*IMPRIMIR CLIENTES -------------------------- 1*");
            printf("\n*VOLTAR AO MENU PRINCIPAL ------------------- 2*");
            printf("\n************************************************\n");
            for(i=0;i<cont_c;i++){
                printf("Nome %3d --: %s\n",i+1,tcliente[i].nome);
            }
            system("pause");
        }
    }while( menu != 6 );
    return 32768;
}

 

  • Curtir 1
Postado

@arfneto eu comecei no visualg.. não entendi muito bem o que você mandou, pelo que entendi em cima daquilo eu crio o menus é isso? no meu computador rodou como na imagem anexa

exemplo.jpg

 

 

 

adicionado 22 minutos depois
9 horas atrás, devair1010 disse:

@[email protected]    agora que observei melhor seu código , entendi aquelas funções e estão certas , e seu código poderia ser assim  :


#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <string.h>
typedef struct ficha_cliente{ // colocado aqui antes da main poderá ser acessada em qq lugar do prog
    char nome[30];
}ficha_cliente;
ficha_cliente tcliente[100];  // pode armazenar até 100 clientes

typedef struct ficha_pet{     // colocado aqui antes da main poderá ser acessada em qq lugar do prog
    int codigo;
    char nome_pet[23];
}ficha_pet;
ficha_pet tpet[100];          // pode armazenar até 100 pets

void topo1(){
    printf("\n************************************************");
    printf("\n* SISTEMA DE CONTROLE DE PET SHOP *");
    printf("\n************************************************");
}
void topo2(){
    printf("\n************************************************");
    printf("\n* SISTEMA DE CONTROLE DE PET SHOP *");
    printf("\n* CADASTRO DE CLIENTE *");
    printf("\n************************************************");
}
void topo3(){
    printf("\n************************************************");
    printf("\n* SISTEMA DE CONTROLE DE PET SHOP *");
    printf("\n* CADASTRO DE PET *");
    printf("\n************************************************");
}
void topo4(){
    printf("\n************************************************");
    printf("\n* PETCOMERCE *");
    printf("\n************************************************");
}
int cont_c,cont_p;
int main(){
    int menu, i, opcao;
    char enter;
    setlocale(LC_ALL,"");
    do{
        topo2();
        printf("\n* CADASTRO DE CLIENTE ------------------ opção 1 *");
        printf("\n* CADASTRO DE PET ---------------------- opção 2 *");
        printf("\n* IMPRIMIR PETS ------------------------ opção 3 *");
        printf("\n* IMPRIMIR PRODUTOS -------------------- opção 4 *");
        printf("\n* IMPRIMIR CLIENTES -------------------- opção 5 *");
        printf("\n* SAIR --------------------------------- opção 6 *");
        topo4();
        printf("\nESCOLHA A OPÇÃO DESEJADA: ");
        fflush(stdin);
        scanf("%d",&menu);
        system("cls");
        switch(menu){
        case 1:
            topo2();
            printf("\n*CADASTRO DE CLIENTE------------------------- 1*");
            printf("\n*VOLTAR AO MENU PRINCIPAL-------------------- 2*");
            printf("\n************************************************");
            printf("\nESCOLHA A OPÇÃO DESEJADA: ");
            scanf("%d",&menu);
            system("cls");
            do{
                printf("\n*DIGITE O NOME DO CLIENTE: ");
                scanf("%s",tcliente[cont_c].nome);
                cont_c++;
                printf("Outro Cadastro S/N\n");
            }while( toupper((char)getch())!='N');
            break;
        case 2:
            topo3();
            printf("\n*CADASTRO DE PET----------------------------- 1*");
            printf("\n*VOLTAR AO MENU PRINCIPAL-------------------- 2*");
            printf("\n************************************************\n");
            do{
                printf("o nome ");
                scanf("%s",tpet[cont_p].nome_pet);
                cont_p++;
                printf("Outro Cadastro S/N\n");
            }while( toupper((char)getch())!='N');
            break;
        case 3:
            topo1();
            printf("\n* MODULO DE IMPRESSÃO DE PETS *");
            printf("\n*IMPRIMIR PETS------------------------------- 1*");
            printf("\n*VOLTAR AO MENU PRINCIPAL-------------------- 2*");
            printf("\n************************************************\n");
            for(i=0;i<cont_p;i++){
                printf("Nome %3d ---: %s\n",i+1,tpet[i].nome_pet);
            }
            system("pause");
            break;
        case 4:
            topo1();
            printf("\n* MODULO DE IMPRESSÃO PRODUTOS *");
            printf("\n*IMPRIMIR PETS------------------------------- 1*");
            printf("\n*VOLTAR AO MENU PRINCIPAL-------------------- 2*");
            printf("\n************************************************\n");
            break;
        case 5:
            printf("\n* MODULO DE IMPRESSÃO CLIENTES *");
            printf("\n*IMPRIMIR CLIENTES -------------------------- 1*");
            printf("\n*VOLTAR AO MENU PRINCIPAL ------------------- 2*");
            printf("\n************************************************\n");
            for(i=0;i<cont_c;i++){
                printf("Nome %3d --: %s\n",i+1,tcliente[i].nome);
            }
            system("pause");
        }
    }while( menu != 6 );
    return 32768;
}

 

testei a correção que postou e é isso mesmo que eu estava tentando fazer, olhando as alterações vi que criei os menus mais com struct errada, sem ficha e sem vetor pra seguir o programa.. nesse caso eu poderia até criar outra struct e ficha pra adicionar outro menu que funcionaria né?

  • Curtir 1
Postado

@arfneto no caso a struct seria um registro certo?
nome com [30] caracter
telefone com [20] caracter
pet com [8] caracter

 

cliente loja1 [50] seria vetor que armazena ate 50 clientes
pet1 [50] seria vetor que armazena 50 clientes

 

as constantes já são cadastros realizados? e depois em cima disso eu posso criar os menus
que preciso  com essas informaçoes criando variaveis e chamando as structs e vetores? seria mais ou menos isso

  • Curtir 3
Postado

O que eu te mostrei é um exemplo de que é melhor focar nos dados antes. 
E te mostrei como acessar, declarar e inicializar dados dentro de estruturas e vetores de estruturas.

E de como vincular seus dados, como um pet com vários donos e um dono com vários pets.

E de uma razão para ANTES de tudo pensar no programa e nos dados, porque menus nada acrescentam.

 

Claro, esse exercício é muito trivial então não tem na verdade qualquer processamento exceto manter os cadastros.

Você ainda nada disse sobre os tai produtos...
 

Entendeu isso?

adicionado 1 minuto depois
3 minutos atrás, vini.alves disse:

as constantes já são cadastros realizados? e depois em cima disso eu posso criar os menus
que preciso  com essas informaçoes criando variaveis e chamando as structs e vetores?

 

exato. Acho que já pode listar os cadastros por exemplo. Ou apagar um pet ou um cliente...

  • Curtir 2
Postado

@arfneto Agora eu entendi... em relação ao produto seria da seguinte forma:

 

Primeiro - realizo o cadastro do cliente

Segundo - realizo cadastro do pet

Terceiro - realizo o cadastro do produto que o pet  utilizou ou foi comprado como por exemplo shampoo, ou coleira, ração 

Quarto - imprimo o pet

Quinto - Imprimo o cliente

Sexto - sai do programa

 

O codigo que eu criei tinha apenas os menus sem as outras informaçoes principais

  • Curtir 1
Postado

isso quer dizer que o mesmo que faz para os clientes deve fazer para os pets E produtos. Defina outra struct para os produtos

 

E escreva funções que executem as tarefas, usando os dados que você já tem.

Postado
Em 11/06/2020 às 04:04, devair1010 disse:

#include <stdio.h> #include <stdlib.h> #include <locale.h> #include <string.h> typedef struct ficha_cliente{ // colocado aqui antes da main poderá ser acessada em qq lugar do prog char nome[30]; }ficha_cliente; ficha_cliente tcliente[100]; // pode armazenar até 100 clientes typedef struct ficha_pet{ // colocado aqui antes da main poderá ser acessada em qq lugar do prog int codigo; char nome_pet[23]; }ficha_pet; ficha_pet tpet[100]; // pode armazenar até 100 pets void topo1(){ printf("\n************************************************"); printf("\n* SISTEMA DE CONTROLE DE PET SHOP *"); printf("\n************************************************"); } void topo2(){ printf("\n************************************************"); printf("\n* SISTEMA DE CONTROLE DE PET SHOP *"); printf("\n* CADASTRO DE CLIENTE *"); printf("\n************************************************"); } void topo3(){ printf("\n************************************************"); printf("\n* SISTEMA DE CONTROLE DE PET SHOP *"); printf("\n* CADASTRO DE PET *"); printf("\n************************************************"); } void topo4(){ printf("\n************************************************"); printf("\n* PETCOMERCE *"); printf("\n************************************************"); } int cont_c,cont_p; int main(){ int menu, i, opcao; char enter; setlocale(LC_ALL,""); do{ topo2(); printf("\n* CADASTRO DE CLIENTE ------------------ opção 1 *"); printf("\n* CADASTRO DE PET ---------------------- opção 2 *"); printf("\n* IMPRIMIR PETS ------------------------ opção 3 *"); printf("\n* IMPRIMIR PRODUTOS -------------------- opção 4 *"); printf("\n* IMPRIMIR CLIENTES -------------------- opção 5 *"); printf("\n* SAIR --------------------------------- opção 6 *"); topo4(); printf("\nESCOLHA A OPÇÃO DESEJADA: "); fflush(stdin); scanf("%d",&menu); system("cls"); switch(menu){ case 1: topo2(); printf("\n*CADASTRO DE CLIENTE------------------------- 1*"); printf("\n*VOLTAR AO MENU PRINCIPAL-------------------- 2*"); printf("\n************************************************"); printf("\nESCOLHA A OPÇÃO DESEJADA: "); scanf("%d",&menu); system("cls"); do{ printf("\n*DIGITE O NOME DO CLIENTE: "); scanf("%s",tcliente[cont_c].nome); cont_c++; printf("Outro Cadastro S/N\n"); }while( toupper((char)getch())!='N'); break; case 2: topo3(); printf("\n*CADASTRO DE PET----------------------------- 1*"); printf("\n*VOLTAR AO MENU PRINCIPAL-------------------- 2*"); printf("\n************************************************\n"); do{ printf("o nome "); scanf("%s",tpet[cont_p].nome_pet); cont_p++; printf("Outro Cadastro S/N\n"); }while( toupper((char)getch())!='N'); break; case 3: topo1(); printf("\n* MODULO DE IMPRESSÃO DE PETS *"); printf("\n*IMPRIMIR PETS------------------------------- 1*"); printf("\n*VOLTAR AO MENU PRINCIPAL-------------------- 2*"); printf("\n************************************************\n"); for(i=0;i<cont_p;i++){ printf("Nome %3d ---: %s\n",i+1,tpet[i].nome_pet); } system("pause"); break; case 4: topo1(); printf("\n* MODULO DE IMPRESSÃO PRODUTOS *"); printf("\n*IMPRIMIR PETS------------------------------- 1*"); printf("\n*VOLTAR AO MENU PRINCIPAL-------------------- 2*"); printf("\n************************************************\n"); break; case 5: printf("\n* MODULO DE IMPRESSÃO CLIENTES *"); printf("\n*IMPRIMIR CLIENTES -------------------------- 1*"); printf("\n*VOLTAR AO MENU PRINCIPAL ------------------- 2*"); printf("\n************************************************\n"); for(i=0;i<cont_c;i++){ printf("Nome %3d --: %s\n",i+1,tcliente[i].nome); } system("pause"); } }while( menu != 6 ); return 32768; }

 

testando o algorítimo ele diz que "toupper" não foi declarado no escopo, poderia me explicar. 

Postado
23 minutos atrás, Daniel Lelis disse:

testando o algorítimo ele diz que "toupper" não foi declarado no escopo, poderia me explicar

 

um pouco ruim de ler isso hein? Porque não colocou no bloco de código como os outros?

 

Você entendeu o que te expliquei? Tentou rodar ao menos?

 

Tem um livro de C? Sua escola não tem um abiblioteca online que você pode acessar? Arrume um livro. É importante.

 

E siga as mensagens...

 

Sabe o que é toupper()? pra que serve?

Isso não faz parte da linguagem. Deve estar el alguma biblioteca. Procurou por isso?

 

touuper() fica em ctypes.h ...

Procurou algum exemplo?
 

image.png.4fa7a7b7748a325a5d84cf30e1a65481.png

 

como esse em https://www.tutorialspoint.com/c_standard_library/c_function_toupper.htm

 

 

adicionado 0 minutos depois

Eu te disse pra focar nos dados. E te mostrei um exemplo que já funciona. Não fez nada com isso?

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!