Jump to content
DiogoFélix

Erros no código

Recommended Posts

DiogoFélix

erros onde ?

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

int main(int argc, char *argv[])
{void menu()
{
char ch;
printf("1\n - Entrada de um utente");
printf("2\n - Saída de um utente");
printf("3\n - Entrada de viaturas");
printf("4\n - Saída de viaturas");
printf("Escolha opção: ");
scanf("%d",&ch);
switch (ch)
{
main()
case '1' : 
{
     char nome[100]; 
     char tutente;
     char profissão;
     char morada;
     int idade;
     int nºbilidentidade;

printf("Introduza o nome");
scanf("%d",&nome);
printf("Introduza o idade");
scanf("%d",&idade);
printf("Introduza o nº_bil_identiade");
scanf("%d",&nº_bil-identidade);
printf("Introduza o t_utente");
scanf("%d",&t_utente);
printf("Introduza o profissão");
scanf("%d",&profissão);
printf("Introduza a morada");
scanf("%d",&morada); 
}
break;
case '2' :
main()
{
int nºbilidentidade;


printf("Introduza o nº_bil_identiade");
scanf("%d",&nº_bil-identidade);
}
break;
case '3' : 
main()
{
    char tipo_veículo; 
     char marca;
     char matricula;
     
printf("Introduza o tipo_veículo");
scanf("%d",&tipo_veículo);
printf("Introduza a marca");
scanf("%d",&marca);
printf("Introduza a matricula");
scanf("%d",&matricula);
}
break;
case '4' : 
main()
{
      char matricula; 
    

printf("Introduza o matricula");
scanf("%d",&matricula);
}
break;
default :
printf("Opção inválida!");break;


}

Share this post


Link to post
Share on other sites
herty

Axo que assim ninguem te vai ajudar, tens de ser mais especifico na tua duvida :P

Se usares um compilador deve dar uma ajuda quanto ao tipo de erro(s)

Share this post


Link to post
Share on other sites
rolando2424

Ok, esse código tem alguns problemas graves.

Primeiro, o número de { tem de ser igual ao número de }. Faltam-te aí alguns }.

Segundo, a expressão switch tem esta sintaxe:

switch (variável) {

case valor1:

    // Inserir as instruções a efectuar

    break; // Há situações em que não se usa o break, mas se estás

          // a começar a programar provavelmente não as vais encontrar,

          // por isso coloca-se sempre o break para terminar um case

case valor2:

    ...

    break;

...

case valorN:

    ...

    break;

default:

    // Se nenhum dos cases for executado, então faz-se estas instruções

    break; // Não é necessário usar o break, mas também, tanto quanto eu saiba, não faz mal nenhum :P

}

Portanto, aqueles main() que tens antes e depois dos case não está lá a fazer nada.

Terceiro, não podes declarar funções dentro de outras funções (ok, há alguns compiladores que deixam fazer isso, mas não é recomendado), por isso não podes fazer:

int main(int argc, char *argv[])
{void menu()
{

Tens que fazer algo do género:

void menu() {
    // Codigo da funcao menu
}

int main(int argc, char *argv[]) {
    // Codigo da funcao main

    return 0; // A funcao main tem que devolver um int por causa da declaracao "int main"
}

Outra dica, em vez de teres tudo colocado no lado esquerdo, faz indentação ao código (qualquer editor de texto hoje em dia faz isso automaticamente), assim é mais fácil de ler.

Em vez de o código ficar assim

int main(int argc, char* argv[]) {
printf("Hello World\n");
return 0;
}

Fica

int main(int argc, char* argv[]) {
    printf("Hello World\n");
    return 0;
}


Não me responsabilizo por qualquer dano ocorrido no seguimento dos meus conselhos. Prontos, a minha pessoa está oficialmente protegida legalmente :D

Share this post


Link to post
Share on other sites
jpaulino

é que eu sou novo a programar e nao percebo nada disto  :wallbash:

A próxima vez que criares um tópico a dizer "Ajudem sff " bloqueio o tópico!

Share this post


Link to post
Share on other sites
Localhost

@rolando2424: bom post, no entanto, eu apenas lhe daria uma referência online para aprender a sintaxe toda desde o início. O código está mesmo muito mau.


here since 2009

Share this post


Link to post
Share on other sites
rolando2424

@rolando2424: bom post, no entanto, eu apenas lhe daria uma referência online para aprender a sintaxe toda desde o início. O código está mesmo muito mau.

*shrugs* Foi uma resposta rápida de escrever de qualquer modo :P

Já agora, fica aqui a informação que o gcc aparentemente suporta a declaração de funções dentro de funções:

#include <stdio.h>

int main(int argc, char *argv[])
{
    void foo(void) {
        printf("dentro de foo\n");
    }

    foo();

    return 0;
}

Neste caso foo() só pode ser chamado de dentro da função main().

O seguinte já não é válido:

#include <stdio.h>

void bar(void) {
    foo(); // Erro
}
    
int main(int argc, char *argv[])
{
    void foo(void) {
        printf("dentro de foo\n");
    }

    foo();

    return 0;
}

Mas é melhor não usar isto porque acho que não é standard e depois pode não compilar com outros compiladores.


Não me responsabilizo por qualquer dano ocorrido no seguimento dos meus conselhos. Prontos, a minha pessoa está oficialmente protegida legalmente :D

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.