Ir para conteúdo
Fórum Script Brasil

ScreenBlack

Membros
  • Total de itens

    61
  • Registro em

  • Última visita

Sobre ScreenBlack

Perfil

  • Gender
    Male
  • Location
    Florianópolis - SC

ScreenBlack's Achievements

0

Reputação

  1. O único erro que percebi, foi o "if" validando valor inferior a 0 (zero), que deveria ser 1 (um): #include<stdio.h> #include<stdlib.h> int main(void) { int i,b,n; char r = 'S'; while( r == 'S' || r == 's' ) { printf("Digite um numero (1 ao 9): "); scanf("%d",&n); if( n > 0 || n < 10 ) { for ( i = 1; i <= 10; i++ ) { b = n * i; printf("%d * %d = %d\n", n, i, b); } printf("\n"); printf("Calcular outra tabuada?(S/N)"); scanf("%c",&r); } } return 0; } Fiz ajuste para o "while" verificar também letra minúscula e removi o "else", fazendo com que, se digitado número inválido, retorne para o "while".
  2. ScreenBlack

    Ajuda

    Testei o código acima, corrigindo apenas a máscara do "scanf()" e funcionou. O único erro que encontrei foi: printf("\nDigite qualquer tecla para excluir o registro do paciente --> %s",reg.nome,(pos+1)); Que deveria ser: printf("\nDigite qualquer tecla para excluir o registro do paciente --> %s",reg.nome); Segue o código exato que usei (mudei a função "main()" para o final, para sumir os "warning: Implicit declaration of function"
  3. ScreenBlack

    Ajuda

    Quando o usuário digita algo para o programa, essas informações ficam armazenadas em um buffer de entrada (stdin). O programa fará a leitura desse buffer para obter as informações utilizadas pelo programa. A tecla ENTER (quebra de linha) também é uma informação. Porém, quando utiliza a função "scanf()", ocorre a leitura dessa informação, excluindo o ENTER. Esse ENTER será lido na função seguinte ("gets(reg.data)"), fazendo com que ela passe direto. Uma forma de remover o ENTER do buffer, é utilizar o "%*c", como apresentei no post anterior.
  4. ScreenBlack

    Ajuda

    Troque o "scanf()" da data de ocorrencia, por esse: scanf("%d%*c", &reg.idade);
  5. Se você já possuir a rotina que percorre a árvore, basta ir calculando cada vez que ela desce um nível, indo da raíz até a folha.
  6. ScreenBlack

    Ajuda Codigo

    O erro deve ter sido por causa da formatação HTML do site. 1) Troque a expressão "®" por "&reg" 2) Troque a validação do switch por: do { do { system("cls"); printf("\t\n\t Digite uma das opcoes\n\n"); printf("\n\t [i] Incluir cadastro de paciente"); printf("\n\t [a] Alterar cadastro de paciente"); printf("\n\t [e] Excluir cadastro de paciente"); printf("\n\t [c] Consultar situacao "); printf("\n\t [l] Listar"); printf("\n\t [s] Sair"); printf("\n\n\n\t Opcao: \n"); gets(opcao); op = tolower(*opcao); } while( !strchr("iaecls",op) ); switch(op) { case 'i': incluir(); break; case 'a': alterar(); break; case 'e': excluir(); break; case 'c': consultar(); break; case 'l': listar(); break; case 's': exit(0); } } while(1);
  7. Acredito que, o que você esteja procurando é o que chamamos de ponteiro para função. Talvez esse link lhe ajude.
  8. Se você está começando a programar e faz de maneira diferente a do professor, então aconselho a prestar mais atenção nas aulas. O operador '&' (e ponteiro, em geral) é imprescindível nessa linguagem, caso deseje um código limpo, dinâmico e eficiente. A utilização desse operador, serve para retornar o ponteiro para a variável contida após ele. Geralmente utilizado quando uma função precisa receber um ponteiro e a variável que precisa ser passada não é. O código do colega @henrique.araujo está errado, na declaração da função para receber um ponteiro como parâmetro. Segue corrigido: #include <stdio.h> #include <stdlib.h> int exemplo(int *valor1) { int valor2; *valor1 = 10; // O '*' na frente, serve para alcançar o conteúdo referenciado pelo ponteiro. valor2 = 20; return valor2; } int main( ) { int retorno1 = 0; int retorno2 = 0; retorno2 = exemplo( &retorno1 ); // Passa o ponteiro para 'retorno1' como parâmetro printf ("retorno1: %d retorno2: %d\n", retorno1, retorno2); system("pause"); return 0; } PS: Vale lembrar que é sempre aconselhado iniciar as variáveis com um valor, para evitar que o programa acabe utilizando lixo de memória em seu processamento.
  9. Não tem mistério: int matriz[3][3] = {{0}}; int vetor[3] = {0}; int i = 0; int j = 0; // Leitura for ( i = 0; i < 3; i++ ) for ( j = 0; j < 3; j++ ) { printf("[%d][%d] Valor: ", i, j ); scanf(" %d", &matriz[i][j] ); } // Soma for ( i = 0; i < 3; i++ ) for ( j = 0; j < 3; j++ ) vetor[i] += matriz[i][j]; // Listar somas for ( i = 0; i < 3; i++ ) printf("[%d] Valor: %d\n", i, vetor[i] );
  10. Por causa da chamada "add(l, num);" depois de "cria();": l = cria(); l = add(l,num); Apenas a remova. Além disso, é aconselhado sempre iniciar as variáveis recém declaradas: int num = 0; char *cmd = NULL; char string_enter[50] = {'\0'}; struct Lista *l = NULL;
  11. ScreenBlack

    Questoes em c++

    Para a questão 10, pode simplificar da seguinte forma: void calcula (int *x, int *y) { *x += *y; *y = *x - (2 * *y); // Como o valor de X está somado Y, precisamos remover duas vezes de X o valor Y. } Chamada na função principal: calcula( &X, &Y ); printf("O Valor da soma de X e Y: %d \n", X); printf("O Valor da subtracao de X e Y: %d", Y); Na questão 11, precisa passar os vetores por parâmetros para a função: int vetor(int A[10], int B[10], int qtdElementos) { int Resultado = 0; int i = 0; for ( i = 0; i < qtdElementos; i++ ) Resultado += ( A[i] * B[i] ); return Resultado; } Trecho da função principal: for ( i = 0; i < 3; i++ ) { printf("digite o valor de A: "); scanf("%d", &A[i]); printf("digite o valor de B: "); scanf("%d", &B[i]); qtdElementos++; } Resultado = vetor(A, B, qtdElementos); printf("A soma do Produto escalar dos vetores: %i\n", Resultado);
  12. A alocação de memória está correta, apesar da variável ser do tipo float e estar alocando tamanho do tipo int, porém, são do mesmo tamanho (geralmente 32 bits ou 4 bytes). Testei seu código e rodou sem problemas. Talvez o(s) erro(s) esteja(m) na(s) fórmula(s). Isso eu não parei pra olhar.
  13. ScreenBlack

    Algoritmo para soma

    No "for()", está incrementando a variável soma em um a cada iteração. Troque a declaração para: for ( soma = 0; soma <= 9; )
  14. Pode utilizar a função round() da biblioteca math.h.
  15. 1) A utilização do sizeof já é o informativo do tamanho alocado. Comumente, tipo char possui 8 bits (1 Byte) e int possui 32 bits (4 Bytes). 2) O exemplo que você postou, é nativo da linguagem C. Em C++, utiliza-se o operador new. Portanto, você já misturou C com C++, provando ser possível. :P Referência para: malloc Referência para: new 3) Não se deve faze typecast para retorno da função malloc, pois está forçando o compilador a entender que o tipo será sempre verdade. Caso utilize um tipo diferente, o programa gerará erro e não mostrará a mensagem na tela.
×
×
  • Criar Novo...