Wilkyn Fernandes Taborda
Members-
Total de itens
73 -
Registro em
-
Última visita
Tudo que Wilkyn Fernandes Taborda postou
-
Erro de FALHA DE SEGMENTAÇÃO
Wilkyn Fernandes Taborda respondeu ao tópico de natalia_oliveira em C/C++
Na função principal quando você chama as funções preordem, emordem e posordem você passa através de parâmetros valores diferentes do especificado na lista de parâmetros dessas funções. Elas estão esperando receber valores de um tipo e recebem de outro. O valor inteiro da variável raiz é passado no lugar de um ponteiro de tree. Passar valores de tipo diferente do especificado e esperado pelas funções em C mesmo sendo aceito pelo compilador e criado o programa faz com que ele trave durante sua execução. -
Lista Encadeada ERRO Inserção do Final da Lista
Wilkyn Fernandes Taborda respondeu ao tópico de Nathalia Lucca em C/C++
O programa não mostra o último valor inserido por que as linhas de código que imprimem esse valor estão comentadas. Retire as barras duplas das funções de impressão que o valor será mostrado. -
Exatamente. Dividindo um número pela sua base, o quociente dessa divisão novamente por essa mesma base, fazendo assim por diante até que o quociente seja menor do que essa base e pegando-se esse último quociente juntamente com todos os restos das divisões anteriores obtém-se todos os algarismo individuais de um número: int vetor[50];/*Vetor de algarismos. Cada posicao desse vetor guarda um dos algarismos do numero original*/ int i=0; void limpaalgarismos(){//serve para limpar o vetor de algarismos i=0; } void algarismos(int num){/*Funcao que armazena somente 1 algarismo do numero por vez no vetor de algarismos*/ int quociente,resto; if(num<10) vetor[i]=num; else{ quociente=num/10; resto=num%10; vetor[i]=resto; i++; algarismos(quociente); } } int umalgarismo(){ int j,soma=0; for(j=i;j>=0;j--) soma=soma+vetor[j]; while(soma>=10){ limpaalgarismos(); algarismos(soma); soma=umalgarismo(); } return soma; } int main(){ int N=1,M=1; for(;;){ scanf("%d",&N); scanf("%d",&M); if((N==0)&&(M==0)) return; algarismos(N); N=umalgarismo(); limpaalgarismos(); algarismos(M); M=umalgarismo(); limpaalgarismos(); if(N>M) printf("1"); else if(N<M) printf("2"); else printf("0"); printf("\n"); } }
-
rafael_iftm após o programa entrar nos dois laços que fazem a leitura dos elementos da matriz representados por linha e coluna ele faz uma comparação para ver se o elemento digitado e armazenado na matriz principal é igual ao elemento que está na matriz auxiliar e se for o programa vai dizer que o número está repetido e que é para o usuário digitar outro porém ele sempre irá dizer que o número digitado é repetido mesmo que ele não seja pois toda vez que ele lê um valor digitado tanto a matriz principal quanto a auxiliar recebem esse mesmo valor e após isso é feita a comparação para ver se o valor dos dois é igual o que resultará sempre em verdadeiro. Isso não é um erro de programação mas é um erro de lógica. Outro erro de lógica que tem nesse mesmo programa é que mesmo que o usuário digite números repetidos o programa nem sempre irá exibir o aviso e nem pedir para digitar de novo pois mesmo com a lógica errada ele só compara uma vez para ver se o valor é repetido e após isso pula para a leitura e armazenamento do valor da próxima posição da matriz sem verificar. Para consertar o programa devemos fazer uma rotina de verificação que compara o último valor digitado com todos os anteriores já armazenados na matriz e então ver se há algum igual. O programa do Nefisto está funcionando certinho e já inclui essa rotina de verificação porém como ele mesmo diz falta a rotina de verificação do menor valor da matriz e também do maior. Aqui vai um código que mostra como achar e mostrar o menor e o maior valor dessa matriz e suas respectivas posições: int main(){ int matriz[5][5],i,j,guarda_i,guarda_j,menor=32768,maior=0; /*Assumimos aqui que todos os valores digitados e sem repetidos ja estao guardados na variavel matriz para que eu nao precise aqui refazer o programa todo*/ for(i=0;i<5;i++) for(j=0;j<5;j++) if(matriz[i][j]<menor){ menor=matriz[i][j]; guarda_i=i; guarda_j=j; } printf("O menor valor e %d nas posicoes %d e %d",matriz[i][j],guarda_i,guarda_j); for(i=0;i<5;i++) for(j=0;j<5;j++) if(matriz[i][j]>maior){ maior=matriz[i][j]; guarda_i=i; guarda_j=j; } printf("\nO maior valor e %d nas posicoes %d e %d",matriz[i][j],guarda_i,guarda_j); system("pause"); }
-
Programa que simula uma corrida de 5 voltas com 10 corredores: #define NUM_CORREDORES 10 #define NUM_VOLTAS 5 int pista[NUM_CORREDORES]; int main(){ int i,j,k,temp; printf("Pre-largada\n"); for(i=0; i<NUM_CORREDORES; i++) printf("\nCorredor %d: 1",i+1); k=0; for(i=0; i<NUM_CORREDORES; i++) pista[i]=0; for(i=0; i<NUM_VOLTAS;){ temp=(rand()%10)+1; for(j=0; j<NUM_CORREDORES; j++) if(temp==pista[j]) break; if(j==10){ pista[k]=temp; k++; } if(k==10){ i++; printf("\n\nVolta %d",i); for(k=0; k<NUM_CORREDORES; k++) printf("\nCorredor %d: %d",k+1,pista[k]); k=0; for(j=0; j<NUM_CORREDORES; j++) pista[j]=0; } } system("pause"); }
-
Dúvida - Lista Encadeada C - Zivianni
Wilkyn Fernandes Taborda respondeu ao tópico de Thiago Medeiros_80190 em C/C++
Não dá erro algum. Funciona se tirar qualquer um dos dois ou até mesmo os dois.- 3 respostas
-
- lista encadeada
- linguagem c
- (e mais 1 )
-
[Resolvido]Somar todas diagonais de uma matriz
Wilkyn Fernandes Taborda respondeu ao tópico de henriquemss em C/C++
Primeiramente no programa do henriquemss. Na seguinte linha de código: result = 0 ; dá erro de tipos incompatíveis em atribuição por que você está querendo atribuir um valor inteiro que é zero a um vetor de inteiros que é result. Isso acontece por que result não é uma variável de um único inteiro mas sim uma variável vetor de variáveis do tipo inteiro ou seja um conjunto de inteiros composto por mais de uma variável desse mesmo tipo armazenadas sequencialmente na memória. Dá esse erro por que o valor que se quer atribuir é diferente do tipo de valor que aquela variável pode armazenar. Um vetor de inteiros não pode armazenar um único inteiro. Modifica-se colocando o índice do vetor à direita após o nome: result[i] = 0 ; Após isso o compilador parará de emitir a mensagem de erro. Ainda há erros de lógica que não são reconhecidos pelo compilador. Na seguinte linha de código: result [ k ]=mat[ j ]; result na posição k está recebendo um endereço de memória e não um valor inteiro. mat é uma matriz bidimensional e mat[j] indica o endereço de memória da linha j da matriz e não o seu valor. Deve-se incluir o segundo índice da matriz: result [ k ]=mat[ i ][ j ]; e isso vale também para a linha: result[ k ]+= mat [ a ]; que fica: result[ k ]+= mat [ a ][ b ]; A variável aux está declarada mas não está sendo usada. Pode ser retirada do programa. O mesmo vale para a biblioteca math.h e a variável soma. Em: printf ( "\t%d " , mat [ j ]); e printf ( "%d " , result ); o programa está imprimindo endereços de memória dessas duas variáveis convertidos para inteiro e não valores. Então fica: printf ( "\t%d " , mat [ i ] [ j ]); e: printf ( "%d " , result [ i ] ); Agora no programa do Nefisto. #define MIN ( a , b ) a < b ? a : b #define ZERO ( O , tmp ) O > 0 ? 0 : tmp O programa não compila e o compilador acusa erros por que essas duas macros estão definidas utilizando nomes de variáveis que não estão no programa que são b e O. O meu código simples para resolver esse problema é: #define M 4 #define N 3 int main (){ int i,j,pula_diagonal; int mat [M][N]={{1,2,3},{4,5,6},{7,8,9},{10,11,12}}, result[M+N-1]; for (i=0; i<M+N-1; i++) result[i]=0; int k=0; pula_diagonal=0; for (j=0;j<=2;j++){ k=0+pula_diagonal; for(i=0; i<=3 ; i++){ result[k]+=mat[i][j]; k++; } pula_diagonal++; } for(i=0;i<M;i++){ for(j=0;j<N;j++) printf ( "%d ",mat[i][j]); printf("\n"); } printf("\n"); for(i=0;i<M+N-1;i++) printf("%d ",result[i]); system("pause"); } -
Existe um operador que me mostre o módulo do número?
Wilkyn Fernandes Taborda respondeu ao tópico de savio80 em C/C++
int main(){ char codigo[6]; int digitov,s=0,i,j; printf("Digite um codigo com 5 digitos para ver o digito verificador:"); scanf("%s",codigo); for(i=0,j=6;(i<5)&&(j>1);i++,j--) s = s + (codigo[i]*j); printf("\nO digito verificador e:%d ",s%7); system("pause"); } -
Existe um operador que me mostre o módulo do número?
Wilkyn Fernandes Taborda respondeu ao tópico de savio80 em C/C++
Esta mensagem aqui está postada errada. Peço para algum moderador apagar por favor. -
Felipp, o que diz está errado pois a saída nesse caso deve ser {1,3,4,6,2} já que são os valores do vetor antes de ele ser ordenado. Lendo o seu enunciado vejo que o que você quer fazer é ordenar os valores em um vetor mas somente após isso mostrar esse vetor com os seus valores antes dessa ordenação. Sendo assim dá para fazer exatamente como a _Isis_ e o r.vinícius dizem e aplicar um algoritmo de ordenação nesse vetor após fazer uma cópia dele para poder mostrar na tela os valores em sua ordem original antes dessa ordenação. Aqui vai o código para isso: #include<iostream.h> int main(){ int v[5]={1,3,4,6,2}; int vcopia[5],aux; for(int i=0; i<5; i++) vcopia[i]=v[i]; for(int i=0; i<4; i++) for(int j=i+1; j<5; j++) if(v[i]<v[j]){ aux=v[i]; v[i]=v[j]; v[j]=aux; } for(int i=0; i<5; i++) cout << vcopia[i] << " "; system("pause"); }
-
Como verifico se os números dentro do vetor é primo ?
Wilkyn Fernandes Taborda respondeu ao tópico de brenodovale em C/C++
Nefisto, eu não consigo entender o por quê de você fazer um código tão complicado assim desse jeito para simplesmente resolver o problema de verificar se os números de um vetor são primos ou não. Aqui vai o meu código simplificado para isso: #include<iostream.h> int main(){ int numeros[10]; cout << "Digite 10 numeros para saber quais sao os primos:"; for(int i=0; i<10; i++) cin >> numeros[i]; for(int i=0; i<10; i++){ if(numeros[i]==1) cout << numeros[i] << ": Este numero e primo." << endl; else if(numeros[i]==0) cout << numeros[i] << ": Este numero nao e primo." << endl; else{ for(int j=2;j<numeros[i];j++){ if(!(numeros[i]%j)){ cout << numeros[i] << ": Este numero nao e primo." << endl; break; } if(j==(numeros[i]-1))cout << numeros[i] << ": Este numero e primo." << endl; } } } system("pause"); } -
Dado um vetor inteiro calcular média e desvio padrão
Wilkyn Fernandes Taborda respondeu ao tópico de tony_alfa em C/C++
O programa trava na seguinte linha de código: scanf ( "%f" , vetor [ i ]); Isso se deve ao fato de aqui se ter esquecido de inserir o operador de endereço de memória que é o &. Você deve informar para a função de leitura scanf o endereço de memória da variável para a qual você quer ler um valor e não a variável em si. Caso contrário o programa irá travar como é esse o caso. Então a partir da hora em que você adiciona o operador de endereço de memória & nessa linha de código que está fazendo o programa travar o programa simplesmente pára de travar e executa normalmente até o seu final. Colocamos-o logo à esquerda do nome da variável para a qual se quer ler o valor digitado. Então vai ficar: scanf ( "%f" , &vetor [ i ]);- 2 respostas
-
O nome da variável vetor para a qual você está lendo um caractére para cada posição dentro do laço de repetição está errado. Está escrito quesaot na hora em que faz a leitura do caractére quando na verdade o nome correto é questao bem como está na seguinte linha abaixo dessa que eu digo como bem podemos ver na comparação dela com a variável vetor gab e também gab2. A letra t está adiante das letras a e o quando na verdade como bem podemos ver no código ela vem antes dessas duas letras até mesmo para que o nome dessa mesma variável faça sentido por ser a forma mais próxima da palavra "questão" do idioma português. Usar nomes errados de variáveis em linguagem C é um erro de programação e se não for consertado esse erro o compilador não permitirá a criação do programa por ele não saber que os dois nomes diferentes na verdade se tratam da mesma variável. É por isso que o seu programa não funciona mas além disso há mais coisas erradas nele: Exato. A falta do operador de endereço & vai fazer com que o seu programa trave e não funcione pois a função scanf necessita dele para poder fazer a leitura de um caractére para cada posição da variável vetor questao. Outra coisa errada que tem é que utilizar espaços entre as aspas e o %c na função de leitura de caractére scanf irá fazer com que o programa não funcione como deve pois ele irá ler muito mais caracteres digitados pelo usuário do que o pretendido mesmo que ele armazene no vetor somente a quantidade que se quer. Isso também é erro. Então a linha de código do seu programa: scanf(" %c ", quesaot[j]); Após corrigidos os erros de nome errado de variável, falta de operador de endereço & e espaços desnecessários entre as aspas da função de leitura de caractére scanf irá ficar: scanf("%c", &questao[j]);
-
Imprimir os pares: int main(){ int i,vet[10],cont; printf("Digite 10 numeros:"); for(i=0;i<10;i++) scanf("%d",&vet[i]); printf("Os 5 primeiros pares sao:"); cont=0; for(i=0;i<10;i++) if(((vet[i]%2)==0)&&(cont<5)){ printf("%d\n",vet[i]); cont++; } system("pause"); } Imprimir os ímpares: int main(){ int i,vet[10],cont; printf("Digite 10 numeros:"); for(i=0;i<10;i++) scanf("%d",&vet[i]); printf("Os 5 primeiros impares sao:"); cont=0; for(i=0;i<10;i++) if(((vet[i]%2)==1)&&(cont<5)){ printf("%d\n",vet[i]); cont++; } system("pause"); } O código dos dois programas é praticamente o mesmo porém muda na hora de comparar o valor do resto da divisão por dois para ver se ele é igual a zero no caso dos pares e um no caso dos ímpares.
-
Iniciante em C uso de struct dúvidas
Wilkyn Fernandes Taborda respondeu ao tópico de adrianoasg em C/C++
Um carrinho é um vetor de produtos e nesse caso consequentemente um vetor de estruturas Produto. Por exemplo, um carrinho com a capacidade de guardar 100 produtos é: Produto carrinho [100]; então nesse caso para cada produto colocado dentro do carrinho vai ser utilizado 1 posição do vetor. As posições não utilizadas do vetor carrinho significam o espaço vazio dentro do carrinho que ainda pode ser utilizado para se colocar produtos. Se todas as posições do vetor carrinho estão ocupadas significa que não há mais espaço dentro do carrinho. Essa é uma das formas de se fazer uma variável do tipo carrinho mas outra é fazer o carrinho sendo uma estrutura com uma variável que irá contar a quantidade de um determinado produto que há dentro dele: struct Produtos_no_carrinho{ Produto produto; int quantidade; }carrinho[100]; Nesse último caso não há a necessidade de se usar 1 posição a mais do vetor carrinho para cada unidade a mais de um mesmo produto que houver dentro dele, apenas aumenta-se o valor da variável quantidade, ao contrário da maneira anterior aonde a quantidade não é especificada. Quando em determinada posição do vetor carrinho a quantidade de produtos for zero isso significa que aquele espaço do carrinho está vazio e pode ser colocado produtos nele. -
Na verdade nesse seu código o vetor já está declarado na função principal e não há a necessidade de retorná-lo para ela por que ele já faz parte dela. Por esse motivo o retorno é redundante.
-
Ajuda com programa - não sei como fazer este if
Wilkyn Fernandes Taborda respondeu ao tópico de rafaellima21 em C/C++
A variável caractére sexo nunca terá um valor atribuído a ela por que o programa está lendo a partir da entrada de dados do usuário para o vetor de caractéres sexo de duzentas posições do vetor log de estruturas do tipo cadastro e não está repassando esse valor da cadeia de 200 caractéres para a variável de somente 1 caractére. A variável sexo de somente 1 caractére vai sempre ter um valor indefinido. Ela não é inicializada e nem valor algum é atribuído a ela. Para esse if funcionar você tem que ler a variável sexo de somente 1 caractére diretamente com alguma função de leitura ou então ler o valor caractére que representa o sexo em outra variável e depois copiar esse mesmo valor para essa. Por exemplo: sexo = getchar(); Assim a variável sexo já irá armazenar automaticamente a letra digitada pelo usuário que define o sexo que nesse caso vai ser m ou f. -
Se usar tipo string para calcular o que será mostrado na tela irá dar erro na contagem dos loops, o programa vai travar e não vai funcionar. Nós não usamos vetores de caracteres para armazenar e manipular valores inteiros sem que haja a necessidade. Pra isso existe o tipo int e ele se encaixa perfeitamente nesse programa. int main(){ int i,j,numero; printf("Digite um numero:"); scanf("%d",&numero); for(i=0;i<numero;i++){ for(j=0;j<=i;j++) printf("%d ",j+1); printf("\n"); } system("pause"); }
-
Na verdade há duas linhas erradas e não apenas uma. Uma delas é essa que você diz. Por causa do caractere "e comercial" (&) a função printf irá mostrar o endereço de memória da matriz m e não o seu valor. Consequentemente irá aparecer um monte de números "estranhos" na hora de imprimir eles na tela bem como você diz. A outra linha errada é: scanf("%d", &m[j]); Faltam nessas duas linhas de código citadas o segundo índice da matriz m para que as 100 posições tenham seus valores lidos e depois armazenados nela. Como essa matriz é de 10 por 10 posições então não há como o programa armezenar e mostrar corretamente os 100 valores digitados se não for informado o segundo índice que corresponde as colunas da matriz sendo que o primeiro corresponde as linhas. Informar somente as linhas e não as colunas dá em resultados errados na hora de guardar e também mostrar os valores. Então respectivamente: scanf("%d", &m[j]); e printf("%d", &m[j]); Irá ficar: scanf("%d", &m[i][j]); e printf("%d", m[i][j]);
-
Bug em programa alocação dinâmica de vetores
Wilkyn Fernandes Taborda respondeu ao tópico de ESMA em C/C++
Os dois programas acima estão usando a biblioteca string.h mesmo não fazendo nenhuma chamada de função à ela. É desnecessário. A linha de código #include<string.h> pode ser removida por que linhas de código desnecessárias como essa apenas fazem com que o código-fonte fique sujo e poluído. Isso que eu digo é chamado de "limpar o código". É tirar o que não serve e deixar somente o que o programa necessita. Abaixo o programa funcionando: #include<iostream.h> struct no_num{ int num; no_num *prox; }; int main(){ no_num *primeiro=new(no_num); no_num *ultimo=primeiro; int num=1; while(num!=0){ cout << "Digite algum numero. 0 para parar:"; cin >> num; ultimo->num=num; ultimo->prox=new(no_num); ultimo=ultimo->prox; ultimo->prox=NULL; } cout << endl << "Numeros digitados:"; for(no_num *temp=primeiro;temp->prox->prox!=NULL;temp=temp->prox) cout << endl << temp->num; system("pause"); } -
N consigo fazer o exercicio
Wilkyn Fernandes Taborda respondeu ao tópico de raphaelli.bellini em C/C++
A variável y não está inicializada antes do seu uso na função principal o que fará com que o programa armazene os valores lidos maiores ou iguais a 30 em posições incorretas do vetor por que a variável que é usada como índice desse vetor não tem um valor definido. Deve-se inicializar ela com 0 antes de usá-la para que o primeiro valor lido seja armazenado na primeira posição desse vetor que é a posição 0 e consecutivamente os outros valores maiores ou iguais a 30 nas posições seguintes. Somente esse erro. De resto o programa está funcionando perfeitamente. -
É verdade. Se não for declarado os protótipos das funções de inserir, montar e mostrar as matrizes o programa não será compilado pois a função principal não sabe que funções são essas a não ser que sejam especificadas em seus protótipos antes mesmo de o programa chamar a função principal. As funções InsereMatrizA e InsereMatrizB não irão guardar os valores corretamente nas matrizes A e B por que durante a leitura e armazenamento dos valores lidos o programa está armazenando esses valores apenas na posição 0 de cada uma dessas duas matrizes. Ele irá ler 7 valores para cada uma das duas porém irá armazenar todos os 7 na primeira posição que é a 0 o que fará com que um valor sobrescreva o outro na matriz e no final dos 7 valores lidos para cada uma as matrizes ficarão cada uma apenas com 1. Dos 14 valores lidos que devem ser armazenados nas matrizes A e B apenas 2 serão por causa da sobrescrição. Isso vai fazer com que 6 dos valores de cada matriz fiquem faltando, totalizando 12 por ser duas. A matriz C está guardando em suas posições apenas 2 valores dos 14 que deve guardar. Todas as 3 matrizes A,B e C estão guardando nelas mesmas apenas 1/7 dos valores que devem. Nas funções de mostrar as matrizes A,B e C o erro é quase o mesmo porém ao invés de ser na leitura dos valores é ao mostrá-los pois será para cada uma das matrizes A e B mostrado 7 vezes o mesmo valor que é o da primeira posição de cada uma delas. No caso da matriz C será mostrado 7 vezes multiplicado por 2 o que totaliza 14. Então dos 14 valores de C aparecerá apenas dois e 7 vezes cada um desses dois. É uma repetição desnecessária ficar mostrando várias vezes os mesmos valores das mesmas posições do vetor. Durante a leitura dos valores para as matrizes e também seu armazenamento está sendo usado apenas a primeira dimensão das matrizes como índice o que fará com que o programa compile, execute e leia os valores do teclado normalmente porém na hora de mostrar os valores lidos irá mostrar números completamente diferentes dos que estão sendo lidos. O compilador não acusa isso como sendo erro mas emite aviso pela falta do segundo índice de cada matriz. Os valores irão aparecer errados por que não está sendo especificado qual posição da segunda dimensão das matrizes é para eles serem armazenados e depois mostrados sendo que todas essas matrizes possuem duas dimensões e não apenas uma. Por isso o erro. Por causa de todas essas coisas o programa está errado e deve ser reprogramado. Uma grande parte dele está feita da forma certa sem erros então esse código pode ser reaproveitado, seus erros corrigidos e ele funcionará perfeitamente fazendo exatamente o que pede o enunciado. Você está fazendo a leitura dos valores a ser armazenados nos vetores A e B com o formatador %i nas funções o que mesmo não sendo reconhecido como erro pelo compilador e nem fazendo que esse mesmo emita aviso faz com que o programe trave durante a execução e o sistema operacional diga que é preciso fechá-lo por ter encontrado um problema nele. Então pelo fato de acontecer tudo isso quando se usa %i na função scanf isso pode muito bem ser considerado um erro de programação. Para ficar certo deve-se substituir o %i por %d nas funções de leitura dos valores. Usar %i nas funções printf nesse caso também não é recomendado pelo fato dos índices das matrizes ser números inteiros decimais e não hexadecimais. O formatador %i é usado para mostrar valores hexadecimais então como não está sendo usado esse tipo de valor no programa é bom substituir onde tem %i por %d pois %d significa valor inteiro decimal o que é exatamente os tipos dos índices das matrizes. Abaixo está o programa refeito a partir desse mesmo código. Modificando-se apenas algumas poucas coisas e assim funcionando da forma correta e não devendo nada ao que pede o enunciado: #include<stdio.h> #include<stdlib.h> int A[7][1], B[7][1], C[7][2]; int i,j; void Insere_MatrizA(); void Mostra_MatrizA(); void Insere_MatrizB(); void Mostra_MatrizB(); void Monta_matrizC(); void Mostra_MatrizC(); int main() { Insere_MatrizA(); Mostra_MatrizA(); Insere_MatrizB(); Mostra_MatrizB(); Monta_matrizC(); Mostra_MatrizC(); system("pause"); return 0; } void Insere_MatrizA() { printf("Insira o valor da matriz A \n"); printf("\n"); for(i=0; i < 7; i++) { for(j=0; j < 1; j++) { printf("Digite o valor da posicao %d %d: ", i+1, j+1); scanf("%d",&A [i][j]); } } } void Mostra_MatrizA() { printf("\n A matriz A e: "); printf("\n"); for(i=0; i < 7; i++) { printf("\n"); for(j=0; j < 1; j++) { printf(" %d ",A[i][j]); } } } void Insere_MatrizB() { printf("\n Insira o valor da matriz B \n"); printf("\n"); for(i=0; i < 7; i++) { for(j=0; j < 1; j++) { printf("Digite o valor da posicao %d %d: ", i+1, j+1); scanf("%d", &B[i][j]); } } } void Mostra_MatrizB() { printf("\n A matriz B e: "); printf("\n"); for(i=0; i < 7; i++) { printf("\n"); for(j=0; j < 1; j++) { printf(" %d ",B[i][j]); } } } void Monta_matrizC() { C[0][0] = A[0][0]; C[1][0] = A[1][0]; C[2][0] = A[2][0]; C[3][0] = A[3][0]; C[4][0] = A[4][0]; C[5][0] = A[5][0]; C[6][0] = A[6][0]; C[0][1] = B[0][0]; C[1][1] = B[1][0]; C[2][1] = B[2][0]; C[3][1] = B[3][0]; C[4][1] = B[4][0]; C[5][1] = B[5][0]; C[6][1] = B[6][0]; } void Mostra_MatrizC() { printf("\n"); printf(" A matriz C e: "); printf("\n"); for(i=0; i < 7; i++) { printf("\n"); for(j=0; j < 2; j++) { printf(" %d ", C[i][j]); } } }
-
Esse código não irá gerar um número entre 1 e 1000 mas sim entre 0 e 999 incluindo os extremos. Pra que gere entre um e mil incluindo os extremos você deve incrementar essa variável numAleatorio em um após fazer o código acima usando essa linha: numAleatorio++; Abaixo está o código desse programa funcionando perfeitamente e fazendo tudo que o enunciado pede: #include<stdlib.h> int main(){ int i,j,vetor[50],valortemp; srand(time(NULL)); for(i=0;i<50;i++) vetor[i]=-1; for(i=0;i<50;i++){ valortemp=rand()%1000; valortemp++; //para o valor nao ser 0 e chegar ate 1000 for(j=0;j<50;j++){ if(vetor[j]==valortemp){ i--; break; } } if(j==50) vetor[i]=valortemp; } for(i=0;i<50;i++) printf("%d\n",vetor[i]); system("pause"); }
-
Uma saída para o programa em c
Wilkyn Fernandes Taborda respondeu ao tópico de jururucabeto em C/C++
É um programa que mostra todas as combinações de valores das variáveis i,j e k variando de 0 até 7 para cada variável que quando somados totaliza 7 e no final o programa exibe o número total de combinações possíveis dentro desse limite. É um programa simples. Somente uma nota: a variável n em minúsculo é desnecessária e ela não faz função alguma no programa. Pode ser retirada. -
Return - retornar média da matriz diagonal principal
Wilkyn Fernandes Taborda respondeu ao tópico de giuberti123 em C/C++
Isso mesmo e isso faz com que o valor dessa variável seja indefinido e assim o valor da variável estará errado após as atribuições pois se somará valores conhecidos ao valor desconhecido que a variável tem por não ter sido inicializada. O programa está guardando na matriz os valores digitados porém utilizando apenas uma das dimensões dessa matriz o que fará com que apenas metade da matriz seja usada para o armazenamento desses valores pelo fato de ela ser bidimensional. Para acessar a outra metade dela é necessário que se inclua o índice da segunda dimensão na função de leitura e armazenamento de valores. Se não ler os valores e armazená-los usando também a segunda dimensão não terá como calcular a média diagonal pois o segundo valor a ser atribuído na soma para o cálculo da média não será armazenado e consequentemente essa média não terá como ser calculada o que vai fazer com que o programa sempre apresente resultados incorretos. Outra coisa que tem no final do código que não é exatamente um erro mas é desnecessário que tenha no programa é incluir o valor 1.0 multiplicado pela variável soma. Qualquer valor multiplicado por 1 continua sendo ele mesmo sem modificar então pode ser removido aquela multiplicação por 1.0 que o resultado continuará sendo o mesmo. Isso não é erro mas se não tiver o programa continua igual então não é necessário que tenha. Pode ser tirado.