Ir para conteúdo
Fórum Script Brasil

mJi

Membros
  • Total de itens

    429
  • Registro em

  • Última visita

Tudo que mJi postou

  1. typedef struct Aluno TipoAluno; struct Aluno { char matricula[MAX_MAT]; char prova1[MAX_PROVA]; char prova2[MAX_PROVA]; char prova3[MAX_PROVA]; }; typedef struct Turma TipoTurma; struct Turma { int cod_turma; TipoAluno aluno[MAX_CADASTROS]; }; Não tenho certeza se é válido fazer o typedef antes de declarar a struct. Substitua por isso: typedef struct { char matricula[MAX_MAT]; char prova1[MAX_PROVA]; char prova2[MAX_PROVA]; char prova3[MAX_PROVA]; } TipoAluno; typedef struct { int cod_turma; TipoAluno aluno[MAX_CADASTROS]; } TipoTurma; Na sua declaração dos vetores, você declarou como structs mesmo tendo feito o typedef: int main(void) { struct Turma turma[MAX_TURMAS]; struct Aluno aluno[MAX_CADASTROS]; Tente usar assim: int main(void) { TipoTurma turma[MAX_TURMAS]; TipoAluno aluno[MAX_CADASTROS]; Ah, fica a questão... O seu tipo 'TipoAluno' você usa apenas internamente ao tipo 'TipoTurma'? Se sim, ao declarar o vetor de 'TipoTurma' vocÊ automaticamente já possui o vetor de alunos dentro de cada elemento do vetor de turmas. Então não precisaria declarar este vetor de alunos. E nesse switch, você faz as chamadas de funções de maneira incorreta. Ao chamar a função, não se deve colocar o tipo da variável que será enviada por parâmetro. switch (status) { case 1: adiciona_cadastro(TipoTurma *turma); break; case 2: busca_aluno(TipoTurma *turma); break; case 3: exclui_cadastro(TipoTurma *turma); break; case 4: exit(0); break; } Substitua por isso: switch (status) { case 1: adiciona_cadastro(turma); break; case 2: busca_aluno(turma); break; case 3: exclui_cadastro(turma); break; case 4: exit(0); break; } Como 'turma' é um vetor, pode ser enviado por referência sem o operador '&' ('E' comercial). Só olhei isso no código, se tiver algum problema só postar
  2. Seria melhor se postasse todo o código... Isso são structs: struct Aluno { char matricula[MAX_MAT]; char prova1[MAX_PROVA]; char prova2[MAX_PROVA]; char prova3[MAX_PROVA]; }; struct Turma { int cod_turma; TipoAluno aluno[MAX_CADASTROS]; }; Aqui você as define como tipos: typedef struct Aluno tipoaluno; typedef struct Turma tipoturma; Ou seja, você cria dois novos tipos de variáveis, chamadas tipoaluno e tipoturma. Mas isso não significa que você já pode usar esses tipos. Você deve declarar variáveis do tipo: ... int main(){ tipoaluno x; ... Neste caso, foi criada uma variável do tipo 'tipoaluno'. Caso você pretende fazer cadastramento de aluno, e é necessário armazenar dados de vários alunos, o idela é criar um vetor do tipo 'tipoaluno': ... int main(){ tipoaluno x[100]; ... Neste caso, foi criado um vetor com 100 elementos do tipo 'tipoaluno'. O protótipo da sua função está correta no código que você passou... porém na hora da chamada, você enviou 'TipoTurma', que é o nome do tipo, não da variável que você quer passar. Neste exemplo que eu mostrei, você criaria um vetor do tipo 'tipoaluno' de 100 elementos, e passaria para uma função de protótipo int verifica_status_turma(tipoaluno turma); dessa maneira: variavel = verifica_status_turma(x); E para enviar apenas um elemento da estrutura: variavel = verifica_status_turma(x[indice do elemento]);
  3. Você definiu as structs como 'TipoTurma' e 'TipoAluno', mas eu não ví nenhuma declaração de veriáveis destes tipos. Você deve criá-las e submetê-las ás suas funções. Pelo que entendi, você está submetendo o tipo às funções, e isso não faz sentido. É a mesma coisa que enviar 'int', 'float' ou 'void' como parâmetro para uma função.
  4. mJi

    Compilar em Code Blocks

    No CodeBlocks, vá em Settings > Compiler and debugger... > Toolchain executables tira uma screenshot e posta aqui.
  5. mJi

    Dúvida com FOR

    Já falei, procure informações sobre o operador === (ou !==)
  6. mJi

    exibir imagen na pesquisa

    Faça como o ESerra disse caso você esteja recebendo o caminho da imagem hospedada. Se você armazenou a imagem no banco de dados, terá que usar header para exibí-la.
  7. mJi

    Dúvida com FOR

    $busca_data = array_search($dias[$pos2],$dias_reservas); if ($busca_data) { echo "<td bgColor='darkgray'><b><center><font color='blue'>".$dias[$pos2]."</font></center></b></td>"; } else { echo "<td><center>".$dias[$pos2]."</center></td>"; } Não é uma boa ideia pegar o retorno de 'array_search()' e colocar no 'if' sem fazer a comparação. Array_search pode retorna FALSE se não encontra nenhum valor no array, mas também pode retornar a posição zero do array, que é interpretado como um FALSE pelo if, embora não seja. Lembre-se que zero é interpretado como FALSE, e qualquer valor não-zero é interpretado como TRUE. Veja na documentação: Ou seja, pesquise sobre o operador === ou ==!.
  8. mJi

    Código com problema.

    Este fórum 'esconde' o caractere "barra invertida-zero", por isso coloquei um espaço entre eles.
  9. Na linha $transforma= (C=5/9 * ($temp-32)) Não tem motivo para pôr aquel 'C=' alí. Além disso, faltou o ponto-e-vírgula. function temperatura($temp) { $transforma = 5/9 * ($temp-32); return($transforma); }
  10. mJi

    ponteiro string

    Faltou um #include <stdio.h> Para descobrir o tamanho, está certinho até, mas você deve pensar sobre o fato de o caractere nulo final fazer ou não parte da string... int gettam(char *tamanho){ int resp=0; while(tamanho[resp++] != '\ 0'); return(resp-1); } Para descobrir a posição do sinal de igual, não há a necessidade de usar uma segunda variável, você poderia até mesmo usar a variável de controle -1. Mas isso vai do estilo de cada um... int getpos(char *str){ int i=0; while(str[i++] != '='); return(i-1); } Para retornar o nome "Wesley", o que eu recomendo é percorrer o vetor até encontrar o sinal de igual, e retornar o endereço desde sinal + 1. Depois, basta dar um 'printf()' neste endereço que ele irá printar a string até o caractere nulo. É a maneira mais rápida e eficiente de se fazer isto. Caso não saibas como retornar ponteiros, pesquise sobre o assunto. Ainda, em seu código, você tentou exibir a string com %c. Isto é para caracteres. Para strings, é %s. Este eu deixo para você.
  11. mJi

    Dúvida com FOR

    Como eu já disse... você está atribuindo o retorno de array_push ao seu vetor. Não seria melhor inserir com $dias_reservas[] = $dia1+$t; ? usar o array_push pra unserir um único elemento no final do array é completamente desnecessário.
  12. mJi

    Stack Size

    Utilizo CodeBlocks 10.05 100% default e consigo rodar tranquilamente algoritmos com vetores acima de 3000 posições (não testei maiores). Ele acusa algum erro, warning? Tentou alocar dinamicamente, para ver se funciona?
  13. mJi

    Código com problema.

    Sobre o problema de o programa acusar erro após a leitura da string, o seu laço for estava errado: for (i = 0; string[1] != '\ 0'; i = i + 1) Para percorrer a string até seu final, você deve usar a variável de controle para verificar se a string já chegou ao seu caractere nulo. for (i=0;string[i] != '\ 0'; i++)
  14. Só uma dica: Ao passar vetores como parâmetros de uma função, não há a necessidade de colocar o número de posições. Passe como um ponteiro, ou com os colchetes vazios. Isso evita esse tipo de erro.
  15. mJi

    Dúvida com FOR

    Este resultado, é o conteúdo do array $dias_reservas? O array_push retorna o tamanho do array após a inserção nos novos valores... Então é normal que a cada loop, ele retorne o que havia retornado no loop anterior mais um.
  16. mJi

    [AJUDA]Problema de matriz

    Opa, cheguei. Seguinte, todo o programa deve estar dentro de um loop (preferencialmente do-while), e a condição de parada ocorre após a exibição da matriz. Se o usuário quiser continuar e fazer um novo cadastramento, continua, ao contrário, sai do loop. É melhor fazer com funções, mas imagino que você queira a maneira menos complexa, então façamos tudo na 'main'. Faça um menu em que o usuário possa escolher 4 opções: cadastrar camisas, shorts, meias e mostrar a matriz. O usuário escolhe a opção e entra num 'switch'. Dentro do switch há os 4 casos, nos casos de cadastramento, o usuário deverá escolher um tamanho da peça (P, M ou G), e dependendo do caso, soma em determinado local da matriz. Após o usuário digitar o valor e armazenar na matriz, segue o loop, limpa a tela e mostra novamente o menu. Faça isto até o usuário escolher a opção 'mostrar Matriz'. Nesta opção, é quando você deve fazer as somas e colocá-las nos locais certos, e após, exibir a matriz. Você também pode colocar essa soma em cada 'caso' no switch, mas eu gosto de loops, então deixo pra agora =) Exiba a matriz do jeito que eu falei, com um lacinho básico duplo. De duas quebras de linha ("\n\n") e mostre o somatório geral. Você pode adquirir o somatório geral ao mesmo tempo que consegue os somatórios parciais de cada tipo, fica a dica. A última tarefa é fornecer a opção para que o usuário possa escolher entre reiniciar o processo ou sair. Se ele quiser continuar e reiniciar o processo de cadastramento, zere toda a matriz e siga o laço. Ao contrário, atribua á sua variável de controle o valor correspondente á condição de parada do laço (o tal do-while que eu havia sugerido). Soa meio complicado, mas em 5 minutinhos dá para fazer. Eu fiz aqui, se tu ficar meio perdido, dá uma olhada. #include <stdio.h> int main(){ unsigned short int opcao, i, j; int matriz[4][4], aux; char tam; for(i=0;i<4;i++){ for(j=0;j<4;j++){ matriz[i][j] = 0; } } do{ system("cls"); printf("CADASTRAMENTO DE PRODUTOS\n\n"); printf("1 - Cadastrar Camisa\n"); printf("2 - Cadastrar bermuda\n"); printf("3 - Cadastrar meia\n"); printf("4 - Mostrar produtos\n"); scanf("%hu", &opcao); system("CLS"); switch(opcao){ case 1: printf("Qual o tamanho de Camisa voce deseja cadastrar? (P, M ou G)\n"); do{ scanf("%c", &tam); tam -= (tam>96 && tam<126) ? 32 : 0; } while(tam != 'P' && tam != 'M' && tam != 'G'); printf("Digite a quantidade de camisas '%c' voce deseja cadastrar: ", tam); if(tam == 'P'){ scanf("%d", &aux); matriz[0][0] += aux; } else if(tam == 'M'){ scanf("%d", &aux); matriz[0][1] += aux; } else { scanf("%d", &aux); matriz[0][2] += aux; } break; case 2: printf("Qual o tamanho de Short voce deseja cadastrar? (P, M ou G)\n"); do{ scanf("%c", &tam); tam -= (tam>96 && tam<126) ? 32 : 0; } while(tam != 'P' && tam != 'M' && tam != 'G'); printf("Digite a quantidade de Shorts '%c' voce deseja cadastrar: ", tam); if(tam == 'P'){ scanf("%d", &aux); matriz[1][0] += aux; } else if(tam == 'M'){ scanf("%d", &aux); matriz[1][1] += aux; } else { scanf("%d", &aux); matriz[1][2] += aux; } break; case 3: printf("Qual o tamanho de Meia voce deseja cadastrar? (P, M ou G)\n"); do{ scanf("%c", &tam); tam -= (tam>96 && tam<126) ? 32 : 0; } while(tam != 'P' && tam != 'M' && tam != 'G'); printf("Digite a quantidade de Meias '%c' voce deseja cadastrar: ", tam); if(tam == 'P'){ scanf("%d", &aux); matriz[2][0] += aux; } else if(tam == 'M'){ scanf("%d", &aux); matriz[2][1] += aux; } else { scanf("%d", &aux); matriz[2][2] += aux; } break; case 4: for(i=0;i<3;i++){ for(j=0;j<3;j++){ matriz[i][3] += matriz[i][j]; matriz[3][i] += matriz[j][i]; matriz[3][3] += matriz[i][j]; } } for(i=0;i<4;i++){ for(j=0;j<4;j++){ printf("%6d", matriz[i][j]); } printf("\n"); } printf("\n\nTotal de produtos adquiridos pela loja: %d.\n", matriz[3][3]); printf("Voce deseja fazer outro cadastramento de compra? (S ou N):\n"); do{ scanf("%c", &tam); tam -= (tam>96 && tam<126) ? 32 : 0; } while(tam != 'S' && tam != 'N'); if(tam == 'S'){ for(i=0;i<4;i++){ for(j=0;j<4;j++){ matriz[i][j] = 0; } } } else { opcao = 0; } break; default: printf("Você não digitou um numero valido.\n"); break; } } while (opcao != 0); return(0); }
  17. mJi

    Google Maps com PHP

    Procure maiores informações no Google Code. Há várias APIs para usar http://code.google.com/intl/pt-BR/apis/maps/index.html
  18. Acredito que gerar as imagens em tamanhos menores logo após o upload (como o ESerra disse) é a maneira mais vantajosa.
  19. mJi

    [AJUDA]Problema de matriz

    Amigo, porque você colocou essa parte matriz[0][0] = camisetaP matriz[0][1] = camisetaM matriz[0][2] = camisetaG matriz[0][3] = somatório de camisetas P, M e G matriz[1][0] = bermudaP matriz[1][1] = bermudaM matriz[1][2] = bermudaG matriz[1][3] = somatório de shorts P, M e G matriz[2][0] = meiaP matriz[2][1] = meiaM matriz[2][2] = meiaG matriz[2][3] = somatório de meias P, M e G matriz[3][0] = somatório de todos os produtos P matriz[3][1] = somatório de todos os produtos M matriz[3][2] = somatório de todos os produtos G matriz[3][3] = somatório de todos os produtos? Isto é apenas uma indicação de qual conteúdo vai para cada variável. No momento estou em meio à miha aula (de programação, inclusive), mas quando chegar em casa lhe dou uns toques.
  20. Estou à disposição para ajudar, e se rolar uma grana, estou mais disposto ainda =) Pode entrar em contato via mensagem pessoal aqui no fórum mesmo, para conversarmos sobre o assunto.
  21. mJi

    [AJUDA]Problema de matriz

    Basicamente, você deve alimentar a matriz com os valores. Você deve pedir para o usuário entrar com a quantidade de produtos dos tipos... camiseta P camiseta M camiseta G short P short M short G meia P meia M meia G Na matriz, armazene nas seguintes posições: matriz[0][0] = camiseta P matriz[0][1] = camiseta M matriz[0][2] = camiseta G matriz[0][3] = somatório de camisetas P, M e G matriz[1][0] = short P matriz[1][1] = short M matriz[1][2] = short G matriz[1][3] = somatório de shorts P, M e G matriz[2][0] = meia P matriz[2][1] = meia M matriz[2][2] = meia G matriz[2][3] = somatório de meias P, M e G matriz[3][0] = somatório de todos os produtos P matriz[3][1] = somatório de todos os produtos M matriz[3][2] = somatório de todos os produtos G matriz[3][3] = somatório de todos os produtos Para exibir os resultados, limpe a janela com system("CLS"); e para exibir a matriz, use um laço duplo: for(i=0;i<4;i++){ for(j=0;j<4;j++){ printf("%d ", matriz[i][j]); } printf("\n"); } O resto acredito que tu não necessite de ajuda.
  22. mJi

    matriz

    Eu faria mais ou menos assim: #include<stdio.h> #define L 9 //numero de linha dos vetores #define LI 3 // numero de linhas da matriz #define C 3 // numero de colunas da matriz void colocaNoVetor(int matriz[][C], int *matriz1, int *matriz2); int main(){ int matriz[LI][C], vetor1[L], vetor2[L], i, j=0, k=0; for(i=0;i<L;i++){ printf("Digite o numero %d da matriz 1: ", i+1); scanf("%d",&vetor1[i]); } for(i=0;i<L;i++){ printf("Digite o numero %d da matriz 2: ", i+1); scanf("%d",&vetor2[i]); } system("CLS"); printf("Valores dos vetores: (vetor 1 * vetor2)\n"); for(i=0;i<L;i++){ printf(" %d*%d ", vetor1[i], vetor2[i]); } printf("\nRESULTADOS: \n\n"); colocaNoVetor(matriz, vetor1, vetor2); for(i=0;i<LI;i++){ for(j=0;j<C;j++){ printf(" %d ", matriz[i][j]); } printf("\n"); } return(0); } void colocaNoVetor(int matriz[][C], int *vetor1, int *vetor2){ int i=0, j, k; for(j=0;j<LI;j++){ for(k=0;k<LI;k++){ matriz[j][k] = vetor1[i]*vetor2[i]; i++; } } } 1- Entrada de valores; 2- Imprime os valores que serão multiplicados; 3- Manda a matriz que vai receber os resultados e os dois vetores para uma função (colocaNoVetor()); 4- A função faz as multiplicações e coloca no vetor (laço duplo); 5- exibe a matriz. Não tentei alterar os valores de C, L e LI, provavelmente se alterar dá algum bug, mas é mais ou menos isso.
  23. mJi

    Problema complicado

    Seria interessante se você postasse na área correta.
  24. Que apresentação hein... bem-vindo. Não, é errado.
×
×
  • Criar Novo...