Torna indietro   Hardware Upgrade Forum > Software > Programmazione

KTC H27E6 a 300Hz e 1ms: come i rivali ma a metà prezzo
KTC H27E6 a 300Hz e 1ms: come i rivali ma a metà prezzo
KTC lancia il nuovo monitor gaming H27E6, un modello da 27 pollici che promette prestazioni estreme grazie al pannello Fast IPS con risoluzione 2K QHD (2560x1440). Il monitor si posiziona come una scelta cruciale per gli appassionati di eSport e i professionisti creativi, combinando una frequenza di aggiornamento di 300Hz e un tempo di risposta di 1ms con un'eccezionale fedeltà cromatica
Cineca inaugura Pitagora, il supercomputer Lenovo per la ricerca sulla fusione nucleare
Cineca inaugura Pitagora, il supercomputer Lenovo per la ricerca sulla fusione nucleare
Realizzato da Lenovo e installato presso il Cineca di Casalecchio di Reno, Pitagora offre circa 44 PFlop/s di potenza di calcolo ed è dedicato alla simulazione della fisica del plasma e allo studio dei materiali avanzati per la fusione, integrandosi nell’ecosistema del Tecnopolo di Bologna come infrastruttura strategica finanziata da EUROfusion e gestita in collaborazione con ENEA
Mova Z60 Ultra Roller Complete: pulisce bene grazie anche all'IA
Mova Z60 Ultra Roller Complete: pulisce bene grazie anche all'IA
Rullo di lavaggio dei pavimenti abbinato a un potente motore da 28.000 Pa e a bracci esterni che si estendono: queste, e molte altre, le caratteristiche tecniche di Z60 Ultra Roller Complete, l'ultimo robot di Mova che pulisce secondo le nostre preferenze oppure lasciando far tutto alla ricca logica di intelligenza artificiale integrata
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


KTC H27E6 a 300Hz e 1ms: come i rivali ma a metà prezzo KTC H27E6 a 300Hz e 1ms: come i rivali ma a met&...
Cineca inaugura Pitagora, il supercomputer Lenovo per la ricerca sulla fusione nucleare Cineca inaugura Pitagora, il supercomputer Lenov...
Mova Z60 Ultra Roller Complete: pulisce bene grazie anche all'IA Mova Z60 Ultra Roller Complete: pulisce bene gra...
Renault Twingo E-Tech Electric: che prezzo! Renault Twingo E-Tech Electric: che prezzo!
Il cuore digitale di F1 a Biggin Hill: l'infrastruttura Lenovo dietro la produzione media Il cuore digitale di F1 a Biggin Hill: l'infrast...
Iliad porta le SIM Express in edicola: r...
Offerte Amazon sui TV Mini LED Hisense 2...
Il silenzio digitale che fa male: come i...
Il responsabile del programma Cybertruck...
Domanda alle stelle per SSD e RAM: in Gi...
Zuckerberg vuole eliminare tutte le mala...
Otto suicidi, un solo chatbot: si moltip...
'Windows fa schifo' perché ha dim...
Tesla aggiorna il camion Semi, e sposta ...
Come funziona la carta Klarna: tre livel...
I Funko Pop potrebbero sparire per sempr...
Windows 98 in crash davanti a migliaia d...
Samsung Smart TV 85'' Neo QLED Mini LED ...
TikTok rafforza la sicurezza degli acqui...
Samsung Galaxy S25 Ultra 256 GB a ...
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: 15:50.


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