8
Linguagens de Programação
IFSC
8
Linguagens de Programação
IFSC
1
Linguagens de Programação
IFSC
1
Linguagens de Programação
IFSC
1
Linguagens de Programação
IFSC
1
Linguagens de Programação
IFSC
3
Linguagens de Programação
IFSC
Texto de pré-visualização
1 5 pontos No programa principal Solicite ao usuário que informe 10 pontos 3D x y e z e salvem os mesmos em uma lista duplamente encadeada Também no programa principal implemente a chamada correta para a função do item 2 2 5 pontos Implemente uma função que receba a lista duplamente encadeada com os pontos informados pelo usuário e retorne um vetor de structs com os pontos que tenham qualquer uma das coordenadas com valor negativo A função deve percorrer a lista recebida contando quantos pontos tem alguma coordenada negativa para poder alocar um vetor de structs do tamanho exato para armazenar os pontos Após isso é necessário percorrer novamente a lista copiando os pontos para o vetor alocado Não pode usar Break apenas em Switch case Utilize um struct para armazenar cada ponto 3D no vetor vetor de structs include stdioh include stdlibh include stdboolh struct ponto int x int y int z struct ponto anterior struct ponto proximo struct pontoNegativo int x int y int z struct dadosVetor struct pontoNegativo vetor int tamanho struct dadosVetor subrotinastruct ponto primeiro struct ponto ultimo struct pontoNegativo vetor struct ponto atual primeiro int contNegativos 0 while atual NULL ifatualx 0 atualy 0 atualz 0 contNegativos atual atualproximo alocar o vetor de negativos vetor struct pontoNegativo malloccontNegativossizeofstruct pontoNegativo copiar pontos da lista para o vetor int pos 0 atual primeiro while atual NULL ifatualx 0 atualy 0 atualz 0 vetorposx atualx vetorposy atualy vetorposz atualz pos atual atual proximo guardo vetor e tamanho no struct de retorno struct dadosVetor ret struct dadosVetor mallocsizeofstruct dadosVetor rettamanho contNegativos retvetor vetor return ret int main struct ponto primeiro NULL struct ponto ultimo NULL int i 0 tamanho 3 for i 0 i tamanho i printfDigite o ponto d i1 struct ponto novo struct ponto mallocsizeofstruct ponto novoproximo NULL novoanterior NULL printfDigite o valor de x scanfdnovox printfDigite o valor de y scanfdnovoy printfDigite o valor de z scanfdnovoz if primeiro NULL primeiro novo ultimo novo else novoanterior ultimo ultimoproximo novo ultimo novo mostra lista printfLista lida struct ponto atual primeiro while atual NULL printfPonto printfx d atualx printf y d atualy printf z d atualz atual atualproximo chamada da função struct dadosVetor vetNegativos subrotinaprimeiro ultimo mostrando vetor for i 0 i vetNegativostamanho i printfPonto d i1 printfx d vetNegativosvetorix printf y d vetNegativosvetoriy printf z d vetNegativosvetoriz
8
Linguagens de Programação
IFSC
8
Linguagens de Programação
IFSC
1
Linguagens de Programação
IFSC
1
Linguagens de Programação
IFSC
1
Linguagens de Programação
IFSC
1
Linguagens de Programação
IFSC
3
Linguagens de Programação
IFSC
Texto de pré-visualização
1 5 pontos No programa principal Solicite ao usuário que informe 10 pontos 3D x y e z e salvem os mesmos em uma lista duplamente encadeada Também no programa principal implemente a chamada correta para a função do item 2 2 5 pontos Implemente uma função que receba a lista duplamente encadeada com os pontos informados pelo usuário e retorne um vetor de structs com os pontos que tenham qualquer uma das coordenadas com valor negativo A função deve percorrer a lista recebida contando quantos pontos tem alguma coordenada negativa para poder alocar um vetor de structs do tamanho exato para armazenar os pontos Após isso é necessário percorrer novamente a lista copiando os pontos para o vetor alocado Não pode usar Break apenas em Switch case Utilize um struct para armazenar cada ponto 3D no vetor vetor de structs include stdioh include stdlibh include stdboolh struct ponto int x int y int z struct ponto anterior struct ponto proximo struct pontoNegativo int x int y int z struct dadosVetor struct pontoNegativo vetor int tamanho struct dadosVetor subrotinastruct ponto primeiro struct ponto ultimo struct pontoNegativo vetor struct ponto atual primeiro int contNegativos 0 while atual NULL ifatualx 0 atualy 0 atualz 0 contNegativos atual atualproximo alocar o vetor de negativos vetor struct pontoNegativo malloccontNegativossizeofstruct pontoNegativo copiar pontos da lista para o vetor int pos 0 atual primeiro while atual NULL ifatualx 0 atualy 0 atualz 0 vetorposx atualx vetorposy atualy vetorposz atualz pos atual atual proximo guardo vetor e tamanho no struct de retorno struct dadosVetor ret struct dadosVetor mallocsizeofstruct dadosVetor rettamanho contNegativos retvetor vetor return ret int main struct ponto primeiro NULL struct ponto ultimo NULL int i 0 tamanho 3 for i 0 i tamanho i printfDigite o ponto d i1 struct ponto novo struct ponto mallocsizeofstruct ponto novoproximo NULL novoanterior NULL printfDigite o valor de x scanfdnovox printfDigite o valor de y scanfdnovoy printfDigite o valor de z scanfdnovoz if primeiro NULL primeiro novo ultimo novo else novoanterior ultimo ultimoproximo novo ultimo novo mostra lista printfLista lida struct ponto atual primeiro while atual NULL printfPonto printfx d atualx printf y d atualy printf z d atualz atual atualproximo chamada da função struct dadosVetor vetNegativos subrotinaprimeiro ultimo mostrando vetor for i 0 i vetNegativostamanho i printfPonto d i1 printfx d vetNegativosvetorix printf y d vetNegativosvetoriy printf z d vetNegativosvetoriz