Problema con programma in c

di il
1 risposte

Problema con programma in c

Salve a tutti..premetto che studio informatica e devo affrontare l'esame di programmazione a breve...ho provato a fare questo esercizio con le liste, il ragionamento mi sembra filare ma il programma no:
leggere la lunghezza n di una sequenza di caratteri alfanumerici. leggere quindi i caratteri scritti e inserirli in una lista a puntatori nell'ordine in cui sono stati letti. stampare la sequenza. cancellare dalla lista le eventuali sottosequenze di caratteri delimitate da coppie di parentesi tonde sostituendole con un singolo asterisco "*" . stampare la sequenza risultante dalle cancellazioni. non vi sono coppie di parentesi annidate e ogni parentesi aperta è seguita da una chiusa.
organizzare il programma in funzioni ,non utlizzare array o liste ausiliare, non introdurre variabili globali.
Esempi
input output
fg(kio)f43 fg(*)f43

io ho scritto questo programma ma non mi parte
#include <stdio.h>
#include <stdlib.h>

struct nodo{
char dato;
struct nodo *next;
};
void eliminaelementi(struct nodo *start);
struct nodo *crealista();
void printlista(struct nodo *start);



int main()
{
struct nodo *start;
start=crealista();
eliminaelementi(start);
printlista(start);



system("PAUSE");
return 0;
}
void eliminaelementi(struct nodo *start)
{
int i;
struct nodo *p;
struct nodo *q;
struct nodo *ast;
p=start;
while(p!=NULL)
{ if (p->dato=='('){
while(p->dato!=')')
{
p->next=p->next->next;
}
}
p=p->next;
}
p=start;
while(p!=NULL){
if(p->dato=='(');
ast=(struct nodo*)malloc(sizeof(struct nodo));
ast->dato='*';
ast->next=p->next;
p->next=ast;
}
return;
}

struct nodo *crealista()
{
struct nodo *p,*start,*last;
int i, n;
char x;
start=NULL;
printf("quanti nodi ha la lista");
scanf("%d",&n);
printf("digita campi ");
for (i=0;i<n;i++)
{
scanf("%c",&x);
p=(struct nodo *)malloc(sizeof(struct nodo));
if (i==0)
{
start=p;
}
else
last->next=p;
p->dato = x;
p->next = NULL;
last = p;
}
return(start);
}
void printlista(struct nodo *start)
{
struct nodo *p;
p=start;
printf("\n\n\n");
while (p!=NULL){
printf("%c",p->dato);
p=p->next;
}
return;
}

1 Risposte

  • Re: Problema con programma in c

    Usa il tag code e indenta correttamente il codice, altrimenti è dura seguire il flusso tra graffe aperte e chiuse.

    ciao
Devi accedere o registrarti per scrivere nel forum
1 risposte