Ir para conteúdo
Fórum Script Brasil

Beraldo

Veteranos
  • Total de itens

    4.466
  • Registro em

  • Última visita

Tudo que Beraldo postou

  1. Beraldo

    string

    Fonte: http://www.cplusplus.com/reference/clibrar...ing/strcmp.html Logo:
  2. Beraldo

    Numero primo

    Isso sempre retornará É PRIMO,a lém de um erro de execução, por causa da divisão por 0. Você tem de ir de 1 até (N - 1) Dá para diminuir o processamento, fazendo alguns ifs antes do loop: se for par, não é primo. Se tiver raiz quadrada exata, também não é primo
  3. Beraldo

    string

    strcmp() só aceita dois parâmetros e só trabalha com strings. Para comparar caracteres, use o operador !=
  4. Beraldo

    string

    p é apenas um ponteiro. Ele contém um endereço de memória, representado por um long unsigned int. Em máquinas de 32 bits, isso vale 4. A minha é de 64 bits e aparece sempre 8. Com um ponteiro com memória própriua é diferente: int main() { char *p = (char *) malloc(8 * sizeof(char)); strcpy(p, "Beraldo"); printf("p=%s\nsizeof(p)=%lu\nstrlen(p)=%d", p, sizeof(p), strlen(p)); free(p); return 0; } Saída:
  5. Beraldo

    string

    Como você está fazendo? Um ponteiro, por padrão, não tem memória alocada. Para que sizeof() retorne o tamanho certo, tem que alocar memória com malloc.
  6. Uma coisa interessante é citar o typedef. Ao mexer com muitas structs, fica cansativo declarar variáveis e parâmetros assim: strcut x var Então é bom fazer isto: typedef struct { int dia, mes, ano; } NASCIMENTO; Aí podemos declarar assim: NASCIMENTO datas[30] Uma dica não relacionada com o tema do artigo: evite o uso de variáveis globais. Em programas grandes, muitas variáveis globais causam confusão. Você pode se confundir com o conteúdo corrente delas, por exemplo, além de perder o controle de qual função tem direito de alterar o valor de cada variável. Isso será importante quando for mexer com Orientação a Objetos e visibilidade de membros de classe (ou encapsulamento)
  7. Beraldo

    string

    Não é bem assim. sizeof() retorna o tamanho de um objeto em bytes, mas uma string sempre ocupa um bute a mais por causa do '\ 0'. Teste: #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char *din_str, str[] = "teste"; printf("sizeof(str)=%d\nstrlen(str)=%d\n", sizeof(str), strlen(str)); return 0; } Saída: Por isso existe strlen(). ;) Lembrando que sizeof() só vai retornar o tamanho de um objeto aloca dinamicamente se a memória já estiver alocada. Você se lembrarão disso quando usarem ponteiros dentro de estruturas. ;) O programa em si é mais ou menos assim: int main() { char str1[] = "teste", str2[] = "testa"; int i; for (i = 0; i < 5; i++) { if (str1[i] != str2[i]) { printf("É diferente a partir da posição %d\n", i); break; } } return 0; } Coloquei um for que vai até 5 só para exemplificar, pois usei strings de 5 caracteres. O correto é ir até o tamanho da menor string, para não acessar memória errada.
  8. Beraldo

    Duvida matrizes

    Iso não existe: Você tem de usar o nome da variável, não apenas os colchetes. Não entendi que lógica você usou no programa. Os elementos da diagonal principal têm os dois índices iguais: a[1][1], a[2][2]... Quanto à diagonal secundária, veja: http://scriptbrasil.com.br/forum/index.php?showtopic=129921 PS: ao postar um código. coloque-o entre as tags [.code] e [./code] (sem os pontos). O resultado será: código aqui Bem mais legível ;)
  9. Beraldo

    Matriz Notas

    mais uma vez: não use o operador & em scanf com string. em vez de scanf("%s", &nome); faça scanf("%s",nome); Mas é preferível usar fgets() para pegar strings. Além de permitir espaços, evita estouro de buffer Eu falei para você retirar o loop do k. void alunos(char nome[ALUNOS][TAM_MAX], float notas[ALUNOS][PROVAS]){ int i,j; int soma = 0; int k = 0; for(i=0;i<ALUNOS;i++) { printf("ALuno: %s\n", nome[i]); float media = 0; for(j=0;j<PROVAS;j++) { media += notas[i][j]; } media /= (float) PROVAS; if(media >= 7){ printf("Aprovado \n"); } else{ if(media < 5){ printf("Reprovado \n"); } else{ printf("Exame \n"); } } } }
  10. Beraldo

    string

    use um loop que percorra as duas strings e compare os caracteres Quando str1 != str2, retorne "i"
  11. Beraldo

    Login e Senha

    "login" e "senha1" foram definidos como char, mas deveriam ser definidos como char* (string) Também não existe isto em C: str != str2 Tem que usar strcmp() também
  12. Beraldo

    Login e Senha

    Não. strcmp() retorna zero se as duas strings forem iguais Veja: http://www.cplusplus.com/reference/clibrar...ing/strcmp.html
  13. Beraldo

    Matriz Notas

    Então P é o quê?? Já não estendi mais nada...
  14. Beraldo

    Login e Senha

    para comparar strings, use strcmp(), da string.h.
  15. Beraldo

    substring

    Trate a string como um vetor. COnsidere a string: char nome[] = "Beraldo"; "nome" é um vetor: nome[0] = 'B'; nome[1] = 'e'; nome[2] = 'r'; nome[3] = 'a'; nome[4] = 'l' nome[5] = 'd' nome[6] = 'o' nome[7] = '\ 0' Crie um novo vetor de char e adicione a ele somente os caracteres que devem ser retornados pela função. Depois adicione o '\ 0' (sem espaço) ao fim da string.
  16. Beraldo

    Matriz Notas

    O que é M e o que é N? Pelo que entendi, M é o número de alunos e N, o tamanho do nome de cada um deles. Se for isso, de fato, esta declaração não faz sentido: float notas[N][P]; Por isso usar nomes auto-descritivos ajuda. Até você está se confundindo com o seu próprio programa. Há cinco alunos e 30 notas?? :unsure: Por que o for usa a variável i e num ao mesmo tempo? Mais uma vez: não coloque o operador & no scanf quando a variável é uma string, pois o nome da variável é o endereço da posição 0 (nome == &nome[0]) O while(k < P) não faz sentido. Basta um loop para percorrer os alunos e um loop dentro dele para percorrer as respectivas notas Já pensou em usar uma struct? Fica bem melhor. Seu compilar está configurado para exibir warnings (avisos)? Ative essa opção. Ela ajuda você a fazer programas melhores e mais corretos,.
  17. Beraldo

    Programa com matriz

    aluno[0][disciplina_0] <- numero de provas aluno[0][disciplina_1] <- numero de provas ...
  18. Beraldo

    Matriz Notas

    Há um loop para os alunos e um loop dentro dele para as notas. A exebição da média deve estar dentro do loop de alunos, mas fora do que faz a média. Você está errando na divisão também. VocÊ está dividindo dentro do loop. Pense assim: tenho que somar TODAS as notas do launo; somente DEPOIS DE SMOAR, tenho de dividir for (percorre os alunos) { media = 0 for (percorre as provas) { media += nota_corrente_do_loop } media /= numero_de_provas verifica se está aprovado ou não }
  19. Beraldo

    Matriz Notas

    O if das notas está dentro do loop que calcula a média OBS: Cuide mais da endentação do seu código. Você não usa um padrão; horas abre o bloco num lugar, dá um , dois, trÊs ou dez espaços. Fica ruim de visualizar o código. Deixe tudo alnihado: if (condicao) { comando1 comando2 comando3 } else { comando1 comando2 comando3 } Fica bem mais fácil de entender OBS 2: Use nomes auto-descritivos para as constantes. M, N, P não descrevem bem. Use ALUNOS, PROVAS, TAM_NOME. Coisas desse tipo. Daqui um ano você pdoe olhar para esse programa e demorar até entender o que significa o que.
  20. strlen() é uma função que trabalha com string (vetor de carateres terminados em \ 0 (sem espaço) ). Ela não tem nada a ver com vetor de inteiros. Não há como saber o tamanhod e um vetor, em C. O que você pode fazer é uma estrutura assim: typedef struct { int tamanho; int *vetor; } NUMS; A´i você vai alocando memória para o vetor e incrementa a variável "tamanho".
  21. Em casos assim o loop do..while deve ser aplicado: do { scanf(); if... } while (num > 0); O do...while serve para laços em que o bloco deve ser executado pelo menos uma vez. Assim não precisa colocar um scanf dentro do loop e outro fora dele
  22. hahahhahha :lol: Então há loiras inteligentes....? :unsure: brincadeira... :P Mas não dá para usar Internet em avião, dá??? :unsure:
  23. Beraldo

    Matriz Notas

    repare bem no IF que você fez O if(media >7) e o if(media < 5) sempre são executados. O certo é: if (media >= 7) { ... } else { if (media < 5) ... else /*exame */ ... }
  24. Beraldo

    PONTEIRO

    http://www.inf.ufpr.br/nicolui/grad/ci067/...s_03/index.html (esse link pode não estar acessível amanhã pela manhã, devido a uma manutenção nos servidores da UFPR) E, claro: http://www.google.com/search?ie=UTF-8&...ios+ponteiros+c Estude ponteiros que essas dúvidas se tornarão brincadeiras. ;)
  25. Beraldo

    Diagonal Secundaria C

    só cuide com o valor com o qual você vai comparar com i + j Se as posições começarem em 1, compare com N + 1. Se começarem em 0, deverá comparar com N -1. Isso é lógico, pois vocÊ diminuiu uma unidade em cada dimensão da matriz. Isso reduz a soma em duas unidades. ;)
×
×
  • Criar Novo...