Torna indietro   Hardware Upgrade Forum > Software > Programmazione

L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026
L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026
La parola d'ordine al Nextcloud Summit 2026, che si è tenuto a Monaco, è stata "sovranità". Non come è spesso usato questo termine in politica ma, al contrario, come capacità positiva di decidere il proprio destino tecnologico, con modalità collaborative e aperte. L'Europa dice già molto nel mondo open source, che viene visto come mezzo per ottenere la tanto agognata autonomia digitale
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più
Dreame X60 Pro Ultra Complete implementa due bracci estensibili, per spazzola e moccio, che si spingono ben oltre quanto visto sino ad oggi permettendo una pulizia di casa ancor più capillare e precisa
TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati
TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati
La tecnologia SQD-Mini LED di TCL arriva sul taglio da 65 pollici con la serie C8L: 2040 zone, pannello WHVA 2.0 e un picco che alle rilevazioni delle sonde tocca i 4400 nit nel profilo Filmmaker e un HDR quasi perfetto
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 29-10-2010, 12:15   #1
Sebilio89
Junior Member
 
Iscritto dal: Oct 2010
Messaggi: 10
[C++] Problema con funzioni ricerca(dicotomica) e modifica in database

Salve ragazzi, mi sn appena iscritto a questo sito, e sn un programmatore alle primissime armi, quindi mi scuso fin d'ora x tutti gli errori ke potrò commettere, e sn naturalmente disponibile ad accettare suggerimenti e critiche purché siano costruttive. Sto trovando alcuni problemi nella gestione di un database e x qst chiedo il vostro aiuto:
- il primo è la ricerca ke nn va(il prof vuole x forza la ricerca dicotomica, e la devo effettuare su almeno 2 campi )
Codice:
struct volontario
{
   char nome[30];
   char cognome[30];
   char indirizzo[40];
   int eta;
   char numero_cellulare[20];
};

class listavolontari
{
public:
   listavolontari(void);
   int addvolontario (volontario v);
   int rimuovivolontario (volontario* v);
   int modificavolontario (volontario* v);
   void scegli_visualizza(void);
   void scegli_cerca(void);
   void ordina_cognome(void);
   void ordina_eta(void);
   void visualizzalista (void);
   void ricerca_dicotomica_cognome(void); 
   void ricerca_dicotomica_eta(void);
   void modifica();
   char NomeComponente[30];
   private:
   int numerodeivolontari;
   volontario lista[Num_massimo_volontari];
};

void listavolontari:: scegli_visualizza(void)
{
     while (scelta != 3)
	 {
          system ("CLS");
          cout << " Se desideri visualizzare l'elenco ordinato per cognome premi 1: \n "; 
          cout << " Se desideri visualizzare l'elenco ordinato per età premi 2: \n";
          cout << " Se desideri tornare al menu di componente premi 3: \n";
          scelta = ReadNumber();
   	      switch (scelta)
	            {
   		           case 1:   
                   ordina_componente_cognome();
                   visualizzalista ();
                   system ("PAUSE");
                   break;
              
                   case 2:   
                   ordina_componente_eta();
                   visualizzalista ();
                   system ("PAUSE");
                   break;
              }
    }
}

void listavolontari :: ordina_cognome(void)
{
   int i,j;
   if(numerodeivolontari ==0){"Non ci sono volontari da ordinare \n";}
   else
   {
       for(i=0; i< numerodeivolontari-1; i++)
       {
          for(j=i+1; j< numerodeivolontari; j++)
          {
             if (strcmp(lista[i].cognome,lista[j].cognome)>= 1)
             {
                 strcpy(buffer,lista[j].nome);
                 strcpy(lista[j].nome,lista[i].nome);
                 strcpy(lista[i].nome,buffer);
                 strcpy(buffer,lista[j].cognome);
                 strcpy(lista[j].cognome,lista[i].cognome);
                 strcpy(lista[i].cognome,buffer);
                 strcpy(buffer,lista[j].indirizzo);
                 strcpy(lista[j].indirizzo,lista[i].indirizzo);
                 strcpy(lista[i].indirizzo,buffer);
                 buffer_eta = lista[j].eta;
                 lista[j].eta = lista[i].eta;
                 lista[i].eta = buffer_eta;
                 strcpy(buffer,lista[j].numero_cellulare);
                 strcpy(lista[j].numero_cellulare,lista[i].numero_cellulare);
                 strcpy(lista[i].numero_cellulare,buffer);
            }
         }
      }
   cout << " Ordinamento per cognome completato con successo \n";
   }
}

