Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Cos'è la bolla dell'IA e perché se ne parla
Cos'è la bolla dell'IA e perché se ne parla
Si parla molto ultimamente di "bolla dell'intelligenza artificiale", ma non è sempre chiaro perché: l'IA è una tecnologia molto promettente e che ha già cambiato molte cose dentro e fuori le aziende, ma ci sono enormi aspettative che stanno gonfiando a dismisura i valori delle azioni e distorcendo il mercato. Il che, com'è facile intuire, può portare a una ripetizione della "bolla dotcom", e forse anche di quella dei mutui subprime. Vediamo perché
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 04-01-2011, 18:25   #1
pettegola
Junior Member
 
Iscritto dal: Jan 2011
Messaggi: 3
help me c++!

Ciao a tutti!!! beh cm vedete sn nuova nel forum...così come nella programmazione! devo fare 1 rubrica telefonica e nn riesco a creare 1 funz decente che mi elimini un contatto!! xD qlk1 può aiutarmi??? thx!!!






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





#define MAXCHAR 20

typedef
struct{
char cognome[MAXCHAR];
}inseriti;

typedef
struct{
char nome[MAXCHAR];
char numero[MAXCHAR];
char email[MAXCHAR];
char web[MAXCHAR];
char indirizzo[MAXCHAR];
}associati ;


typedef
struct {
inseriti contenuto;
associati valore;
}Contatto;



struct Lista;
typedef struct Lista *PuntUnElementoDellaLista;



typedef struct Lista{
Contatto elemento;
PuntUnElementoDellaLista next;
}Lista;

