Ir ao conteúdo
  • Cadastre-se

Dúvidas em .C


Thavia

Posts recomendados

oLÁ Sou iniciante em programação e no forum também Gostaria da ajuda de vocês; preciso fazer um algoritmo que lê um vetor real composto de números positivos, negativos e nulos. Então este programa gera dois vetores, um somente para números negativos e outro somente para números positivos Eu começo, mas na hora de imprimir os numeros negativos e positivos, não sei como proceder...

main(){

int i, n;

float vet[n];

printf("Digite o tamanho do vetor = ") scanf("%d",&n); for(i=0;i<n;i=i+1)

{ printf("Digite vet[%d] =", i)

scanf("%f", &vet);}

Daqui vou pra onde???

Tem outro exercício que não sei começar Fazer um programa que gera duas matrizes quadradas, A e B, a partir da seguinte lei de formação A(i,j) = i2 + j2 , com i = 1, ..., n e j = 1, .., n B(i,j) = i2 – 2·j , com i = 1, ..., n e j = 1, .., n Então o programa, imprime a matriz transposta da matriz soma da matriz A com a matriz B Sei que ambos são simples... PRA QUEM SABE, por isso espero que vocês consigam me ajudar. desculpe a desorganização, usei o ctrlc ctrlv do celular

Link para o comentário
Compartilhar em outros sites

(...)preciso fazer um algoritmo que lê um vetor real composto de números positivos, negativos e nulos. Então este programa gera dois vetores, um somente para números negativos e outro somente para números positivos (...)

Beleza, agora vamos ver o que você fez:

(tomei a liberdade de modificar um pouco)

[B]int[/B] main()
{
int i, [COLOR="Red"][B]n; /* Sem inicializar o tamanho de n fica difícil né? */
float vet[n];[/B][/COLOR]

printf("Digite o tamanho do vetor = ");
scanf("%d",&n);
getchar();

for(i=0;i<n;[B]i++[/B])
{
printf("Digite vet[%d] =", i)
scanf("%f", &vet[i]);
getchar();
}
[B]getchar();
return 0;[/B]
}

Bom, se você estava tentando fazer alocação dinâmica atribuindo valor a n depois de criar o vetor, ela não funciona assim...

Isso está errado.

Para usar desse jeito você tem que atribuir algum valor manualmente tipo: int i, n=5;

E apagar a parte de leitura do n...

Beleza. Agora voltando ao enunciado:

"Então este programa gera dois vetores, um somente para números negativos e outro somente para números positivos"

Você já sabe que precisa de no mínimo dois vetores, então porque só declarou um?

Como um vetor ficará com os positivos e outro com os negativos eu presumo que os elementos nulos devem ser ignorados, então ficamos com esse algoritmo, onde vet1 contem os positivos e vet2 os negativos:

declare
inteiro i, j, k, n=5; /* Mude o valor para a quantidade que quiser */
real vet1[n], vet2[n]

blabla; /* Faz a leitura dos elementos para vet1 */

j=0
para i=0 até i<n faça
{
se vet1[i] < 0
{
vet2[j]=vet1[i]
vet1[i]=0
j++
}
}
se j < n
vet2[j]=7

/* Varra o vet1 de tal forma que todos os elementos positivos fiquem
agrupados no início do vetor e todos os nulos fiquem ao final e atribua um
número negativo na primeira posicao apos o ultimo negativo,ou seja,
transforme isso: [0,6.7,0,3.4,2.1] em algo do tipo: [6.7,3.4,2.1,-5,0]*/

imprima("Vetor positivo: ")
para i=0 até i<n faça
{
se vet1[i] >0
{
imprima("%f ",vet1[i])
}
senão
{
i=n; /* Sai do laço quando acabarem os positivos */
}
}
imprima("Vetor negativo: ")
para i=0 até i<n faça
{
se vet2[i] <0
{
imprima("%f ",vet2[i])
}
senão
{
i=n; /* Sai do laço quando acabarem os negativos */
}
}

Talvez não esteja muito otimizado, mas é só uma ideia, modifique-a como quiser. =]

-

Link para o comentário
Compartilhar em outros sites

Beleza, agora vamos ver o que você fez:

(tomei a liberdade de modificar um pouco)

Bom, se você estava tentando fazer alocação dinâmica atribuindo valor a n depois de criar o vetor, ela não funciona assim...

Isso está errado.

Para usar desse jeito você tem que atribuir algum valor manualmente tipo: int i, n=5;

E apagar a parte de leitura do n...

Beleza. Agora voltando ao enunciado:

"Então este programa gera dois vetores, um somente para números negativos e outro somente para números positivos"

Você já sabe que precisa de no mínimo dois vetores, então porque só declarou um?

Como um vetor ficará com os positivos e outro com os negativos eu presumo que os elementos nulos devem ser ignorados, então ficamos com esse algoritmo, onde vet1 contem os positivos e vet2 os negativos:

declare
inteiro i, j, k, n=5; /* Mude o valor para a quantidade que quiser */
real vet1[n], vet2[n]

blabla; /* Faz a leitura dos elementos para vet1 */

j=0
para i=0 até i<n faça
{
se vet1[i] < 0
{
vet2[j]=vet1[i]
vet1[i]=0
j++
}
}
se j < n
vet2[j]=7

/* Varra o vet1 de tal forma que todos os elementos positivos fiquem
agrupados no início do vetor e todos os nulos fiquem ao final e atribua um
número negativo na primeira posicao apos o ultimo negativo,ou seja,
transforme isso: [0,6.7,0,3.4,2.1] em algo do tipo: [6.7,3.4,2.1,-5,0]*/

imprima("Vetor positivo: ")
para i=0 até i<n faça
{
se vet1[i] >0
{
imprima("%f ",vet1[i])
}
senão
{
i=n; /* Sai do laço quando acabarem os positivos */
}
}
imprima("Vetor negativo: ")
para i=0 até i<n faça
{
se vet2[i] <0
{
imprima("%f ",vet2[i])
}
senão
{
i=n; /* Sai do laço quando acabarem os negativos */
}
}

Talvez não esteja muito otimizado, mas é só uma ideia, modifique-a como quiser. =]

-

oLá

otimizei sua ideia, o programa ficou mais ou menos assim:

main()

{

int i, j, n, po, ne;

printf("Digite o tamanho do vetor = ");

scanf("%d",&n);

float vet[n], negativos[n], positivos[n];

for(i=0;i<n;i=i+1)

{ bla bla bla

}

po=0;

ne=0;

for(i=0;i<n;i=i+1)

{

if(vet>0)

{

positivos[po] = vet;

po++;

}

if(vet<0)

{

negativos[ne] = vet;

ne++;

}

}

printf("\nPositivos \n");

for (j=0;j<po;j++)

blablabla

printf("\nNegativos \n");

for (i=0;i<ne;i++)

blablabla

getche();

}

Agora queria saber se poderia me dar um ponta-pé na segunda. O prof pediu um trabalho, mas não explicou matrizes ainda pra gente.

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!