• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

KiNgPiTo

Duvida "esquesita" em C

11 mensagens neste tópico

Boas...

Recentemente pediram me numa aula para desenvolver um codigo em C para ser compilado em Turbo C ...

La fiz um codigo em Dev c++ mas não usando nada que nao funciona-se em Turbo C...

O problema e que o codigo literalmente não corre no Turbo C... mesmo nada... mas no Dev c++ e Borland C corre...

o codigo e:

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

/* gotoxy no dev

#include <windows.h>


void gotoxy( int x, int y )
{
   COORD coord;
   coord.X = (short)x;
   coord.Y = (short)y;
   SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
} */


struct tratamentos

       {

       int dia, mes, ano;
       char tipo[30];
       float custo;

       };

struct dentes

       {


       char designacao[30], existencia[30];

       struct tratamentos tratamento[3];

       };

struct clientes

       {

       char nome[30], morada[80];
       char telefone[10];
       char telemovel[10];
       char idade[4];

       struct dentes dente[32];

       };

struct clientes cliente[10];

void listar (int i)

{

 printf("\n\n\n\tCliente N§ %d", i);

         i--;

 printf("\n\n\tNome: ");

	puts(cliente[i].nome);

 printf("\n\tMorada: ");

	puts(cliente[i].morada);

 printf("\n\n\tTelefone: ");

	puts(cliente[i].telefone);

         printf("\n\tTelemovel: ");

	puts(cliente[i].telemovel);

 printf("\n\tIdade: ");

	puts(cliente[i].idade);

}


main(){

      int pos=0, i=0, opt4=0, j;
      char opt, opt2, opt3, opt5;


fflush(stdin);


       do{

              system("cls");

      printf("<a> Informacoes de Clientes\n");
      printf("<b> Dentes dos Clientes\n");
      printf("<c> Tratamentos\n");
      printf("<d> Acerca de\n");
      printf("<s> Sair\n");

      scanf("%c", &opt);

      fflush(stdin);


                   switch(opt){

		       case 'a': clientes:

                                       do{

                                       system("cls");

                                       printf("Informacoes de Clientes:\n\n");
			       printf("\t<a> Adicionar Cliente\n");
			       printf("\t<b> Modificar Cliente\n");
			       printf("\t<c> Eliminar Cliente\n");
			       printf("\t<d> Listar Cliente\n");
			       printf("\t<s> Voltar ao menu anterior\n\n");

			       scanf("%c", &opt2);

                                       switch(opt2){

					    case 'a': add:

						      system("cls");

						      printf("Adicionar Cliente:\n");
						      printf("\n\t\tSocio N§ %d/10\n", pos+1);
						      printf("\n\tNome do Cliente: ");
						      printf("\n\n\tMorada do Cliente: ");
						      printf("\n\n\n\tTelefone do Cliente: ");
						      printf("\n\n\tTelemovel do Cliente: ");
						      printf("\n\n\tIdade: ");


							   gotoxy(26,5);
							gets(cliente[pos].nome);
							   gotoxy(28,7);
							gets(cliente[pos].morada);
							   gotoxy(30,10);
							gets(cliente[pos].telefone);
							   gotoxy(31,12);
							gets(cliente[pos].telemovel);
							   gotoxy(16,14);
							gets(cliente[pos].idade);
							   pos++;

						      printf("\n\n\t\tCliente Adicionado\n\n\n");

							   novam:

						      printf("Deseja Adicionar mais Clientes? S/N - ");

							   scanf("%c", &opt5);

							   getchar();

								if (opt5 == 'n' || opt5 == 'N')

									goto clientes;

								if (opt5 == 's' || opt5 == 'S')

									goto add;

								else

							printf("\n\tNÆo ‚ uma Op‡Æo V lida\n\n");

								goto novam;

						break; /* fecha case 1/2 */

					    case 'b': system("cls");

					              printf("Modificar Dados de um Cliente");

					              system("pause");

					    break; /* fecha case 2/2 */

					    case 'c': system("cls");

						      printf("Eliminar Cliente:\n");

						      system("pause");

						      break; /* fecha case 3/2 */

					    case 'd': listar:

						      system("cls");

						      printf("Listar Clientes:\n\n");

                                  i=pos;

						      for(j=1;j<11;j++)

						      printf("Cliente N§ %d - Nome: %s\n", j, cliente[j-1].nome);
						      

						      printf("\n\n\nIntroduza o N§ de Cliente para o qual deseja ver as Informa‡äes Detalhadas: ");

						      scanf("%d", &i);
						      
						      system("cls");

								if(i>0 && i<11)

								listar(i);

								else

								{

								printf("\n\n\tIntroduza um N§ entre 1 e 10\n\n\n");

								system("pause");

								goto listar;

								}

						      nova:

						      printf("\n\n\tPretende Listar Novamente os Clientes? S/N - ");

						      getchar();

						      scanf("%c", &opt3);

								if (opt3 == 's' || opt3 == 'S')

								goto listar;

								if (opt3 == 'n' || opt3 == 'N') 

								goto clientes;

								else

								{

								printf("Nao e uma opcao Valida");

								goto nova;

								}


					    break; /* fecha case 4/2 */

					    case 's':

					    break; /* fecha case 5/2 */

					    default: printf("\n\tNÆo ‚ uma Op‡Æo V lida... Insira uma Op‡Æo entre 1 e 5\n\n\n");

						     system("pause");

					    break;} /* fecha o default e o switch opt2 */

				 fflush(stdin);

				 }while(opt2!='s');



                               break; /* fecha case 1/1 */


		       case 'b': system("cls");

                                       printf("Dentes dos Clientes:\n\n");

			       system("pause");

			       fflush(stdin);



                               break; /* fecha case 2/1 */

		       case 'c': system("cls");

                                       printf("Tratamentos:\n\n");

			       system("pause");

                               break; /* fecha case 3/1 */

		       case 'd': system("cls");

                                       printf("Informacoes sobre a aplicacao\n\n");

			       system("pause");

                               break; /* fecha case 4/1 */

		       case 's': system("cls");

                                       printf("\n\n\n\n\tEscolheu Sair\n\n\n\n\n\n\n");

                               break; /* fecha case 5/1 */

                               default: printf("\n\n\tNÆo ‚ uma Op‡Æo V lida... Insira uma Op‡Æo entre 1 e 5\n\n\n");

				system("pause");

		       break;} /* fecha o default e o switch opt */

                   fflush(stdin);

 }while(opt!='s');


fflush(stdin);
system("pause");
system("cls");


} /* fechar o main() */

