Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura)
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura)
Abbiamo provato per dieci giorni la Hyundai IONIQ 5 N, con 650 CV, 770 Nm e uno 0-100 km/h in 3,4 secondi. Il suo punto forte è N e-Shift, che simula un cambio a otto rapporti con suoni da motore termico e perfino un bang supersonico
CES Unveiled Milan, l'IA diventa tecnologia fondativa e il commercio torna centrale
CES Unveiled Milan, l'IA diventa tecnologia fondativa e il commercio torna centrale
La prima tappa italiana della Road to CES porta a Milano i vertici della Consumer Technology Association, con una nuova griglia di lettura dei trend tecnologici e una posizione netta su dazi e regolamentazione dell'IA
 Recensione OPPO Find X10 Pro Max: un top di gamma completo con tre fotocamere da 200MP
Recensione OPPO Find X10 Pro Max: un top di gamma completo con tre fotocamere da 200MP
OPPO ha appena lanciato sul mercato la nuova serie Find X10, che ha come smartphone premium il Find X10 Pro Max, uno smartphone completo, che fa del comparto fotografico il suo vero punto di forza. Ma sono tante le novità, tra cui l'AI che adesso diventa agentica. Ma andiamo a vedere nel dettaglio questo nuovo smartphone.
Tutti gli articoli Tutte le news

Vai al Forum
Discussione Chiusa
 
Strumenti
Old 30-05-2008, 22:06   #1
Jack-Carter
Member
 
Iscritto dal: Oct 2007
Messaggi: 55
Programma Coda in C

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

#define MAX_STR 10

#define SUCCESS 2
#define FAILURE 3

struct e {
int key;
/* ... */
struct e *next;
};

struct e *enqueue (struct e *pTail, int val);
struct e *dequeue (struct e *pTail, int *val, int *status);
struct e *newE ( );
void traversal (struct e *pTail);
void lettura (int *val);
void stampa (int val, int status);

int
main (
void
)
{
char scelta[MAX_STR];
struct e *pTail;
int val, status;

pTail = NULL;

do {
printf (
"Effettua la scelta (enqueue (e), dequeue (d), traveral (t),"
" f (fine)): ");
scanf ("%s", scelta);

if (strcmp (scelta, "e") == 0) {
lettura (&val);
pTail = enqueue (pTail, val);
} else
if (strcmp (scelta, "d") == 0) {
pTail = dequeue (pTail, &val, &status);
stampa (val, status);
} else {
if (strcmp (scelta, "t") == 0) {
traversal (pTail);
} else {
if (strcmp (scelta, "f") != 0) {
printf ("Scelta errata!!!\n");
}
}
}
} while (strcmp (scelta, "f") != 0);

return (SUCCESS);
}

struct e *
enqueue (
struct e *pTail,
int val
)
{
struct e *pNew;

pNew = newE ();

pNew->key = val;
/* campi */

if (pTail==NULL) {
pTail = pNew;
pTail->next = pTail;
} else {
pNew->next = pTail->next;
pTail->next = pNew;
pTail = pNew;
}

return (pTail);
}

struct e *
dequeue (
struct e *pTail,
int *val,
int *status
)
{
struct e *pOld;

if (pTail != NULL) {
*status = SUCCESS;
if (pTail == pTail->next) {
*val = pTail->key;
free (pTail);
pTail = NULL;
} else {
pOld = pTail->next;
*val = pOld->key;
pTail->next = pOld->next;
free (pOld);
}
} else {
*status = FAILURE;
}

return (pTail);
}

void
traversal (
struct e *pTail
)
{
struct e *pTmp;

fprintf (stdout, "pTail -> ");
if (pTail == NULL) {
fprintf (stdout, "NULL\n");
} else {
pTmp = pTail;
do {
fprintf (stdout, "%d -> ", pTmp->key);
pTmp = pTmp->next;
} while (pTmp != pTail);

fprintf (stdout, "pTail \n");
}

return;
}

struct e *
newE (
)
{
struct e *p;

p = (struct e *) malloc (sizeof (struct e));

if (p==NULL) {
fprintf (stderr, "Allocazione fallita.");
exit (FAILURE);
}

return (p);
}

/* lettura dati */
void
lettura (
int *val
)
{
fprintf (stdout, "Elemento da introdurre = ");
scanf ("%d", val);

return;
}

/* visualizzazione dati */
void
stampa (
int val,
int status
)
{
if (status == SUCCESS) {
fprintf (stdout, "Elemento estratto = %d\n", val);
} else {
fprintf (stdout, "Elemento inesistente.\n");
}

return;
}
Salve, ho un problema con questo programma in C. Visto che per me le code sono un argomento nuovo, voglio capire se sono io a non aver ben capito come funzionano o se è il programma ad essere sbagliato. Premetto di non averlo fatto io.
Il programma non ha errori di compilazione, viene eseguito correttamente senza errori di allocazione etc. Il problema è questo:

Quote:
Effettua la scelta (enqueue (e), dequeue (d), traveral (t), f (fine)): t
pTail -> NULL
Effettua la scelta (enqueue (e), dequeue (d), traveral (t), f (fine)): e
Elemento da introdurre = 1
Effettua la scelta (enqueue (e), dequeue (d), traveral (t), f (fine)): t
pTail -> 1 -> pTail
Effettua la scelta (enqueue (e), dequeue (d), traveral (t), f (fine)): e
Elemento da introdurre = 2
Effettua la scelta (enqueue (e), dequeue (d), traveral (t), f (fine)): t
pTail -> 2 -> 1 -> pTail
Effettua la scelta (enqueue (e), dequeue (d), traveral (t), f (fine)): e
Elemento da introdurre = 3
Effettua la scelta (enqueue (e), dequeue (d), traveral (t), f (fine)): t
pTail -> 3 -> 1 -> 2 -> pTail
Effettua la scelta (enqueue (e), dequeue (d), traveral (t), f (fine)): e
Elemento da introdurre = 4
Effettua la scelta (enqueue (e), dequeue (d), traveral (t), f (fine)): t
pTail -> 4 -> 1 -> 2 -> 3 -> pTail
Effettua la scelta (enqueue (e), dequeue (d), traveral (t), f (fine)):
Come ho detto sono un dilettante sulle code, e quindi potrei essere io a non aver capito.
Il fatto che ci sia un puntatore al primo elemento della coda pTail, immagino sia normale no? Però perchè ogni volta che inserisco un elemento nuovo, perchè viene messo all'inizio della coda, e poi dopo che ne inserisco un altro, quello precendente diventa l'ultimo e il nuovo diventa il primo? Spero di essere stato chiaro.
Grazie per l'aiuto.
Jack-Carter è offline  
Old 31-05-2008, 02:04   #2
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Quote:
Originariamente inviato da Jack-Carter Guarda i messaggi
Però perchè ogni volta che inserisco un elemento nuovo, perchè viene messo all'inizio della coda, e poi dopo che ne inserisco un altro, quello precendente diventa l'ultimo e il nuovo diventa il primo?
Per questo:
Codice:
if (pTail == NULL)
{
  pTail = pNew;
  pTail->next = pTail;
}
else
{
  pNew->next = pTail->next;
  pTail->next = pNew;
  pTail = pNew;
}

return (pTail);
O scorri tutta la lista e aggiungi in coda, o altrimenti aggiungi in testa come fai lì. Altrimenti puoi usare un po' di ricorsione, ti allego un file di esempio.
Allegati
File Type: txt list.txt (433 Bytes, 4 visite)
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline  
Old 31-05-2008, 09:07   #3
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Chiuso.
http://www.hwupgrade.it/forum/showthread.php?t=1649196
VICIUS è offline  
 Discussione Chiusa


Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura) Hyundai IONIQ 5 N, l'elettrica che finge di esse...
CES Unveiled Milan, l'IA diventa tecnologia fondativa e il commercio torna centrale CES Unveiled Milan, l'IA diventa tecnologia fond...
 Recensione OPPO Find X10 Pro Max: un top di gamma completo con tre fotocamere da 200MP Recensione OPPO Find X10 Pro Max: un top di gam...
WoW Forever provato: il MMORPG che la community chiedeva da anni è arrivato WoW Forever provato: il MMORPG che la community ...
TCL P80 Ultra: con un display AMOLED opaco è una gioia per gli occhi e per le dita TCL P80 Ultra: con un display AMOLED opaco &egra...
GPU vietate in Cina: NVIDIA B300 compare...
NVIDIA RTX Remix 1.6 porta il DLSS 5 Neu...
OpenAI addestra i modelli di frontiera s...
Zen 6 contro Zen 5 a parità di fr...
L'IA vuole sempre più chip, ma c'...
NordVPN anticipa il Black Friday: sconti...
HPE Spaceborne Computer-4: calcolo ad al...
500 chilometri in soli 5 minuti: la rica...
CATL e BAIC puntano a un milione di auto...
La Svezia blocca ChatGPT e Claude sui co...
La NASA ha tenuto una conferenza sulle f...
Galaxy S27 Ultra, spunta la batteria in ...
Google Maps porta l'intelligenza artific...
Una foto troppo perfetta può costare car...
Caldo in Europa, oltre 50.000 morti stim...
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: 18:22.


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