gRoOvE 0 Denunciar post Postado Maio 25, 2008 galera, estou com uma dúvida aqui, quero que quando o usuário digitar "x" na entrada disciplina, pare o laço, mas sou novo com vetores e matrizes, não sei como fazer essa validação, teria que fazer outro laço no fim do while lah ?? podia por um if-break ali no meio tb, mas dessa forma nao quero. #include "stdafx.h" #define N 15 void main(void) { char disciplina[N]; float notas[N][N]; int i; do{ for(i=0;i<15;i++) { printf("\nDigite a disciplina: "); scanf("%s",&disciplina[i]); printf("\nDigite as notas do primeiro e segundo bimestre: "); scanf("%s,%s",¬as[i][i]); } }while(disciplina[0] == "sair"); } como faco pra armazenar tipo vetor, mas com string ?? pra ficar cada "vetor" com uma string ?? Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Maio 25, 2008 void main(void) Como se diz no Orkut: QUEIMA!!!! O retorno de main é int. Se teu compilador aceita essa bizarrice,troque de compilador. :) if-break ali no meio tb, mas dessa forma nao quero. Assim fica meio difícil...Ou você coloca break ou seta a condição como falsa. Isso significa ficar mexendo no i do for e é mais gambiarra do que enfiar um break no loop. O que da pra fazer é: do { printf("\nDigite o nome da disciplina:"); scanf("%[a-zA-Z0-9 ]",disciplina[i]); if (disciplina[i] != "sair") { //leia as notas } } while (disciplina[i] != "sair"); E repare que surge o mesmo problema que tem com o fgets: isis@nowhere:~/src/IMASTERS> ./a.out Digite a disciplina: bcdjh Digite as notas do primeiro e segundo bimestre: 5 8 Digite a disciplina: Digite as notas do primeiro e segundo bimestre: 4 1 Digite a disciplina: Digite as notas do primeiro e segundo bimestre: float notas[N][N]; Se você vai ler somente 2 notas, por que está criando um array 15x15? stdafx.h???Que biblioteca é essa?? Pra você usar array de string ou você mexe com malloc (dai você deixa o while sem condicional de limite do array) ou aloque estaticamente (char materias[N][N]),mas o while vai ter que verificar se você á chegou em materias[14]) Compartilhar este post Link para o post Compartilhar em outros sites
gRoOvE 0 Denunciar post Postado Maio 25, 2008 sempre usei o void e funcionou, uso o visual C++ 6.0 essa biblioteca stdafx.h, uso ela pq soh sei comecar novo projeto atravez do hello word e como ja vem ela, sempre usei essa, ql devo usar ?? o que é fgets ?? do { printf("\nDigite o nome da disciplina:"); scanf("%[a-zA-Z0-9 ]",disciplina[i]); if (disciplina[i] != "sair") { //leia as notas } i++; } while (disciplina[i] != "sair");a validação do while não funciona, nao faltou um incrementador no i ai não ?? aquele array 15x15 era pra ler as duas notas, mas não intendo muito de matriz ainda, teria que usar um vetor pra cada então ?? Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Maio 25, 2008 o que é fgets ?? Função. sempre usei o void e funcionou, uso o visual C++ 6.0 Não imprime nenhum warning?? Cadê o padrão nessa birosca? a validação do while não funciona, nao faltou um incrementador no i ai não ?? Criatura....eu te dei a estrutura do bagulho.É OBVIO que precisa incrementar o indice. aquele array 15x15 era pra ler as duas notas, mas não intendo muito de matriz ainda, teria que usar um vetor pra cada então ?? array[15][15]: 15 linhas e 15 colunas. Pra duas notas você nao precisa de 15 linhas e 15 colunas... 1 linha e 2 colunas já sao o suficiente. Compartilhar este post Link para o post Compartilhar em outros sites
Giovanni Ritchie 0 Denunciar post Postado Maio 25, 2008 void main(void) Como se diz no Orkut: QUEIMA!!!! O retorno de main é int. Se teu compilador aceita essa bizarrice,troque de compilador. :) Cara mais cuidado com o que você diz em ISIS. Estude mais sobre compiladores e depois faça comentarios com cabeça-tronco-e- membros. :unsure: http://forum.imasters.com.br/public/style_emoticons/default/closedeyes.gif http://forum.imasters.com.br/public/style_emoticons/default/closedeyes.gif Compartilhar este post Link para o post Compartilhar em outros sites
José Enésio 4 Denunciar post Postado Maio 25, 2008 void main(void) Como se diz no Orkut: QUEIMA!!!! O retorno de main é int. Se teu compilador aceita essa bizarrice,troque de compilador. :) Cara mais cuidado com o que você diz em ISIS. Estude mais sobre compiladores e depois faça comentarios com cabeça-tronco-e- membros. :unsure: http://forum.imasters.com.br/public/style_emoticons/default/closedeyes.gif http://forum.imasters.com.br/public/style_emoticons/default/closedeyes.gif A Isis tá certa, dá uma lida: http://www.gidnetwork.com/b-66.html :) Compartilhar este post Link para o post Compartilhar em outros sites
Giovanni Ritchie 0 Denunciar post Postado Maio 25, 2008 Nao ta nada...porque main tbm pode ser usado como procedimento!!! Compartilhar este post Link para o post Compartilhar em outros sites
gRoOvE 0 Denunciar post Postado Maio 25, 2008 não imprime nenhum warning quando uso void É ÓBVIO que eu incrementei o indice, a validação no while não ocorre reformulei o código, tentar resolver essa parte da validação primeiro #include "stdafx.h" #define N 5 void main(void) { char disciplina[N][50]; int i=0; do{ printf("\nDigite o nome da disciplina:"); scanf("%s",&disciplina[i]); i++; }while(disciplina[i] != "sair"); } Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Maio 26, 2008 Cara mais cuidado com o que você diz em ISIS. Estude mais sobre compiladores e depois faça comentarios com cabeça-tronco-e- membros. Já estudei compiladores. E perdi meu saco em análise semântica, mas adorei ter passado 1 mês fazendo gramáticas (LALR,SLR,LR). O trabalho era implementar um em C... Nao ta nada...porque main tbm pode ser usado como procedimento!!! Tô sim. E não é porque algo pode ser usado como procedimento que pode retornar até a vó do criador da linguagem que tá tudo bem ('pq main pode ser usado como procedimento' NÃO é justificativa pra você ir contra um padrão -- e até mesmo o funcionamento de um SO -- e retornar void): http://www.delorie.com/djgpp/v2faq/faq22_25.html http://www.ibm.com/developerworks/library/l-c99.html To address a common FAQ, yes, it is intentional that gcc gives warning for declarations of main() with arguments or return type other than those listed in the standard. While the C99 standard allows implementations to provide alternative declarations, they're never portable. In particular, the common practice of declaring main() with a return type of void is simply incorrect. http://www.cprogramming.com/faq/cgi-bin/sm...swer=1044841143 Under C89, main() is acceptable, although it is advisable to use the C99 standard, under which only these are acceptable: int main ( void ) int main ( int argc, char *argv[] ) Slight variations of the above are acceptable, where int can be replaced by a typedef name defined as int, or the type of argv can be written as char ** argv, and so on. The first option is used when you do not require access to the command line arguments. The names argc and argv are identifiers that can be changed if you so desire, but sticking to argc/argv is convention. The return type of main() must always be an int, this allows a return code to be passed to the invoker. http://users.aber.ac.uk/auj/voidmain.shtml http://home.att.net/~jackklein/ctips01.html#int_main Se você quer mandar teu SO se virar sozinho com void main(),problema teu. Mas não venha dar ataque de machismo falando por tabela que o padrão da linguagem não serve pra nada. Compartilhar este post Link para o post Compartilhar em outros sites