ALGORITMO C

1. ALGORITMO C

Sérgio Prates dos Santos
serginho_linux

(usa CentOS)

Enviado em 14/06/2013 - 14:28h

Elaborar um programa que leia seis elementos (valores inteiros) para as
matrizes A e B de uma dimensão do tipo vetor. Construir as matrizes C e D de
mesmo tipo e dimensão. A matriz C deve ser formada pelos elementos de
índice impar das matrizes A e B e a matriz D deve ser formada pelos elementos
de índice par das matrizes A e B. Apresentar os elementos das matrizes C e D.

---------------------------------------------------------------------------------------

Não pensem que já não tentei, estou há três dias direto tentando faze... deve ser algo bobo, mas eu preciso entregar hoje, alguém poderia me ajudar?


#include <stdio.h>
#include <stdlib.h>

int matriza[6];
int matrizb[6];
int matrizc[6];
int matrizd[6];

int i;

main()
{

puts("----------------COLETANDO VALORES NA MATRIZ A-------------------");

for(i=1;i<=6;i++) {

printf("Digite o valor na matriz A linha %d: ",i);
scanf("%d",&matriza[i]);

}
puts("----------------COLETANDO VALORES NA MATRIZ B-------------------");
for(i=1;i<=6;i++) {

printf("Digite o valor na matriz B linha %d: ",i);
scanf("%d",&matrizb[i]);

}

for(i=1;i<=6;i++) {

if(i % 2 == 0) {
matrizd[i-1] = matriza[i];
matrizd[i] = matrizb[i];
}
printf("O valor da matriz C na linha %d eh: %d\n",i,matrizd[i]);
}





system("PAUSE");
return 0;
}




Eu apaguei algumas partes do código, tipo na hora da matriz C.


  


2. Debug

Fernando Rego
fernandorego

(usa Ubuntu)

Enviado em 14/06/2013 - 16:01h

O programa roda? Há alguma mensagem de erro? Envie detalhes de erros.


3. Re: ALGORITMO C

Paulo
paulo1205

(usa Ubuntu)

Enviado em 14/06/2013 - 16:36h

Um erro que salta aos olhos é você usar índices começando em 1. Em C, índices de arrays começam sempre em zero. Desse modo, um array com seis elementos tem índices que variam entre 0 e 5.

Outra coisa é que você não precisará testar, no loop que monta C e D a partir de A e B, se o valor de i é par ou ímpar se você incremntar esse índice sempre de duas em duas unidades.

for(i=0; i<6; i+=2){
C[i]=A[i];
C[i+1]=B[i];
D[i]=A[i+1];
D[i+i]=B[i+1];
}



4. Re: ALGORITMO C

Augusto
LinuxMH

(usa BackTrack)

Enviado em 14/06/2013 - 17:33h

Qual erro ? eu já percebi um erro, você está lendo matriz usando ponteiro, quando vai ler matriz em scanf não utiliza ponteiro, matriz, não é uma variável, e sim um ponteiro


5. Re: ALGORITMO C

Sérgio Prates dos Santos
serginho_linux

(usa CentOS)

Enviado em 14/06/2013 - 18:02h

paulo1205 escreveu:

Um erro que salta aos olhos é você usar índices começando em 1. Em C, índices de arrays começam sempre em zero. Desse modo, um array com seis elementos tem índices que variam entre 0 e 5.

Outra coisa é que você não precisará testar, no loop que monta C e D a partir de A e B, se o valor de i é par ou ímpar se você incremntar esse índice sempre de duas em duas unidades.

for(i=0; i<6; i+=2){
C[i]=A[i];
C[i+1]=B[i];
D[i]=A[i+1];
D[i+i]=B[i+1];
}


Eu sei...Mas é que eu gostaria de utilizar nas informações de linha depois na hora de mostrar para o usuario.. Mas obrigado pela ajuda.


6. Re: ALGORITMO C

Sérgio Prates dos Santos
serginho_linux

(usa CentOS)

Enviado em 14/06/2013 - 18:05h

LinuxMH escreveu:

Qual erro ? eu já percebi um erro, você está lendo matriz usando ponteiro, quando vai ler matriz em scanf não utiliza ponteiro, matriz, não é uma variável, e sim um ponteiro