Lista* Inserisci(PuntUnElementoDellaLista pl, inseriti *contenuto, associati *valore){
PuntUnElementoDellaLista pTmp;
pTmp=(PuntUnElementoDellaLista)malloc(sizeof(Lista));

if (NULL != pTmp){
pTmp->next=pl;
strcpy(pTmp->elemento.valore.nome,valore->nome);
strcpy(pTmp->elemento.contenuto.cognome,contenuto->cognome);
strcpy(pTmp->elemento.valore.numero,valore->numero);
strcpy(pTmp->elemento.valore.email,valore->email);
strcpy(pTmp->elemento.valore.indirizzo,valore->indirizzo);
strcpy(pTmp->elemento.valore.web,valore->web);

}
return(pTmp);


void Stampa(PuntUnElementoDellaLista pl){
PuntUnElementoDellaLista pTmp=pl;

while (pTmp!=NULL){

printf("\n Cognome:\n %s",pTmp->elemento.contenuto.cognome);
printf("\n Nome: \n %s,",pTmp->elemento.valore.nome);
printf("\n Numero: \n %s",pTmp->elemento.valore.numero);
printf("\n Indirizzo:\n %s",pTmp->elemento.valore.indirizzo);
printf("\n Indirizzo e-mail:\n %s",pTmp->elemento.valore.email);
printf("\n Indirizzo web:\n %s",pTmp->elemento.valore.web);
pTmp=pTmp->next;
}
system("PAUSE");

}

void Elimina(PuntUnElementoDellaLista pl){

Contatto elem;
printf("Inserisci il cognome del contatto da eliminare");
scanf("%s",elem.contenuto.cognome);

PuntUnElementoDellaLista s,r;

if(pl->next!=NULL){
s=pl;
while(s->next!=NULL){
if(
strcmp(s->elemento.contenuto.cognome,elem.contenuto.cognome)){
r=s->next;
s->next=s->next->next;
free(r);
}
else s=s->next;
}
}
if(
strcpy(pl->elemento.contenuto.cognome,elem.contenuto.cognome)){
r=pl;
pl=pl->next;
free(r);
}
}
int main(){
PuntUnElementoDellaLista lista;
lista = NULL;

int i=0,scelta;
associati val;
inseriti cont;

do{ printf("Scegli una delle seguenti operazioni:\n");
printf("Digita 1 per Inserire i contatti nella rubrica\n");
printf("Digita 4 per visualizzare tutti i contatto in rubrica\n");
printf("Digita 5 per eliminare un elemento della rubrica\n");
scanf("%d",&scelta);
system("CLS");

switch(scelta){
case 1:


while (true){
char nome_temp[MAXCHAR];
printf("Inserisci il cognome dell'contatto (digita fine per terminare) n: %d\n",i);
scanf("%s",nome_temp);
if (strcmp(nome_temp, "fine")==0) break;


strcpy(cont.cognome,nome_temp);
printf("Inserisci il nome del contatto n: %d\n",i);
scanf("%s",nome_temp);
strcpy(val.nome,nome_temp);
printf("Inserisci il numero del contatto n: %d\n",i);
scanf("%s",nome_temp);
strcpy(val.numero,nome_temp);
printf("Inserisci l'indirizzo del contatto n:%d\n",i);
scanf("%s",nome_temp);
strcpy(val.indirizzo,nome_temp);
printf("Inserisci l'indirizzo e-mail del contatto n: %d\n",i);
scanf("%s",nome_temp);
strcpy(val.email,nome_temp);
printf("Inserisci l'indirizzo di pagina web del contatto n: %d\n",i);
scanf("%s",nome_temp);
strcpy(val.web,nome_temp);

i++;
lista=Inserisci(lista,&cont,&val);

}break;
case 4:
printf("Ecco il contenuto della Rubrica del tuo smartphone\n");
Stampa(lista);
break;


case 5:
Elimina(lista);
break;
} system("CLS");
}while(scelta<6);
system("PAUSE");



return 0;
}
pettegola è offline   Rispondi citando il messaggio o parte di esso
Old 04-01-2011, 18:56   #2
tuccio`
Senior Member
 
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
c++?

comunque se metti il codice tra i tag code così che rimanga l'indentazione lo leggo meglio, così è troppo incasinato

a occhio potresti aver sbagliato qui:

Codice:
if(strcmp(s->elemento.contenuto.cognome,elem.contenuto.cognome))
perché probabilmente volevi dire "se le due stringhe sono uguali", ma strcmp ritorna 0 se sono uguali, quindi avresti dovuto scrivere

Codice:
if(!strcmp(s->elemento.contenuto.cognome,elem.contenuto.cognome))
poi non capisco cosa fai nell'if successivo, dove c'è la strcpy
tuccio` è offline   Rispondi citando il messaggio o parte di esso
Old 04-01-2011, 19:27   #3
pettegola
Junior Member
 
Iscritto dal: Jan 2011
Messaggi: 3
Codice:
#include<stdio.h>
#include<iostream>
#include<stdlib.h>





#define MAXCHAR 20 

typedef
struct{
char cognome[MAXCHAR];
}inseriti;

typedef
struct{
char nome[MAXCHAR];
char numero[MAXCHAR];
char email[MAXCHAR];
char web[MAXCHAR];
char indirizzo[MAXCHAR];
}associati ;


typedef 
struct { 
inseriti contenuto;
associati valore;
}Contatto; 



struct Lista;
typedef struct Lista *PuntUnElementoDellaLista;



typedef struct Lista{
Contatto elemento;
PuntUnElementoDellaLista next;
}Lista;

Lista* Inserisci(PuntUnElementoDellaLista pl, inseriti *contenuto, associati *valore){
PuntUnElementoDellaLista pTmp;
pTmp=(PuntUnElementoDellaLista)malloc(sizeof(Lista));

if (NULL != pTmp){
pTmp->next=pl;
strcpy(pTmp->elemento.valore.nome,valore->nome);
strcpy(pTmp->elemento.contenuto.cognome,contenuto->cognome);
strcpy(pTmp->elemento.valore.numero,valore->numero);
strcpy(pTmp->elemento.valore.email,valore->email);
strcpy(pTmp->elemento.valore.indirizzo,valore->indirizzo);
strcpy(pTmp->elemento.valore.web,valore->web);

}
return(pTmp);


void Stampa(PuntUnElementoDellaLista pl){
PuntUnElementoDellaLista pTmp=pl;

while (pTmp!=NULL){

printf("\n Cognome:\n %s",pTmp->elemento.contenuto.cognome);
printf("\n Nome: \n %s,",pTmp->elemento.valore.nome);
printf("\n Numero: \n %s",pTmp->elemento.valore.numero);
printf("\n Indirizzo:\n %s",pTmp->elemento.valore.indirizzo);
printf("\n Indirizzo e-mail:\n %s",pTmp->elemento.valore.email);
printf("\n Indirizzo web:\n %s",pTmp->elemento.valore.web);
pTmp=pTmp->next;
}
system("PAUSE");

} 

void Elimina(PuntUnElementoDellaLista pl){

Contatto elem;
printf("Inserisci il cognome del contatto da eliminare");
scanf("%s",elem.contenuto.cognome);

PuntUnElementoDellaLista s,r;

if(pl->next!=NULL){
s=pl;
while(s->next!=NULL){
if(!strcmp(s->elemento.contenuto.cognome,elem.contenuto.cognome)){
r=s->next;
s->next=s->next->next;
free(r);
}
else s=s->next;
}
}
if(!strcmp(pl->elemento.contenuto.cognome,elem.contenuto.cognome)){
r=pl;
pl=pl->next;
free(r);
}
} 
int main(){
PuntUnElementoDellaLista lista; 
lista = NULL; 

int i=0,scelta; 
associati val;
inseriti cont;

do{ printf("Scegli una delle seguenti operazioni:\n");
printf("Digita 1 per Inserire i contatti nella rubrica\n");
printf("Digita 4 per visualizzare tutti i contatto in rubrica\n");
printf("Digita 5 per eliminare un elemento della rubrica\n");
scanf("%d",&scelta);
system("CLS");

switch(scelta){
case 1:


while (true){ 
char nome_temp[MAXCHAR]; 
printf("Inserisci il cognome dell'contatto (digita fine per terminare) n: %d\n",i); 
scanf("%s",nome_temp); 
if (strcmp(nome_temp, "fine")==0) break; 


strcpy(cont.cognome,nome_temp); 
printf("Inserisci il nome del contatto n: %d\n",i);
scanf("%s",nome_temp);
strcpy(val.nome,nome_temp);
printf("Inserisci il numero del contatto n: %d\n",i);
scanf("%s",nome_temp);
strcpy(val.numero,nome_temp);
printf("Inserisci l'indirizzo del contatto n:%d\n",i);
scanf("%s",nome_temp);
strcpy(val.indirizzo,nome_temp);
printf("Inserisci l'indirizzo e-mail del contatto n: %d\n",i);
scanf("%s",nome_temp);
strcpy(val.email,nome_temp);
printf("Inserisci l'indirizzo di pagina web del contatto n: %d\n",i);
scanf("%s",nome_temp);
strcpy(val.web,nome_temp);

i++;
lista=Inserisci(lista,&cont,&val);

}break;
case 4:
printf("Ecco il contenuto della Rubrica del tuo smartphone\n");
Stampa(lista); 
break; 


case 5:
Elimina(lista);
break;
} system("CLS");
}while(scelta<6);
system("PAUSE"); 



return 0; 
}


ke sciocca!!! nn volevo scrivere strcpy ma stcmp
cmq anke modifcato così...fa cose strane...cioè mi cancella tutti i contatti tranne il primo invece ne dovrebbe cancellà 1 solo!
pettegola è offline   Rispondi citando il messaggio o parte di esso
Old 04-01-2011, 19:58   #4
tuccio`
Senior Member
 
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
il fatto che non ti cancelli la testa della lista è normale, perché passando il puntatore al primo elemento non hai nessun controllo sul puntatore lista che hai nel main (che è il puntatore alla testa, e non viene modificato)

ovviamente tu devi poter cancellare anche il primo elemento e modificare la testa della lista se necessario, quindi devi cambiare il prototipo della funzione, hai due opzioni:

Codice:
PuntUnElementoDellaLista Elimina(PuntUnElementoDellaLista lista);
così invece di non ritornare niente ritorni la testa della nuova lista se è necessario modificarla, e quindi puoi chiamarla così:

Codice:
lista = Elimina(lista);
la seconda opzione invece è usare un puntatore a lista, per poterne modificare il valore, quindi il prototipo diventa:

Codice:
void Elimina(PuntUnElementoDellaLista *lista);
e puoi richiamare con

Codice:
Elimina(&lista);
e se necessario puoi eliminare il primo elemento della lista facendo, ad esempio:

Codice:
PuntUnElementoDellaLista tmp = *lista;
*lista = (*lista)->next
free(tmp);
inoltre ti faccio notare che nel while confronti il cognome dell'elemento s, verifichi che sia quello da eliminare, ma non elimini s, bensì s->next

comunque in realtà devi rivedere un po' tutta la struttura della funzione, usando una delle due opzioni che ti ho detto
tuccio` è offline   Rispondi citando il messaggio o parte di esso
Old 04-01-2011, 21:49   #5
pettegola
Junior Member
 
Iscritto dal: Jan 2011
Messaggi: 3
ho corretto nel while ma non ho capito il resto che hai detto!

cioè mica posso mettere la variabile lista come parametro della funzione?? nn ho capito sto fatto....
pettegola è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
FRITZ!Repeater 1700 estende la rete super-veloce Wi-Fi 7 FRITZ!Repeater 1700 estende la rete super-veloce...
Scoperto un nuovo esopianeta che orbita ...
Blue Origin NS-37: successo per la missi...
Potrebbe essere stata rilevata una super...
La cometa interstellare 3I/ATLAS è...
Xiaomi 17 Ultra: l'autonomia non sarà un...
Il processo produttivo a 2 nm di TSMC è ...
L'atteso aggiornamento dei driver della ...
The Elder Scrolls VI nel 2029 e Fallout ...
Il Ryzen 7 9850X3D appare nel catalogo d...
Weekend pre natalizio Amazon, ecco tutte...
Prezzi giù su Oral-B iO: spazzolini elet...
19.000 Pa a un prezzo senza precedenti: ...
Narwal in super offerta su Amazon: robot...
SK hynix e NVIDIA lavorano a un SSD spec...
Roborock in super offerta su Amazon: pre...
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: 02:09.


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