Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Kenny Nascimento

Como faço pra esse sistema pegar do jeito q eu quero...

Recommended Posts

n consigo fazer esse sistema funcionar direito ja to esse fim de semana todo tentando e n da certo.....quero q ele cadastre...consulte....e exclua....mas toda vez n consigo fazer a bost da comparação entre string funcionar....ja to quase quebrando meu pc....Plz help-me....

 

 

aki o código:

 

 

#include<stdio.h>

#include<stdlib.h>

main ()

{

int a, b, c, rep, ag, kr;

char li[50][10], liv[50][10], emp[50][10], status[50]="disponivel", sts[50]="indisponivel";

do{

printf ("\n\n\n\n\nSistema de biblioteca\n\n\n\n");

printf ("\n1-cadastrar");

printf ("\n2-disponiveis");

printf ("\n3-consultar");

printf ("\n4-livros emprestados");

printf ("\n5-emprestar");

printf ("\nescolha suas opcoes: ");

scanf ("\n%d", &ag);

switch (ag){

case 1://cadastro

printf ("\n\n\n\n\ncadastro\n\n\n\n\n");

for (a=1;a<6;a++){

printf ("\ndigite o nome do livro: \n");

scanf ("%s", &li[a]);

status;

}

break;

case 2://livros disponiveis

if (strcmp(liv[a],sts)){

for (b=1;b<a;b++){

printf ("\naki: %s", li);

}

}else{

for (b=1;b<a;b++){

printf ("\naki: %s", li[b+1]);

}

}

break;

case 3://consultar

 

printf ("\ndigite o nome do livro: ");

scanf ("%s", &liv[a]);

if (strcmp(liv[a],sts)){

printf ("O livro esta disponivel");

 

 

}else{

printf ("O livro esta indisponivel");

 

}

break;

case 4://livros emprestados

if (strcmp(liv[a],status)){

for (b=1;b<a;b++){

 

printf ("\naki: %s", li[b-1]);

}

break;

case 5://emprestar

printf ("Digite o nome do livro desejado para o emprestimo: ");

scanf ("%s", &emp[a]);

if (!strcmp(emp[a],li[a])){

printf ("livro invalido");

}else{

kr=a+1;

printf ("o livro desejado é: %s", li[a]);

sts;

}

break;

}

}

printf ("\ndigite 0 para sair ");

scanf ("\n%d", &rep);

}while(rep!=0);

getch();

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Kenny Nascimento,

 

Tente colocar o "\0" no final das string. Pode ser este o problema.

 

DICA:

 

Quando for postar código em seu tópicos, utilize a

TAG CODE

assim poderá deixar seu código identado e organizado facilitando ao usuário que estiver disposto a ajudá-lo.

 

Espero ter ajudado, FLW! :grin:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro é uma boa idéia compilar o código com as flags de verificação ativadas. No GCC duas que eu uso são -Wall e -Wextra.

O compilador vai imprimir um monte de mensagens de aviso e de erro. A partir dessas mensagens você pode consertar o código.

 

Note que você não redefine variável a depois de ler os livros, e usa ela na consulta e na listagem dos livros. Se você leu até a posição 5 (e arrays começam no índice zero), o loop termina quando a==6 e você tenta comparar o lixo que existe na posição 6 com algo. 100% de certeza que não vai dar certo mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

 

Beuleal, sugiro que se acostume com a notação usada em C no mundo real:

 

if(!strcmp(string1,string2))
   printf("iguais");
else
   printf("diferentes");

 

 

 

Abraços :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso não é notação de mundo real. E sim de programador que tem preguiça de escrever.

 

Por isso também que existe o ctrl c e ctrl v.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Isso não é notação de mundo real. E sim de programador que tem preguiça de escrever.

 

Por isso também que existe o ctrl c e ctrl v.

 

Sério, você seria linxado em IRC's por falar isso.

 

Isso pode ser considerado um 'idiom' em C, não se utiliza '== 0' em C, se utiliza '!'

 

Igual python tem suas peculiaridades, perl tem as suas, pascal tem outras, java também tem. Uma das peculiaridades de como a C é usada é essa. Não tem nada a ver com programador preguiçoso, é saber entender como a linguagem funciona e usá-la no nível adequado.

 

Sobre as chaves, isso é mais facultativo, se você quiser manter, pode manter, mas em qualquer programa bom em C/C++ no mundo real você não encontra essas chaves se for só 1 statement. Porque, aliás, qual é o significado de { e }? Não faz sentido usá-lo para apenas 1 statement, se seguirmos o que ele representa.

 

 

 

Abraços :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Funciona da mesma forma com "==0" ou "!".

 

Não tem peculariedade nenhuma..

Compartilhar este post


Link para o post
Compartilhar em outros sites
Funciona da mesma forma com "==0" ou "!".

 

Não tem peculariedade nenhuma..

 

Você usa o 'tu' e o 'vós' ao invés do 'você' e 'vocês' ao escrever um texto?

 

É a mesma situação.

 

Mas vamos parar de discutir isso porque estamos desviando o assunto do tópico.

 

 

 

Abraços :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

No meu caso eu uso bastante o "tu" pois sou gaúcho. =P

 

Vlw Renato e desculpe se falei algo de cunho grosseiro.

Não era a intenção.

 

FLW!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah, mal, ignore o 'tu', deixe só o 'vós' mesmo xD

 

Mas, sim, claro, digo o mesmo, desculpe se falei algo de cunho grosseiro, não era a intenção.

 

 

@topic

 

Corrigi os erros quanto a compilação, veja o que mudei e compare com o antigo, e trabalhe na lógica.

 

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

int main(void) {
int a, b, c, rep, ag, kr;
char li[50][10], liv[50][10], emp[50][10], status[50]="disponivel", sts[50]="indisponivel";

do {
	printf("\n\n\n\n\nSistema de biblioteca\n\n\n\n");
	printf("\n1-cadastrar");
	printf("\n2-disponiveis");
	printf("\n3-consultar");
	printf("\n4-livros emprestados");
	printf("\n5-emprestar");
	printf("\nescolha suas opcoes: ");
	scanf("\n%d", &ag);
	switch (ag) {
	case 1: /* cadastro */
		printf("\n\n\n\n\ncadastro\n\n\n\n\n");
		for (a = 1; a < 6; ++a) {
			printf("\ndigite o nome do livro: \n");
			scanf("%s", li[a]);
		}
		break;

	case 2:/* livros disponiveis */
		if(!strcmp(liv[a], sts)) {
			for(b = 1; b < a; ++B) {
				printf ("\naki: %s", li[b]);
			}
		} else {
			for (b = 1; b < a; ++B) {
				printf("\naki: %s", li[b+1]);
			}
		}
		break;

	case 3:/* consultar */
		printf("\ndigite o nome do livro: ");
		scanf("%s", liv[a]);
		if(!strcmp(liv[a], sts)) {
			printf("O livro esta disponivel");
		} else {
			printf("O livro esta indisponivel");
		}
		break;

	case 4:/* livros emprestados */
		if(!strcmp(liv[a], status)) {
			for (b = 1; b < a; ++B) {
				printf("\naki: %s", li[b-1]);
			}
		}
		break;
	case 5:/* emprestar */
		printf("Digite o nome do livro desejado para o emprestimo: ");
		scanf("%s", emp[a]);
		if(!strcmp(emp[a], li[a])) {
			printf("livro invalido");
		} else {
			kr = a+1;
			printf("o livro desejado é: %s", li[a]);
		}
		break;
	}

	printf("\ndigite 0 para sair ");
	scanf("\n%d", &rep);
} while(rep != 0);

getchar();

return 0;
} 

 

 

 

Abraços :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.