Programa linguagem c

21 respostas
M
alguem pode me ajudar tenho que fazer esse programa mais nao sei como

é em liguagem c

Escreva um programa que calcula uma matriz unsigned long long pascal [N][N] com os N primeira linhas do triangulo de Pascal (N seria definido com uma constante de valor 32).

O elemento da linha i, coluna j e´ armazenado em pascal[i][j] (se j > i, pascal[i][j] nao sera utilizado).

Escreva uma funcao calculo que calcula a matriz do triangulo de Pascal.

Escreva uma segundo funcao print_numbers que imprime na tela os valores da matriz pascal (nao a matriz toda, apenas os elementos necessarios)

Escreva uma terceira funcao print_triangle que mostra o triangulo como segue: se o elemento e´ impar exibir um #, caso contrario, o caractere de espaco.

Para a chamada de

calculo();

print_number();

print_triangle();

valew

21 Respostas

T

O que você já fez? Poste aqui.

There is no spoon

M

o problema é não sei nem como começar!
=/

T

Você sabe escrever o pseudo-código (ou português estruturado, ou portugol, ou sei lá como se chama isso na sua escola?)
Comece por ele.

M
#include <stdio.h>

#define N=32

void calcule();

void print_number();

void print_triangle();
void calcule(){

int i,j;

int pascal[i][j];

unsigned long long pascal [N][N];

for (i=0; i>j; i++){

}

int main(void){

calcule();

printf(Imprimir a matriz de Pascal:\n);

print_number();

printf(Imprimir o triangulos de Pascal:\n);

print_triangle();

return 0;

}
T

Isso não é pseudo-código, ou algoritmo. É só um esqueleto do programa.

Escrevendo o algoritmo, o programa sai rapidinho.
Você está tendo problemas para escrever o algoritmo?
Use lápis e papel, e um pouco de cérebro.

M

9o pseudo codigo seria oq tenho que fazer do tipo passos? serio mesmo to perdida me da uma luz!

Mero_Aprendiz

Não se perca! Comece pelo Google. :wink:

http://pt.wikipedia.org/wiki/Pseudoc%C3%B3digo

Resposta encontrada no Google apenas escrevendo Pseudocódigo na consulta.

[]'s
JL

M

valeuu

SCARDOSO

Olá, tenho um problema: Estou escrevendo um algoritmo que deve ser um sistema de Matrícula de alunos, então, deve matricular, remover, buscar, e etc. Abaixo segue o meu código, mas a lista deve ser Encadeada e a minha lista esta errada! O que devo corrigir para esta lista seja encadeada e não sequencial?

#include <stdio.h>

#include <stdlib.h>
#include

const int TamMax = 5; // Inteiro que diz o tamanho da lista.
//struct:estrutura que agrupa valores de tipos diferentes, ABAIXO DECLAREI STRUCT PARA ALUNO.

struct TpAluno{               //NÓ DE ALUNO
   char nome[50]; 
   int matricula [10];
   char sexo;
   int RG;
   };

typedef struct TpNoAluno aluno;

struct NoAluno{
    struct TpAluno aluno;
    struct NoAluno *proximo;
};

typedef struct TpListaAluno ListaAluno;

struct TpListaAluno{

NoAluno* primeiro;

NoAluno* ultimo;

};
typedef struct TpDisciplica Disciplina;      //NÓ DE DISCIPLINAS

struct TpDisciplina{

char Nome[100];

int codigo;

int creditos;

int chave;

};
typedef struct TpListaAlunoDisciplina LAD;   // LISTA ALUNO + DISCIPLINA: LAD

struct TpLAD{

int matricula;

int codigo;

int semestre;

int ano;

float nota[5];

};
struct TpNoLAD {
   int LAD;
   struct TpNoLAD* proximo;

};

void criarListaVazia(ListaAluno* lista)    //CRIA A LISTA DE ALUNOS VAZIA
   {
   lista->primeiro = NULL;
   lista->ultimo = NULL;

}

int aluno* busca(ListaAluno->lista, int Tpaluno->matricula);    // BUSCA ELEMENTO SIMPLES NA LISTA
   NoAluno* atual;
   if ListaAluno.lista->-1
   return NULL;
   atual = lista.primeiro;
   while( (atual != NULL) && (atual->aluno.matricula != matricula))
    atual = atual->proximo;
    return atual;
}

NoAluno* busca(ListaAluno lista, int matricula);                //BUSCA MATRICULA(ELEMENTO CHAVE) NA LISTA DE ALUNOS

{

NoAluno* atual;

if(vaziaalunos(lista))

return NULL;

atual = lista.primeiro;

while( (atual != NULL) && (atual->aluno.matricula != matricula))

atual = atual->proximo;

return
peczenyj

Em primeiro lugar vc poderia usar as tags CODE. Darão maior visibilidade ao seu problema.

Agora esse titulo esta muito vago (coisa comum em fim de semestre). Praticamente tem alguma indicação do seu problema que se mistura em linguagem, algoritmo e estrutura de dados.

A julgar pelo #include e pela sobrecarga da função busca vc esta trabalhando com C++, certo?

Bom, eu diria para vc dar uma olhada nesse exemplo:

http://www.java2s.com/Code/C/Data-Structure-Algorithm/illustratestheuseandmaintenanceofdoublylinkedlists.htm

E reescrever seu programa da forma mais simplificada possivel. Aluno tem matricula e, no maximo, nome. Quando vc tiver certeza que esta funcionando adicione mais coisas.

Paralelo a isso vc pode criar pequenos programas que testam as suas estruturas e funções - basta exportar o prototipo delas em um arquivo "header" (um trabalho.h da vida) e se vc souber compilar os arquivos separados vc pode fazer algo como

trabalho.h -> prototipos e estruturas de dados
trabalho.c -> funções que manipulam as estruturas
main.c -> seu programa
test.c -> seus testes

no main.c

#include <stdio.h>
#include <outrascoisasponto.h>
#include "trabalho.h"

int main(void){

 /* seu programa aqui*/
  return 0;
}

e no test.c

#include <stdio.h>
#include <outrascoisasponto.h>
#include "trabalho.h"

void test01(){
 // cria uma lista que deve ser vazia, se não imprime nok
}

void test02(){
 // cria uma lista e insere um cara, imprime nok se ele não estiver la
}

int main(void){
  test01();
  test02();
  // e por ai vai
  return 0;
}

De fato o uso de um framework de testes unitarios seria bem util :)

SCARDOSO

Sim, estou usando c++, compilando no Dev c++. Vou estudar este link que me passou e postar o resultado! Muito obrigada!

ViniGodoy

SCARDOSO:
Sim, estou usando c++, compilando no Dev c++. Vou estudar este link que me passou e postar o resultado! Muito obrigada!

Se você está usando DevCpp, seu compilador é o MinGW. O DevCpp é apenas um programa ultrapassado para edição de arquivos C++. Ele vem junto com uma versão igualmente ultrapassada do MinGW, o compilador mesmo.

Se você quiser se atualizar, e fugir dos bugs do dev (e, acredite, muitos alunos meus se bateram por bugs do próprio compilador), sugiro que baixe o igualmente gratuito Code::Blocks:
http://www.codeblocks.org

É um editor de texto mais moderno, que também usa o mesmo MinGW como compilador, mas numa versão consideravelmente mais nova.

SCARDOSO

Sim: Bloodshed Dev-C++ versão 4.9.9.2, realmente tem muitos bugs, e acabo não sabendo se é o do compilador ou do código. Obrigada! To baixando aqui já e vou postar os resultados.

SCARDOSO

Olá Peczenyj ,

O caso é, preciso escrever um código em C, uma lista de alocação encadeada, com busca, inserção, busca por elemento chave e retirada de elementos. O programa é um sistema de Alunos e Disciplinas. Então, declarei(da minha maneira) o nó aluno, o nó disciplinas, a lista de alunos x disciplinas e etc: código abaixo. Mas ainda estou errando: algumas estruturas segundo o professor, não fazem sentido, como por exemplo: struct TpListaAluno, que ao meu entender é a declaração do nó ListaAluno…

Preciso de uma ajuda para compreender o “funcionamento” da estrutura do código. Acha que devo deletar tudo e começar denovo? Obrigada pela ajuda! :cry:

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

const int TamMax = 5;

struct TpAluno{               
   char nome[50];  
   int matricula [10];
   char sexo;
   int RG;
   };
typedef struct TpNoAluno aluno;

struct NoAluno{

struct TpAluno aluno;

struct NoAluno <em>proximo;

};

typedef struct TpListaAluno ListaAluno;

struct TpListaAluno{

NoAluno</em> primeiro;

NoAluno* ultimo;

};
typedef struct TpDisciplica Disciplina;

struct TpDisciplina{

char Nome[100];

int codigo;

int creditos;

int chave;

};
typedef struct TpListaAlunoDisciplina LAD;

struct TpLAD{

int matricula;

int codigo;

int semestre;

int ano;

float nota[5];

};
struct TpNoLAD {
   int LAD;
   struct TpNoLAD* proximo;

};

void criarListaVazia(ListaAluno* lista)    
   {
   lista->primeiro = NULL;
   lista->ultimo = NULL;
   }

  
   LAD* busca(ListaAluno lista, int matricula)

{
aluno* atual;

while atual != NULL
   {
    atual = atual->proximo;
    return atual;
}

}

NoAluno* busca(ListaAluno lista, int matricula);

{

NoAluno* atual;

if(vaziaalunos(lista))

return NULL;

atual = lista.primeiro;

while( (atual != NULL) && (atual->aluno.matricula != matricula))

atual = atual->proximo;

return

}
NoAluno* buscaaluno(ListaAluno lista, int matricula)

{

NoAluno* atual;

if(vaziaaluno(lista))

return NULL;

atual = lista.primeiro;

while( (atual != NULL) && (atual->aluno.matricula != matricula))

atual = atual->proximo;

return atual;

}
void inseriraluno(ListaAluno *lista, Aluno aluno)

{

if(!buscaaluno(<em>lista,aluno.matricula)){

NoAluno</em> novo;

novo=(NoAluno *) malloc(sizeof(NoAluno));

novo->aluno = aluno;

novo->proximo=NULL;

if(vaziaaluno(*lista)){

list->primeiro=novo;

lista->ultimo=novo;

}else{

lista->ultimo->proximo=novo;

lista->ultimo=novo;

}

}else

printf(“Matrícula  existe.”);

}
SCARDOSO

Fiz algumas mudanças, sei que tem coisa errada, só queria que apontassem os erros, por exemplo, o void indica que o metodo retorna nada, então, é apenas uma declaração do que eu estou fazendo, por exemplo [color=darkblue]void deleteAlun[/color]o. Entretanto o compilador reclama que o que eu escrevi após o Void não foi declarado anteriormente!! Preciso de ajuda, please :cry:

[quote]#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct aluno {

char nome;

char matricula;

char sexo;

char idade;

struct alunoproximo;
struct aluno
anterior;

void criar listaaluno (listaaluno* lista)

{

lista->primeiro = null;

lista->ultimo = null;
void inserir aluno (listaaluno <em>lista, aluno)

{

aluno->aluno</em> novo;

inserir= (struct aluno*)malloc(sizeof(struct aluno)
if(vaziaaluno(*lista)){

list->primeiro=novo;

lista->ultimo=novo;

}else{

lista->ultimo->proximo=novo;

lista->ultimo=novo;

}

}else

printf(Matrícula  existe.);

}

struct aluno* busca (char <em>matricula)

{

aluno</em> atual

atual= lista.primeiro;

while ((atual != NUMM) && (atual.aluno.matricula != matricula))

atual = atual-> proximo;

return;

}
void deletealuno (struct aluno* proximo, struct aluno* ultimo)

{

int i;

int pos

pos= buscamatricula

printf(digite a matricula);

for(i = pos; i < lista->ultimo; i++)

lista->elementos[i] = lista->elementos[i+1];

lista->ultimo;

else

printf(O aluno nao pertence a lista\n);

}

:?:

SCARDOSO

Alguem ajuda???
por favor!!!
:roll:

SCARDOSO

Corrigido usando a tag CODE, desculpe, é que nunca partiipei de um forum antes, estou ligada agora!!
Bom a lista tem de ser encadeada..segue :

Pessoal,
Mini sistema aluno X disciplina
preciso fazer algoritmos que realizem estas ações:

1. Cadastrar disciplina

typedef struct TpDisciplina Disciplina;                                      
       struct TpDisciplina{
       char Nome[100];
       int codigo;
       int creditos;
       int chave;
       };

void inserirDisciplina(ListaDisciplina *lista, Disciplina a)
{
     if (lista->ultimo == TamMax-1)
     printf("A lista esta cheia\n");
     else
     if(buscaDisciplina(*lista,a.codigo) == -1){
     lista->elementos[lista->ultimo +1] = a;                             
     lista->ultimo++;                             
         }
     else
     printf("Disciplina já cadastrada");
}

2. Remover disciplina

void removerDisciplina(ListaDisciplina *lista, int codigo)
{
     int i;
     int pos;
     
     pos = buscaDisciplina(*lista,codigo);
     if( pos != -1 ){
         for(i = pos; i < lista->ultimo; i++)
               lista->elementos[i] = lista->elementos[i+1];
         lista->ultimo--;
     }
     else
         printf("A disciplina nao pertence a lista\n");
}

3. Cadastrar aluno

void inserirAposUltimoElemento(ListaAluno *lista, Aluno a)
{
     if (lista->ultimo == TamMax-1)
        printf("A lista esta cheia\n");
     else
         if(buscaAluno(*lista,a.matricula) == -1){
              lista->elementos[lista->ultimo +1] = a;                             
              lista->ultimo++;                             
         }
         else
             printf("O aluno ja esta matriculado\n");
}

4. Remover aluno

void removerAluno(ListaAluno *lista, int matricula)
{
     int i;
     int pos;
     
     pos = buscaAluno(*lista,matricula);
     if( pos != -1 ){
         for(i = pos; i < lista->ultimo; i++)
               lista->elementos[i] = lista->elementos[i+1];
         lista->ultimo--;
     }
     else
         printf("O aluno nao pertence a lista\n");
}

5. Alterar dados de um determinado aluno

6. Matricular aluno em uma disciplina. Isto é, inserir na lista LAD. É importante observar que só é possível matricular um aluno existente na LA em um disciplina existente na LD.
7. Cancelar matricula de um aluno em uma determinada disciplina.
8. Inserir uma determinada nota de um determinado aluno em uma determinada disciplina.
9. Listar todos os alunos matriculados em uma determinada disciplina de uma determinada data.

void imprimirListaAlunos(ListaDisciplina *lista, int codigo)
{
   int i;
   printf("----------------------------------\n");
   for(i = 0; i <= lista.ultimo; i++){
         printf("Nome: %s\n",lista.elementos[i].nome);    
         printf("Matricula: %d\n\n",lista.elementos[i].codigo);
   }
while( (lista.elementos[i].codigo != codigo) && (i <= lista.ultimo)){
           i++;
    }
    if(i > lista.ultimo)   
         return -1;
    return i; 
}

   printf("----------------------------------\n");
   printf("               FIM                \n");
   printf("----------------------------------\n\n\n");
}

10. Pesquisar as disciplinas que um determinado aluno cursou em uma determinada data;
11. Calcular o coeficiente de rendimento (CR) de um determinado aluno.
12. Verificar o número de créditos cumpridos por um determinado aluno.
13. Verificar quantos alunos de um determinado sexo cursaram uma determinada disciplina.
14. Fazer o cálculo de porcentagem de reprovação do sexo feminino e masculino
15. Armazenar as listas em arquivos
16. Recuperar as listas de arquivos.

ViniGodoy

Sandra, assim fica muito difícil ler seu código. Por favor, use a tag code.

Seu código aqui
SCARDOSO

Vinicius, editei o post.

:lol:

ViniGodoy

Seu trabalho é mesmo em C++? Pq o resto de toda sua construção é em C. E você não usou o vector para nada.

Enfim, se sua lista é encadeada, em algum lugar você terá que ter uma estrutura com um ponteiro para outra.
E não existe limite de tamanho para listas assim.

SCARDOSO

poderia me dar um exemplo de usar vetor de uma lista para outra? as estruturas estão certas?
eu não sei… :cry: :cry: :cry: :cry:
Estou lendo sobre ponteiros, mas não entendi como posso implementar isso neste sistema de Aluxo x disciplina!
por favooooor!! help!!!
:oops:

Criado 13 de maio de 2009
Ultima resposta 27 de nov. de 2009
Respostas 21
Participantes 6