Programa linguagem c

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

O que você já fez? Poste aqui.

There is no spoon

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

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.

#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;
}

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.

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

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

valeuu

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

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

[code]
#include <stdio.h>
#include <outrascoisasponto.h>
#include “trabalho.h”

int main(void){

/* seu programa aqui*/
return 0;
}[/code]

e no test.c

[code]
#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;
}[/code]

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

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

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

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.

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.

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 proximo;
};
typedef struct TpListaAluno ListaAluno;
struct TpListaAluno{
NoAluno
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(lista,aluno.matricula)){
NoAluno
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 já existe.”);
}

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 lista, aluno)
{
aluno->aluno
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 já existe.”);

}

struct aluno* busca (char matricula)
{
aluno
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”);
}

:?:

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

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

[code]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”);
}
[/code]

  1. Remover disciplina

[code]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");

}[/code]

  1. 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"); }

  1. Remover aluno

[code]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");

}
[/code]

  1. Alterar dados de um determinado aluno

  2. 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.

  3. Cancelar matricula de um aluno em uma determinada disciplina.

  4. Inserir uma determinada nota de um determinado aluno em uma determinada disciplina.

  5. Listar todos os alunos matriculados em uma determinada disciplina de uma determinada data.

[code]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");
}
[/code]

  1. Pesquisar as disciplinas que um determinado aluno cursou em uma determinada data;
  2. Calcular o coeficiente de rendimento (CR) de um determinado aluno.
  3. Verificar o número de créditos cumpridos por um determinado aluno.
  4. Verificar quantos alunos de um determinado sexo cursaram uma determinada disciplina.
  5. Fazer o cálculo de porcentagem de reprovação do sexo feminino e masculino
  6. Armazenar as listas em arquivos
  7. Recuperar as listas de arquivos.

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

Seu código aqui

Vinicius, editei o post.

:lol: