Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi
Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi
Con la prima rete 5G Standalone attiva in Italia, WINDTRE compie un passo decisivo verso un modello di connettività intelligente che abilita scenari avanzati per imprese e pubbliche amministrazioni, trasformando la rete da infrastruttura a piattaforma per servizi a valore aggiunto
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh
OPPO Find X9 Pro punta a diventare uno dei riferimenti assoluti nel segmento dei camera phone di fascia alta. Con un teleobiettivo Hasselblad da 200 MP, una batteria al silicio-carbonio da 7500 mAh e un display da 6,78 pollici con cornici ultra ridotte, il nuovo flagship non teme confronti con la concorrenza, e non solo nel comparto fotografico mobile. La dotazione tecnica include il processore MediaTek Dimensity 9500, certificazione IP69 e un sistema di ricarica rapida a 80W
DJI Romo, il robot aspirapolvere tutto trasparente
DJI Romo, il robot aspirapolvere tutto trasparente
Anche DJI entra nel panorama delle aziende che propongono una soluzione per la pulizia di casa, facendo leva sulla propria esperienza legata alla mappatura degli ambienti e all'evitamento di ostacoli maturata nel mondo dei droni. Romo è un robot preciso ed efficace, dal design decisamente originale e unico ma che richiede per questo un costo d'acquisto molto elevato
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 09-09-2002, 23:08   #1
logadato
Junior Member
 
Iscritto dal: Sep 2002
Messaggi: 4
Richiesta aiuto per programmino in C

Salve a tutti,

sono alla prime armi col C, ho urgente bisogno di risolvere questo
quesito,sotto riportato,cioè devo scrivere un programmino che soddisfi le
specifiche date..e questo è ovvio:-)))



Ho già iniziato una probabile soluz ma sono certo che ci sia qualche
errore.oltretutto non so proprio dove iniziare per risolvere il terzo punto
dell'esercizio.

Spero vivamente di trovare qualche anima buona in questo ng disposto a
perdere un pò del suo tempo.. Soprattutto,ripeto,er aiutarmi col terzo punto.
Ringrazio tutti coloro che mi risponderanno anche solo per correggere pochi
passaggi del mio operato.

Saluti,Lollo


In un’agenzia di servizio corriere le richieste giornaliere di ritiro pacchi da spedire sono memorizzate su di una lista collegata (rappresentata tramite strutture/record e puntatori) in memoria centrale.Per ogni richiesta la lista contiene un elemento che specifica:
· l’orario in cui è stata effettuata la richiesta(rappresentato tramite due campi interi,uno per le ore,l’altro per i minuti)
· nome del mittente (stringa max 20 caratteri)
· indirizzo del mitt.( stringa max 40 char)
· sigla della provincia di destinazione(2 caratteri)

La lista è già ordinata per orario crescente.
Si richiede di risolvere i seguenti punti
1- progetta la struttura dati per risolvere i punti 2 e 2
2- Progetta una funz C che , presi in ingresso attraverso opportuni parametri la lista L delle richieste e la sigla P di una provincia,scriva su di un file l’ora,nome e indirizzo del mittente di tutte le richieste in L destinate alla provincia P,una richiesta per riga. Il nome del file deve essere ottenuto concatenando la sigla della provincia P con l’estensione ”.txt”.
3- Progetta una funz C che, presi in ingresso attraverso opportuni parametri la lista L delle richieste di spedii ed un orario T ( specificato in ore,minuti),elimini dalla lista L tutte le richieste effettuate più tardi di T,liberando la memoria occupata dagli elementi eliminati.
Nell’eliminare gli elementi ,si deve tener conto del fatto che la lista è ordinata per orario crescente
Per le richieste rimaste in L,la funz deve inoltre restituire in un opportuno vettore (con una componente per ogni ora della giornata) il num delle richieste effettuate in ciascuna ora della giornata.In altre parole,la componente h del vettore deve contenere il num di richieste effettuate tra h:00 e h:59



Soluzione (un semplice abbozzo)

1)

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

# define LUNGNOME 20
# define LUNGIND 40
# define LUNGPROV 2

typedef char [LUNGNOME +1] ;
typedef char [LUNGIND +1] ;
typedef char [LUNGPROV +1] ;