Por favor... se alguem souber o motivo pelo qual nao corre por favor diga

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não corre ou não compila?

Que erro dá, em que linha?

aí e que ta o problema... e que nao da erro nenhum em linha nenhum... nada... limpinho mesmo..

se alguem copiar este codigo para o dev c++ executa logo (tem e de se por outra conio.h pra dar os gotoxy ou tira-los) sem erros nenhuns e executa direitinho...

agora se pegar neste codigo e copiar para o turbo c ... não dá... mostra a compilar... não encontra erros nenhuns mas depois quando passa ao executar... nao executa...

e se abrir o exe criado na compilacao... abre durante nem 1 segundo e aparece uma mensagem que diz Ahnormal (mais qualquer coisa que nunca consegui apanhar pois o programa fecha logo...)...

Alguem por favor me ajude pois o stor disse k tem mesmo de ser em TC...

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Faz debug step by step e vê onde rebenta.

e k nem pra isso da... lol

Experimenta meter a main com a assinatura correcta..

meter a main com a assinatura correcta ?? como assim ??

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Experimenta meter a main com a assinatura correcta..

meter a main com a assinatura correcta ?? como assim ??

A main supostamente está correcta, os compiladores de C assumem devem assumir int por omissão.

É capaz de dar jeito ver qual é a mensagem de erro. Abre uma linha de comandos, vai à pasta onde tens o .exe e executa-o. Assim ja deves conseguir ver o texto do erro.

EDIT: tratando-se de Turbo C, tive que alterar o meu post... ::)

No entanto, para se tratar de problema de assinatura nem devia compilar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A main está correcta, os compiladores de C assumem int por omissão.

A main está correcta, alto lá! Lá pq funciona não quer dizer que esteja correcto.  Onde estão os teus bons hábitos de programação? :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Os bons hábitos para este caso não interessam. A sintaxe está correcta, quer seja boa ou má prática. Teres int main() ou main() é exactamente a mesma coisa para o compilador.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

meter a main com a assinatura correcta ?? como assim ??

A main supostamente está correcta, os compiladores de C assumem devem assumir int por omissão.

É capaz de dar jeito ver qual é a mensagem de erro. Abre uma linha de comandos, vai à pasta onde tens o .exe e executa-o. Assim ja deves conseguir ver o texto do erro.

EDIT: tratando-se de Turbo C, tive que alterar o meu post... ::D

No entanto, para se tratar de problema de assinatura nem devia compilar.

a mensagem de erro k da e :

Abnormal program termination

Alguem sabe pk??

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora