
mJi
Membros-
Total de itens
429 -
Registro em
-
Última visita
Tudo que mJi postou
-
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
-
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]);
-
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.
-
No CodeBlocks, vá em Settings > Compiler and debugger... > Toolchain executables tira uma screenshot e posta aqui.
-
Já falei, procure informações sobre o operador === (ou !==)
-
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.
-
$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 ==!.
-
Este fórum 'esconde' o caractere "barra invertida-zero", por isso coloquei um espaço entre eles.
-
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); }
-
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ê.
-
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.
-
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?
-
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++)
-
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.
-
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.
-
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); }
-
Procure maiores informações no Google Code. Há várias APIs para usar http://code.google.com/intl/pt-BR/apis/maps/index.html
-
Acredito que gerar as imagens em tamanhos menores logo após o upload (como o ESerra disse) é a maneira mais vantajosa.
-
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.
-
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.
-
Interprete como quiser. =)
-
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.
-
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.
-
Seria interessante se você postasse na área correta.
-
Que apresentação hein... bem-vindo. Não, é errado.