Newsgroup: it.comp.lang.pascal
Titolo: URGENTE per chi conosce PASCAL e C

Vi prego di rispondermi il piů presto possibile visto che domani ho un
benedetto esame di programazzione. Il problema č il seguente:
Definita una seguente struttura in Pascal:
type lista=^stato;
           stato = record
                         nome:string[20];
                         superficie:real;
                         popolazione:real;
                         next:lista;
             end;
Qual č l'equivalente struttura in linguaggio C???????????
Inoltre dato il seguente esercizio:
SI SCRIVA UNA PROCEDURA O UNA FUNZIONE CHE, DATI IL PUNTATORE ALLA TESTA DI
UNA LISTA DI STATI ED UN INTERO N RESTITUISCA IL NUMERO DI STATI TALI CHE IL
RAPPORTO POPOLAZIONE/SUPERFICIE E' MAGGIORE DI N.
In PASCAL ho scritto:
procedure POP(N.integer,var L:lista,var conta:integer);
var k:real
begin
    conta:=0;
    while(L<>nil) do
    begin
          k:=L^.popolazione/L^.superficie;
          if N<K then conta:=conta+1;
          L:=L^.next
    end;
end;
Qual č l'analogo in C?
Vii prego aiutatemi sono molto disperata, ho l'esame domani pomeriggio alle
16:00, fatemi sapere qualcosa entro (massimo) domani mattina.

you wrote :
#type lista=^stato;
#           stato = record
#                         nome:string[20];
#                         superficie:real;
#                         popolazione:real;
#                         next:lista;
#             end;
#
#Qual è l'equivalente struttura in linguaggio C???????????
typedef struct _stato {  char nome[20];
                         float superficie ;
                         float popolazione ;
                         struct _stato * next ;
                      } * lista ;
#Inoltre dato il seguente esercizio:
#
#SI SCRIVA UNA PROCEDURA O UNA FUNZIONE CHE, DATI IL PUNTATORE ALLA TESTA DI
#UNA LISTA DI STATI ED UN INTERO N RESTITUISCA IL NUMERO DI STATI TALI CHE IL
#RAPPORTO POPOLAZIONE/SUPERFICIE E' MAGGIORE DI N.
#
#In PASCAL ho scritto:
#
#procedure POP(N.integer,var L:lista,var conta:integer);
#var k:real
#begin
#    conta:=0;
#    while(L<>nil) do
#    begin
#          k:=L^.popolazione/L^.superficie;
#          if N<K then conta:=conta+1;
#          L:=L^.next
#    end;
#end;
#
#Qual è l'analogo in C?
E' sbagliato passare L per riferimento.
La funzione in pascal dovrebbe essere :
function POP( N : integer ; L : lista ) : integer ;
var conta : integer ;
    k : real ;
begin
  conta := 0 ;
  while ( L <> nil ) do
  begin
        k := L^.popolazione / L^.superficie ;
        if k > N then conta := conta + 1 ;
        L := L^.next ;
  end ;
  POP := conta ;
end ; 
In C :
int POP( int N, lista L ) 
{
    int conta = 0 ;
    float k ;
 
    while ( L != NULL ) 
    {
          k = L->popolazione / L->superficie ;
          if ( k > N ) ++conta ;
          L = L->next ;
    }
 
    return conta ;
}
Andrea Laforgia        (
andrea_...@bigfoot.com
)
----------------------------------------------------
There is nothing better for understanding a kangaroo
than seeing it jump.
----------------------------------------------------

Solo una piccola correzzione,
"nome : string[20]" in pascal dovrebbe essere "char nome[21]" in C
altrimenti il campo si restringe di un carattere, se invece non lo si tratta
come stringa ma solo come array allora va bene anche char nome[20].