Desculpe, não entendi o que você disse, mas eu sempre usei assim e deu certo.

O que você quis dizer com não utilizar pomteiro?


é disso (&) que você está falando? Pois sempre que uso scanf sem esse & comercial da pau.

Obrigado pelo comentario.


7. Re: ALGORITMO C

Sérgio Prates dos Santos
serginho_linux

(usa CentOS)

Enviado em 14/06/2013 - 18:08h

Heinrich escreveu:

Veja este algoritmo que acabei de elaborar para você estudar.
Ele faz exatamente o que seu enunciado está pedindo:


#include <stdio.h>

int main(){
int i, c = 0, d = 0;
int mtza[6];
int mtzb[6];
int mtzc[6];
int mtzd[6];

for(i = 0; i<6; i++){
scanf("%d", &mtza[i]);
}

for(i = 0; i<6; i++){
scanf("%d", &mtzb[i]);
}

for(i = 0; i<6; i++){
if((mtza[i]%2) == 0){
mtzc[c] = mtza[i];
c += 1;
} else {
mtzd[d] = mtza[i];
d += 1;
}

if((mtzb[i]%2) == 0){
mtzc[c] = mtzb[i];
c += 1;
} else {
mtzd[d] = mtzb[i];
d += 1;
}

}
printf("Array C: ");
for(i = 0; i<6; i++){
printf("%d ", mtzc[i]);
}
printf("Array D: ");
for(i = 0; i<6; i++){
printf("%d ", mtzd[i]);
}
return 0;
}


Outro fato, é que os arrays sempre começam o índice 0, e não 1.

Espero ter ajudado.


Obrigado pelo algoritmo, me salvou!!

Para provar que não estou me aproveitando e que foi um caso de emergência irei desenvolver meu algoritmo desse exercicio e postarei aqui.

Obrigado a todos pelo esforço e pela atenção.


8. Re: ALGORITMO C

Paulo
paulo1205

(usa Ubuntu)

Enviado em 14/06/2013 - 18:27h

Heinrich escreveu:

Veja este algoritmo que acabei de elaborar para você estudar.
Ele faz exatamente o que seu enunciado está pedindo:


Não faz, não, senhor. Você está testando a paridade do valor do elemento da matriz, não do seu índice (além do mais, testar paridade, como eu mostrei acima, não é necessário).

Uma coisa que frequentemente se avisa aqui é que o objetivo da comunidade não é resolver exercícios uns dos outros, e inclusive eventuais pedidos -- às vezes até em tom de exigência -- costumam ser recebidos com desprezo (felizmente não foi o caso da mensagem original). Dar resposta pronta também não costuma ser visto com muito bons olhos. Chega a ser engraçado, no entanto, que quase sempre as respostas prontas sejam respostas erradas, como neste caso. Azar de quem se vale delas...


9. Re: ALGORITMO C

Sérgio Prates dos Santos
serginho_linux

(usa CentOS)

Enviado em 14/06/2013 - 23:50h

paulo1205 escreveu:

Heinrich escreveu:

Veja este algoritmo que acabei de elaborar para você estudar.
Ele faz exatamente o que seu enunciado está pedindo:


Não faz, não, senhor. Você está testando a paridade do valor do elemento da matriz, não do seu índice (além do mais, testar paridade, como eu mostrei acima, não é necessário).

Uma coisa que frequentemente se avisa aqui é que o objetivo da comunidade não é resolver exercícios uns dos outros, e inclusive eventuais pedidos -- às vezes até em tom de exigência -- costumam ser recebidos com desprezo (felizmente não foi o caso da mensagem original). Dar resposta pronta também não costuma ser visto com muito bons olhos. Chega a ser engraçado, no entanto, que quase sempre as respostas prontas sejam respostas erradas, como neste caso. Azar de quem se vale delas...



Sim, percebi isso depois... Mas tudo bem... Precisei fazer 100 exercicios em C e só faltava esse. As vezes eu travo em coisas bestas e as mais dificeis consigo. O nivel de desafio me atrai.


#include <stdio.h>
#include <stdlib.h>
main {

printf("Obrigado por parar para avaliar os códigos");

system("PAUSE");
return 0;

}








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts