Hazzu

Membros
  • Content Count

    29
  • Joined

  • Last visited

Community Reputation

0 Neutro

About Hazzu

Recent Profile Visitors

99 profile views
  1. Atente que o recuo horizontal é função unicamente da coluna, sendo 0 para a primeiro coluna (c=0) e máximo para a última coluna (c=3). Então: Deverá ser: if (opcao == 3){ for (l = 0; l < 4; l++){ for (c = 0; c < 4; c++){ if (l + c == 3){ //imprimindo recuo for (s=0; s<c; s++) printf(" "); //desta vez coloquei 3 espaços //imprimindo numero; printf("%d\n",mat[l][c]); } } } }
  2. Hazzu

    Ficheiros

    Seria um arquivo zip?
  3. Hazzu

    Ficheiros

    Não entendi sua pergunta. Para ler um arquivo qualquer, basta informar seu endereço ao fopen.
  4. Mudar para: if (opcao == 2){ for (l = 0; l < 4; l++){ //Imprimindo espaçamento for (s=0; s<l; s++) printf(" "); //Neste caso coloquei 2 espaços, mas você pode ajustar para ficar compativel com o espaçamento entre linhas //Imprimindo número printf ("%d\n", mat[l][l]); } cout << "\n"; }
  5. Exatamente. A ideia é escrever espaços para deslocar os números e alinha-los diagonalmente. Para o primeiro número, 0 espaços, para o segundo, 1 espaço, para o terceiro, 2 espaços. Note que acaba sendo o índice da coluna daquele número a quantidade de espaços necessários antes dele. Você também pode adotar um espaçamento maior, como 2 espaços a cada linha, de forma a compatibilizar melhor o espaçamento vertical e horizontal.
  6. Provavelmente é o velho problema da função scanf para ler caracteres e strings. A quebra de linha deixada na leitura de B ficar armazenada no buffer e é inserida para C. Alguns indicam colocar um espaço como você fez, para contornar esse problema, mas para mim nunca funcionou. Aconselho o uso da função fgets e pesquise na internet sobre como limpar o buffer do teclado (stdin).
  7. Nesse caso x tem que ser uma variável, não um valor. Note que no seu caso, a variável é letra, e 'x' apenas um valor dela. Você pode fazer assim: #include <stdio.h> int main (){ int numero1 =5 ; float numero2 =4.5 ; float x=666.5; float somadeTodos; printf("Numero 1: %i", numero1); printf("\nNumero 2: %f", numero2); printf("\nValor de x: %f", x); somadeTodos = numero1+numero2+x; printf("\nSoma: %f\n", somadeTodos); return 0; } Mas parece que você quer transformar programação em notação matemática. Em programação 148,8x será uma string, não uma operação. Se você quiser mesmo assim gerar uma string dessa forma, pode usar a função sprintf: #include <stdio.h> int main (){ int numero1 =5 ; float numero2 =4.5 ; char letra='x'; char expressao[20]; printf("Numero 1: %i", numero1); printf("\nNumero 2: %f", numero2); printf("\nLetra: %c", letra); sprintf(expressao, "%.2f+%c", numero1+numero2, letra); //.2f é para imprimir com apenas 2 casas decimais printf("\nExpressão: %s\n",expressao); return 0; }
  8. O que você quer? Uma string 123123x ou um resultado inteiro, considerando o caractere com seu código ASCII? O correto é somadeTodos = numero1+numero2+letra; Como você declarou somadeTodos como inteiro, o resultado da soma será inteiro. Para isto, C vai converter o numero float em inteiro e o caractere x também (x equivale a 120 na tabela ASCII). Desta o cálculo será 123+123+120=366. #include <stdio.h> int main (){ int numero1 =123 ; float numero2 =123 ; char letra= 'x'; int somadeTodos; printf("Numero 1: %i\n", numero1); printf("Numero 2: %i\n", numero2); printf("Letra: %c\n", letra); somadeTodos = numero1+numero2+letra; printf("Soma: %i\n",somadeTodos); return 0; }
  9. Hazzu

    Cardápio em C

    Dei uma consertada nesse seu código e implementei a ideia que te falei. Também seria uma alternativa ao uso de ponteiros retornar o preço para a função pricipal, fazendo funções do tipo float controlador(bebida). Leia as observações que eu fiz e se tiver alguma duvida pergunte. Além disso, continue desenvolvendo o código, ele necessita de melhorias. //Cabeçalhos #include <stdio.h> #include <stdlib.h> #include <locale.h> //Assinatura das funções. É melhor colocar a somente a assinatura no início, evitando problemas de sintaxe e melhorando o sequenciamento do codigo void entrada (); int menu (); void controladorapizza (float * preço); void controladorabebida (float * preço); //Função principal int main(){ int op; float precototal=0; //É melhor que o preço seja do tipo real, pois eventualmente você pode querer colocar produtos com preços envolvendo centavos //Você comente isso kkk setlocale(LC_ALL,""); //Apresentação do programa entrada(); do{ op = menu(); switch(op){ case 1: controladorapizza(&precototal); //Passando o endereço do preço total, para que posso ser alterado na função break; case 2: controladorabebida(&precototal); break; } }while(op != 3 ); //Encerrando o programa e imprimindo o custo dos produtos printf("\n----------------------------------------\nCusto total dos produtos: %.2f\n----------------------------------------\n", precototal); return 0; } void entrada (){ printf ("*************************************\n"); printf ("**** Bem Vindo ****\n"); printf ("**** A ****\n"); printf ("**** UNIPIZZA ****\n"); printf ("*************************************\n"); } int menu (){ int op; printf (" \nCardapio \n\n"); printf ("1 - Pizzas. \n"); printf ("2 - Bebidas. \n"); printf ("3 - Finalizar o pedido.\n"); printf ("Digite a opção desejada: \n"); scanf("%d", &op); return op; } void controladorapizza (float * preço) { //preço é um ponteiro que apontará para a variavel cujo o endereço seja passado, no caso precototal da função int main int oppizza; printf ("\n1 - Pizza Mussarela - 18,00 R$ \n"); printf ("2 - Pizza Calabresa - 18,00 R$ \n"); printf ("3 - Pizza Franco com Catupiry - 18,00 R$ \n"); printf ("4 - Pizza Quatro Queijos - 22,00 R$ \n"); printf ("5 - Pizza Portuguesa - 22,00 R$ \n"); printf ("Digite a opção desejada: \n"); scanf ("%d", &oppizza); switch (oppizza){ case 1: printf ("\nVocê adicionou pizza de Mussarela a sua bandeja!\n"); *preço += 18; //Acrescentando produto no preço break; case 2: printf ("\nVocê adicionou pizza de Calabresa a sua bandeja!\n"); *preço += 18; break; case 3: printf ("\nVocê adicionou pizza de Pizza Franco com Catupiry a sua bandeja!\n"); *preço += 18; break; case 4: printf ("\nVocê adicionou pizza de Quatro Queijos a sua bandeja!\n"); *preço += 22; break; case 5: printf ("\nVocê adicionou pizza de Portuguesa a sua bandeja!\n"); *preço += 22; break; default: printf ("\nValor incorreto, tente novamente\n"); break; } } void controladorabebida (float * preço) { int opbebida; char str [20]; printf ("\n1 - Suco - 5,00 R$ \n"); printf ("2 - Refrigerante Lata - 4,00 R$\n"); printf ("3 - Refrigerante 2L - 13,00 R$\n"); printf ("Digite a opção desejada:"); scanf ("%d", &opbebida); switch (opbebida){ case 1: printf ("\nInforme o sabor do suco: \n"); scanf ("%s", str); //Não é &str, pois str já é um ponteiro, um endereço de memória printf ("\nVocê adicionou suco de %s a sua bandeja!\n", str); *preço += 5; break; case 2: printf ("\nInforme o refrigerante lata: "); scanf ("%s", str); printf ("\nVocê adicionou %s lata a sua bandeja!\n", str); *preço += 4; break; case 3: printf ("\nInforme o refrigerante 2 Litros: "); scanf ("%s", str); printf ("\nVocê adicionou %s 2 Litros a sua bandeja!\n", str); *preço += 13; break; default: printf ("\nComando incorreto, tente novamente\n"); break; } } kkkk Depois de enviar minha resposta que eu vi. Aproveite para comparar
  10. Quando você executa o programa, ele inicia na função main() (função principal). Se você não chamar a funcão primofunção() dentro da main(), ela jamais será executada, pois o programa é encerrado ao atingir o return da main.
  11. A biblioteca math.h tem a função pow(numero, potencia). Mas imagino que você tem que implementar uma função do zero. //Função para calcular a potência de um número int pot(numero, expoente){ int i, resultado=1; //resultado começa com 1 para caso expoente=0, não entrara no laço e retornará 1 for (i=1; i<=expoente; i++){ resultado *= numero; //resultado é multiplicado pelo numero } return resultado;
  12. Hazzu

    Cardápio em C

    Agora não estou no computador, mas vou te passar a ideia. Crie uma variável precototal na função principal e passe o endereço dela (&precototal) para as funções secundárias (esse valor será recebido por um ponteiro, float *preço, por exemplo). Desta forma, você poderá adicionar produtos ao preço total nas funções fazendo *preço+=precoproduto (o valor apontado por preço é acrescido do valor do produto)
  13. #include <stdio.h> #include <stdlib.h> int main(){ int n, maior, menor, first; first = 1; //Verdadeiro while (1){ printf("Insira um valor (0 para sair): "); scanf("%d", &n); if (!n) break; //Encerrar o laço quando n=0 -> n=falso -> !n=verdadeiro if (first){ maior = n; //Inicializando as variaves com o primeiro valor digitado, visto que não temos ideia do intervalo de valores que o usuários ira inserir menor = n; first=0; //Falso } else{ if (n>maior) maior = n; //Comparação if (n<menor) menor=n ; } } printf("Menor numero: %d\nMaior numero: %d\n", menor, maior); //Impressão de resultados return 0; } Bom, não é mencionado que os números serão todos naturais.
  14. Não sei o que você quer fazer com esses valores. Da forma que está aí ele vai ler 12 valores da primeira linha, inclusive o ano. Também você não mostrou todo o código. Aparentemente você vai ler as temperaturas de um ano e retornar algumas estatísticas sobre esses valores. Enfim, não há como saber. Com relação a sintaxe, É necessário informar o arquivo de leitura: fscanf(arqresp, "%f", &vet[i]); /*essa é a parte que esta errada e não sei como arrumar*/ Note também que numa linha existem 13 valores, pois o primeiro equivale ao ano. Então, for (i = 0; i < 12; i++) { fscanf("%f", &vet[i]); /*essa é a parte que esta errada e não sei como arrumar*/ } Ficará: for (i = 0; i < 13; i++) { fscanf("%f", &vet[i]); /*essa é a parte que esta errada e não sei como arrumar*/ } Sendo o primeiro valor do vetor o ano correspondente.