Struct tipoOrario{

Int ore;
Int minuti ; };
typedef tipoorario TipoOrario;

struct TipoRichiesta{
TipoOrario orario;
TipoNome nome;
TipoIndirizzo indirizzo;
TipoProvincia pv;

typedef struct tipoRichiesta NodoRichieste ;
typedef Nodorichiesta *Tipolistarichiesta

2)
void individuarichieste (tipolistarichiesta lis tipoprovincia pv)
{tipolistarichiesta aux;
FILE * pv.txt,
if((pv.txt=fopen(“pv.txt”,”w”))= =null){
printf (“errore in apertura del file “pv.txt”);
exit (1);}

while (lis != null){
if(stamp (aux®pv,pv)= = 0)
fprint(“pv.txt”, "% d : %d %20s %40s %2s " ,lis.ore®pv,
lis.minuti®pv, lis.nome®pv, lis.indirizzo®pv, lis.pv®pv);

lis=lis®next;}
fclose(pv.txt);
}

3)?
logadato è offline   Rispondi citando il messaggio o parte di esso
Old 10-09-2002, 21:57   #2
recoil
Senior Member
 
L'Avatar di recoil
 
Iscritto dal: Jul 2002
Città: Milano
Messaggi: 19148
per ora non ti do una mano a farlo perché mi ci vorrebbe un po' troppo, cmq ti posso già dire che ci sono delle stranezze nel codice che hai postato...

typedef char [LUNGNOME +1] ; che vuol dire??

FILE * pv.txt sbagliato, non puoi dichiarare una variabile con il . in mezzo.

al posto di -> io vedo la ®, non capisco perché la metti...

va beh, se domani o dopo avrò tempo ti darò una mano un po' più concreta, cmq non hai specificato come deve essere scritto il file di output, intendi una cosa tipo "10.20 Mario Rossi Via Diaz 10" per ogni riga?

ciao
recoil è offline   Rispondi citando il messaggio o parte di esso
Old 10-09-2002, 23:28   #3
logadato
Junior Member
 
Iscritto dal: Sep 2002
Messaggi: 4
Ciao.
Ti ringrazio tantissim per l'aiuto che mi offri.
rispondo subito a qualche tuo quesito

typedef char TipoNome[LUNGNOME +1] dovrebbe essere così
Per quanto riguarda la variabile pv,me ne sono accorto e oggi pome ho cercato di porvi rimedio.
..Cmq Sono lontano dalla soluz.

Per le R tipo marchi registrato ..si, hai ragione ,solo che facendo copia-incolla da word ,sono apparse queste modifiche da me impreviste..e oltretutto non me ne sono accorto.

Per quanto riguarda il file di output è proprio come intendi tu.
Ora come ora mi chiedo come poi posso verificare la corretta funzionalità del programma.
oggi ho provato così.
Mi creo a parte una lista con inserite varie voci.Poi dal programma principale la richiamo in lettura e ci faccio una ricerca..

Ma è più facile a dirsi che a farsi,almeno per me!!

Domani forse conoscerò la soluz,nel caso contrario..sarò fiducioso in un tuo aiuto.

Grazie ancora,Lollo
logadato è offline   Rispondi citando il messaggio o parte di esso
Old 11-09-2002, 11:24   #4
-=Krynn=-
Senior Member
 
L'Avatar di -=Krynn=-
 
Iscritto dal: Dec 2001
Città: Firenze - Nosgoth
Messaggi: 7333
io farei come struttura una lista collegata dinamicamente con i puntatori, magari che abbia due puntatori, uno che punta in avanti ed uno che punta indietro.


Codice:
 struct lista { short int ore;
                                 short int minuti;
                                 char mittente[21];
                                 char indirizzo[41];
                                 char provincia[2];
                                 struct lista * next_ptr;
                                 struct lista * prev_ptr;
                              };


ora non ho molto tempo, quindi non ti fo le funzioni due punti 2 e 3, ma prova ad usare una lista in questa maniera, dovrebbe essere + semplice.
__________________
Xbox GamerTag: Falux || Psn: Falux79 || -=Krynn=-
-=Krynn=- è offline   Rispondi citando il messaggio o parte di esso
Old 11-09-2002, 19:41   #5
Gibbus
Senior Member
 
L'Avatar di Gibbus
 
Iscritto dal: Nov 2001
Messaggi: 1205
Mi sembra che il nostro amico sia alle prime armi con il C, quindi, se proprio si vuole puntare su una lista collegata, meglio implementare quella semplice non quella doppia .
Gibbus è offline   Rispondi citando il messaggio o parte di esso
Old 11-09-2002, 21:15   #6
mjordan
Bannato
 
L'Avatar di mjordan
 
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR ‫Casco: XR1000 Diabolic 3
Messaggi: 27578
Quote:
Originariamente inviato da Gibbus
[b]Mi sembra che il nostro amico sia alle prime armi con il C, quindi, se proprio si vuole puntare su una lista collegata, meglio implementare quella semplice non quella doppia .
Magari proprio non usare le liste.
mjordan è offline   Rispondi citando il messaggio o parte di esso
Old 12-09-2002, 20:51   #7
Gibbus
Senior Member
 
L'Avatar di Gibbus
 
Iscritto dal: Nov 2001
Messaggi: 1205
Già ! Meglio un array di strutture.
Però la lista collegata è richiesto esplicitamente dal problema.
Gibbus è offline   Rispondi citando il messaggio o parte di esso
Old 12-09-2002, 23:50   #8
logadato
Junior Member
 
Iscritto dal: Sep 2002
Messaggi: 4
grazie ancora a tutti per l'aiuto.
Il problema richiede proprio l'uso delle liste,ma con puntatore in un solo verso..
coem avevo scritto sono venuto in possesso della soluz totale dell'esercizio,che però ora no ho qui con me..domani o dopodomani mi riprometto di renderla disponibile per tutti...

oltretutto il difficile è stato no solo risolvere l'esercizo,ma sviluppare la lista L (descritta nel testo) e collegarla al programma per verificarne la funzionalità..in poche parole era necessario vedere se effettivamente 'sto prog girava :-)

Un saluto,alla prossima
logadato è offline   Rispondi citando il messaggio o parte di esso
Old 13-09-2002, 14:30   #9
-=Krynn=-
Senior Member
 
L'Avatar di -=Krynn=-
 
Iscritto dal: Dec 2001
Città: Firenze - Nosgoth
Messaggi: 7333
Quote:
Originariamente inviato da mjordan
[b]

Magari proprio non usare le liste.
si ma il testo chiedeva esplicitamente una lista..

Vabbè, la mia struttura va benissimo, basta cancellare l'ultima riga

Codice:
struct lista * prev_ptr;
ed ottieni una lista semplice....
__________________
Xbox GamerTag: Falux || Psn: Falux79 || -=Krynn=-
-=Krynn=- è offline   Rispondi citando il messaggio o parte di esso
Old 14-09-2002, 00:57   #10
mjordan
Bannato
 
L'Avatar di mjordan
 
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR ‫Casco: XR1000 Diabolic 3
Messaggi: 27578
Quote:
Originariamente inviato da -=Krynn=-
[b]

si ma il testo chiedeva esplicitamente una lista..

Vabbè, la mia struttura va benissimo, basta cancellare l'ultima riga

Codice:
struct lista * prev_ptr;
ed ottieni una lista semplice....
Si ho visto adesso. Sorry
mjordan è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2002, 00:57   #11
logadato
Junior Member
 
Iscritto dal: Sep 2002
Messaggi: 4
ciao A tutti!.Come promesso vi invio una probabile completa soluzione dell'esercizio.Spero possa essere di aiuto.
vi ringrazio ancora per il vostro aiuto.
Alla prossima.
Lorenzo



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

#define MAXNOME 20
#define MAXIND 40
#define MAXSIGLA 3

typedef char tiponome[MAXNOME+1];
typedef char tipoind[MAXIND+1];
typedef char tiposigla[MAXSIGLA];


struct Orario{ int ore;
int minuti;};
typedef struct Orario tipoorario;

struct Lista { tipoorario orario;
tiponome nome;
tipoind indirizzo;
tiposigla sigla;
struct Lista *next;};

typedef struct Lista tiponodolista;
typedef tiponodolista *tipolista;
typedef tipoorario v[24];

/*Punto 1:funzione che scrive su file
le richieste destinate alla provincia P*/
void Fun1(tipolista L,tiposigla P){

/*definizioni*/
FILE *fp=NULL;
char *nomefile;
char *point=".";
char *c="TXT";

/*operazioni per ottenere il nome del file*/
strcpy(nomefile,P);
strcat(nomefile,point);
strcat(nomefile,c);

/*operazioni per scrivere le richieste sul file*/
if((fp=fopen(nomefile,"w"))==NULL){
fprintf(stderr,"Errore in apertura del file %s in scrittura\n",nomefile);
exit(1);}

while(L!=NULL){
if((strcmp(L->sigla,P))==0)
fprintf(fp,"%d %d %s %s\n",L->orario.ore,L->orario.minuti,L->nome,L->indirizzo);
L=L->next; }
fclose(fp); }

/*Punto 3:Funzione che restituisce l'array con
il numero di richieste effettuate in un'ora
della giornata*/
void Fun3(tipoorario v[24],tipolista L){

/*definizioni*/
tipoorario n;
tipoorario h;
tipoorario i;
n.ore=0;
n.minuti=0;

printf("scrivi l'ora \n");
scanf("%d",&(h.ore));
while(L!=NULL){
if((h.ore)==(L->orario.ore)){
(n.ore)++;}
L=L->next; }

v[h.ore]=n;
printf("L'indice%d ha valore %d\n",h.ore,v[h.ore]); }

/*Funzione ausiliaria per la stampa delle lista*/
void Stampalista(tipolista L){
while(L!=NULL){
printf("%d.%d %s %s %s\n",L->orario.ore,L->orario.minuti,L->nome,L->indirizzo,L->sigla);
}
L=L->next; }

/*Punto 3:Funzione che elimina dalla lista
le richieste avvenute dopo l'orario T.
Nella funzione si tiene conto che la
lista Š ordinata in senso crescente,per
tanto se un elem Š >T,lo saranno i successivi,
che quindi devono essereeliminati*/
void Fun2(tipolista *L,tipoorario T){

tipolista aux;
if((*L)->orario.ore>(T.ore)) {
if((*L)->orario.minuti>(T.minuti)){
aux=*L;
(*L)=(*L)->next;
free(aux);
Fun2(&(*L)->next,T); }}
else
Fun2(&(*L)->next,T);}

int main(){
tipoorario h;
tipoorario v[24];
tiposigla P;
tipoorario T;
char *nomefile;
tipolista L=NULL;
tipolista aux;

clrscr();

/*Costruisco una lista di prova*/
aux=malloc(sizeof(tipolista));
aux->orario.ore=9;
aux->orario.minuti=30;
strcpy(aux->nome,"Rossi");
strcpy(aux->indirizzo,"ViaVerdi");
strcpy(aux->sigla,"FI");
aux->next=L;
L=aux;

aux=malloc(sizeof(tipolista));
aux=malloc(sizeof(tipolista));
aux->orario.ore=10;
aux->orario.minuti=45;
strcpy(aux->nome,"Verdi");
strcpy(aux->indirizzo,"ViaBianchi");
strcpy(aux->sigla,"BA");
aux->next=L;
L=aux;

aux=malloc(sizeof(tipolista));
aux->orario.ore=11;
aux->orario.minuti=10;
strcpy(aux->nome,"Bianchi");
strcpy(aux->indirizzo,"ViaViola");
strcpy(aux->sigla,"MI");
aux->next=L;
L=aux;

aux=malloc(sizeof(tipolista));
aux->orario.ore=13;
aux->orario.minuti=12;
strcpy(aux->nome,"Viola");
strcpy(aux->indirizzo,"ViaLilla");
strcpy(aux->sigla,"FI");
aux->next=L;
L=aux;

aux=malloc(sizeof(tipolista));
aux->orario.ore=16;
aux->orario.minuti=30;
strcpy(aux->nome,"Lilla");
strcpy(aux->indirizzo,"ViaNeri");
strcpy(aux->sigla,"FG");
aux->next=L;
L=aux;

aux=malloc(sizeof(tipolista));
aux->orario.ore=16;
aux->orario.minuti=50;
strcpy(aux->nome,"Gialli");
strcpy(aux->indirizzo,"ViaAzzurri");
strcpy(aux->sigla,"PA");
aux->next=L;
L=aux;

aux=malloc(sizeof(tipolista));
aux->orario.ore=18;
aux->orario.minuti=20;
strcpy(aux->nome,"Neri");
strcpy(aux->indirizzo,"ViaRossi");
strcpy(aux->sigla,"MI");
aux->next=L;
L=aux;


printf("Immetti la provincia di interesse:\n");
scanf("%s",&P);
Stampalista(L); /*Stampa la lista di prova*/

Fun1(L,P);

printf("Immetti l'orario:\n"); /*per Fun2*/
scanf("%d%d",&T.ore,&T.minuti);
Fun2(&L,T);
Stampalista(L); /*Stampa la lista modificata*/

Fun3(v,L);
return 0;
}
logadato è offline   Rispondi citando il messaggio o parte di esso
Old 20-09-2002, 16:52   #12
Python
Senior Member
 
Iscritto dal: Jul 2002
Messaggi: 2183
ciao ho provato a compilare il tuo codice cosi x prova (mi può essere d'esempio, sono + agli inizi di te (molto di +))

mi da 9 erroroi in compilazione

error E2034 prob.cpp 127 cannot convert 'void *' to 'lista *' in function main()

e cosi x i righi 130 139 140 149 etc

prima ancora mi dice che

warning W8004 prob.cpp 50 'fp' is assigned a value that is never used in function

e cosi alla riga 98 x 'L'
Python è offline   Rispondi citando il messaggio o parte di esso
Old 20-09-2002, 19:09   #13
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Prova a rinominare il sorgente come .C

Probabilmente l'hai chiamato CPP e ti usa le estensioni al C del C++...ad esempio la necessità del cast esplicito sul void *...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 20-09-2002, 20:36   #14
Python
Senior Member
 
Iscritto dal: Jul 2002
Messaggi: 2183
il compilatore che ho è per c++ (e come si dice in giro con un compilatore c++ posso compilare codice c)
però se lo rinomino in prob.c mi dice che non trova il file prob.cpp

cioè lo vuole proprio come .cpp se nò nn lo compila
Python è offline   Rispondi citando il messaggio o parte di esso
Old 21-09-2002, 11:22   #15
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Sì, si può compilare anche codice C con un compilatore C++...ma come vedi ci sono alcune differenze...ad esempio bisogna mettere il cast esplicito (lista *) davanti alla malloc...

Che compilatore hai ? Magari basta reincludere il file .c all'interno del progetto...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 21-09-2002, 19:48   #16
Python
Senior Member
 
Iscritto dal: Jul 2002
Messaggi: 2183
il borland compiler
Python è offline   Rispondi citando il messaggio o parte di esso
Old 22-09-2002, 11:36   #17
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da Python
[b]il borland compiler
Beh...in teoria dovrebbe compilare anche sorgenti C puri...
Probabilmente è proprio una questione di progetto...lui veva incluso il CPP e avendolo rinominato in C non lo riusciva più a trovare...
cionci è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi Wind Tre 'accende' il 5G Standalone in Italia: s...
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh OPPO Find X9 Pro: il camera phone con teleobiett...
DJI Romo, il robot aspirapolvere tutto trasparente DJI Romo, il robot aspirapolvere tutto trasparen...
DJI Osmo Nano: la piccola fotocamera alla prova sul campo DJI Osmo Nano: la piccola fotocamera alla prova ...
FUJIFILM X-T30 III, la nuova mirrorless compatta FUJIFILM X-T30 III, la nuova mirrorless compatta
Operazione Cagliostro: Voltaiko e lo sch...
9 accessori auto imperdibili oggi su Ama...
Scontro tra giganti: Disney e YouTube TV...
Hyundai accelera sull'idrogeno con un nu...
4 Maxi TV in sconto su Amazon: fino a 75...
Da 579€ a 639€: 3 portatili imperdibili ...
Il nuovo Apple Watch SE 3 scende subito ...
Amazon ha cancellato il nuovo MMO de Il ...
Stranger Things 5: il trailer ufficiale ...
Apple chiude un anno fiscale da record. ...
Windows 11, gli aggiornamenti diventano ...
WhatsApp arriva su Apple Watch: tutte le...
Amazon inspiegabile: è attivo un ...
Così SK hynix vuole rivoluzionare...
Stop ai sussidi per le elettriche: la Ci...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 11:05.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v