void listavolontari :: ordina_eta(void)
{
   int i,j;
   if(numerodeivolontari ==0){"Non ci sono volontari da ordinare \n";}
   else
   {
        for(i=0; i< numerodeivolontari-1; i++)
        {
           for(j=i+1; j< numerodeivolontari; j++)
           {
              if (lista[i].eta>lista[j].eta)
                {
                      strcpy(buffer,lista[j].nome);
                      strcpy(lista[j].nome,lista[i].nome);
                      strcpy(lista[i].nome,buffer);
                      strcpy(buffer,lista[j].cognome);
                      strcpy(lista[j].cognome,lista[i].cognome);
                      strcpy(lista[i].cognome,buffer);
                      strcpy(buffer,lista[j].indirizzo);
                      strcpy(lista[j].indirizzo,lista[i].indirizzo);
                      strcpy(lista[i].indirizzo,buffer);
                      buffer_eta = lista[j].eta;
                      lista[j].eta = lista[i].eta;
                      lista[i].eta = buffer_eta;
                      strcpy(buffer,lista[j].numero_cellulare);
                      strcpy(lista[j].numero_cellulare,lista[i].numero_cellulare);
                      strcpy(lista[i].numero_cellulare,buffer);
                 }
          }
    }
      cout << " Ordinamento per età completato con successo \n";
    }
}

void listavolontari:: scegli_cerca(void)
{
     while (scelta != 3)
	 {
          system ("CLS");
          cout << " Se si desidera cercare un volontario inserendo il suo cognome premi 1: \n "; 
          cout << " Se si desidera cercare un volontario inserendendo la sua età premi 2: \n "; 
          cout << " Se desideri tornare al menu di componente premi 3: \n";
          scelta = ReadNumber();
 	      switch (scelta)
	            {
   		            case 1: 
                    ordina_componente_cognome();
                    ricerca_dicotomica_cognome(); 
                    system ("PAUSE");
                    break;
              
                    case 2:   
                    ordina_componente_eta();
                    ricerca_dicotomica_eta();
                    system ("PAUSE");
                    break;
              }
   }
}      


void listavolontari :: ricerca_dicotmica_cognome(void) 
{	
   int basso=0, alto=numerodeivolontari-1, medio; 
   char cognome_trovare[30];
   system ("CLS");
   cout << " Scirivi il Cognome del volontario che stai cercando: \n";
   cin.getline(cognome_trovare, sizeof(cognome_trovare));
   
   while (basso <= alto) 
   {
           medio = (basso + alto)/2; 
           if(strcmp(lista[medio].cognome, cognome_trovare) == 0)
           { 
               cout << lista[medio].nome << "\n";
               cout << lista[medio].cognome << "\n"; 
               cout << lista[medio].indirizzo << "\n";
               cout << lista[medio].eta << "\n";
               cout << lista[medio].numero_cellulare << "\n"; 
           }  
           if (strcmp(lista[medio].cognome, cognome_trovare) < 0) basso = medio +1; 
              else 
              {
                  alto = medio -1; 
                  break;
             } 
   }
   cout << "Attualmente non c'è nessun volontario nella componente dei:" << NomeComponente << "\n";
   cout << "con il cognome " << cognome_trovare << "\n";
}


void listavolontari :: ricerca_dicotmica_eta(void) 
{
     int basso=0, alto=numerodeivolontari-1, medio=0; 
     system ("CLS");
     cout << " Scirivi l'eta del volontario che stai cercando: \n";
     buffer_eta= ReadNumber();
     while (basso <= alto) 
     {
          medio = (basso + alto)/2; 
          if(lista[medio].eta == buffer_eta)
          { 
             cout << lista[medio].nome << "\n";
             cout << lista[medio].cognome << "\n"; 
             cout << lista[medio].indirizzo << "\n";
             cout << lista[medio].eta << "\n";
             cout << lista[medio].numero_cellulare << "\n"; 
          } 
          if (buffer_eta > lista[medio].eta) basso = medio+1; 
             else 
             {
                 alto = medio -1; 
                 break;
            }
    cout << "Attualmente non c'è nessun volontario nella componente dei:" << NomeComponente << "\n";
    cout << "che abbia " << buffer_eta << " anni \n";
    }
}
Sebilio89 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


L'Europa conta nella tecnologia e può essere autonoma. Cosa si è detto al Nextcloud Summit 2026 L'Europa conta nella tecnologia e può ess...
Dreame X60 Pro Ultra Complete: i bracci si estendono sempre di più Dreame X60 Pro Ultra Complete: i bracci si esten...
TCL 65C8L, la recensione del SQD-Mini LED da 4400 nit misurati TCL 65C8L, la recensione del SQD-Mini LED da 440...
MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro MSI Maestro 500 Wireless: ANC e 90 ore di autono...
NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine NL-LC1 è il primo dissipatore a liquido A...
Engwe O20 Boost: abbiamo provato in ante...
UWANT V800: addio al rullo rotante, l’as...
Keenetic Stellar 6 porta il WiFi 6 negli...
Instagram spinge sul formato orizzontale...
DMA, l'UE verso la designazione di AWS e...
Dalla fisica quantistica alla fibra: il ...
TikTok, il 59% dei video è AI Slop, 'sch...
Batterie stampate in 3D: la forma libera...
Honor X80 Pro Max ufficiale: vi bastano ...
HONOR Watch 6: batteria infinita, modali...
Windows 11, addio alle ricerche sul web:...
La vera sfida dell’IA non è adott...
Signal contro l'AI agentica: dare ai cha...
Amazon: l'human-in-the-loop non basta a ...
HONOR 600 Lite: design in metallo e batt...
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: 19:14.


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