Torna indietro   Hardware Upgrade Forum > Software > Programmazione

L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint
L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint
Abbiamo intervistato Sumit Dhawan, CEO di Proofpoint, per capire come stia cambiando il mondo della sicurezza con l'avvento dell'intelligenza artificiale e con il ritmo sempre più serrato a cui vengono trovate vulnerabilità nel software. Un problema significativo, che richiederà del tempo per essere risolto (o quantomeno arginato)
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
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 06-06-2007, 12:44   #1
enrico999
Member
 
L'Avatar di enrico999
 
Iscritto dal: Jan 2004
Città: Verolavecchia
Messaggi: 198
[C] Risoluzione esercizio semplice...

semplice per voi...

Data la traccia sotto riportata completare il codice in modo di aumentare di 1 tutti gli interi pari e diminuire di 1 tutti quelli dispari nell'array vettore[] di dimensione dim. Riportare come risultato il numero che comparira' a monitor. Per esempio un vettore che contiene gli elementi {4,56,3,78,23} dopo essere stato aggiornato deve contenere gli elementi {5,57,2,79,22} .

Codice:
#include <stdio.h>
#include <stdlib.h>


float CalcolaRisultato(int vettore[], int dim);

int main()
{

 int vettore[]= {6,5,4,3,3,1,14,67,89,105,24,56,78, 9,
 6,5,4,3,2,1,14,67,89,100,24,56,78,9,6,5,4,
 3,2,11,14,67,89,100,24,56,78, 9,
 6,5,4,3,2,1,14,67,89,100,24,56,78,9,6,5,4,3,2,1,14,
 67,89,100,24,46,78, 9,
 2,1,14,67,89,100,24,56,78, 9,
 6,5,4,37,2,1,14,67,89,100,24,56,78,
 9,6,5,4,5,2,1,14,67,89,100,24,56,78, 9,
 6,5,4,3,2,1,14,67,89,100,24,56,78,9,6,5,4,3,2,1,14,67,89,102,24,56,78, 9,
 6,5,4,3,2,1,14,67,89,67,89,100,24,5,79,9,6,5,4,3,2,1,
 104,24,56,78,9,6,5,4,3,2,1,14,67,89,100,24,56,78, 9,
 6,5,4,3,2,1,14,68,89,100,24,56,79,9,6,5,4,3,2,1,14,67,89,100,24,56,78, 9,
 6,5,4,3,12,1,14,67,89,100,24,56,78,9,6,5,4,3,
 6,5,4,3,5,1,14,67,89,100,24,56,
 6,5,4,3,2,1,14,67,89,100,24,56,78,9,6,5,4,3,112,1,14,67,89,100,124,56,78, 9,
 6,5,4,3,2,1,14,67,89,100,24,56,78,9,6,
 5,4,3,2,1,14,67,89,100,24,56,78, 9,
 6,5,4,3,2,14,14,67,89,100,24,56,78,9,6,5,4,3,2,21,14,67,89,100,24,56,78, 9,
 14,67,89,100,24,56,78, 9,6,5,4,3,2,1,14,
 6,5,4,3,2,1,14,67,89,190,24,56,78,9,6,5,4,3,2,1,14,67,89,100,24,56,78, 9,
 78,9,6,5,4,3,2,1,14,67,89,104,24,56,78, 9,
 6,5,4,3,2,1,14,67,89,100,24,56,78,9,6,5,4,3,2,1,14,67,89,100,24,56,78, 9,
 6,5,5,3,2,1,14,67,89,100,24,56,78,9,6,5,4,3,21,1,
 14,67,89,100,24,56,78, 9,
 6,5,4,3,2,1,14,67,99,100,24,56,78,9,6,5,4,0,2,1,14,67,89,110,24,56,78, 9
 };
 
 int dim =462;    // il vettore contiene dim elementi !
 float risultato;

 
  
 // ----- inizio dell'esercizio -------

 // Scrivi il codice che incrementa tutti gli interi pari e decrementa tutti quelli dispari 
 // nell'array vettore[]
 // N.B. la soluzione corretta deve stare dentro l'array vettore[] 


 // ----- fine dell'esercizio -------


 // NON TOCCARE TUTTE LE RIGHE QUI SOTTO
 risultato = CalcolaRisultato(vettore, dim);
 printf("\nrisultato da copiare ed incollare = %d \n\n" , (int) risultato );
 getchar();
 exit(0);
}  // main

float CalcolaRisultato(int vettore[], int dim)
{
   int i;
   float divisore, dividendo=0;
   for(i=0;i < dim; i++)
   {
      dividendo += i * vettore[i];
   }
   divisore = (dim +1)*dim/2; 
   return 100*dividendo/divisore; 
   
}
enrico999 è offline   Rispondi citando il messaggio o parte di esso
Old 06-06-2007, 13:03   #2
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da enrico999 Guarda i messaggi
Data la traccia sotto riportata completare il codice in modo di aumentare di 1 tutti gli interi pari e diminuire di 1 tutti quelli dispari nell'array vettore[] di dimensione dim.
Fai un ciclo for in cui per ogni valore del vettore calcoli il resto della divisione per 2 (n%2), se il resto è 0 allora è pari, altrimenti è dispari. A quel punto incrementi o decrementi il valore.
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 06-06-2007, 14:06   #3
enrico999
Member
 
L'Avatar di enrico999
 
Iscritto dal: Jan 2004
Città: Verolavecchia
Messaggi: 198
come faccio a fare un ciclo for per ogni valore del vettore?
enrico999 è offline   Rispondi citando il messaggio o parte di esso
Old 06-06-2007, 14:10   #4
yorkeiser
Senior Member
 
L'Avatar di yorkeiser
 
Iscritto dal: Jul 2006
Città: Tristram
Messaggi: 517
Uh? NON devi fare un ciclo per ogni valore, te ne basta uno solo in cui scorri tutto il vettore

Codice:
for (int i=0;i<max; i++)
{ 
    vettore[i]= ...
}
__________________
Il sole è giallo
yorkeiser è offline   Rispondi citando il messaggio o parte di esso
Old 06-06-2007, 15:22   #5
enrico999
Member
 
L'Avatar di enrico999
 
Iscritto dal: Jan 2004
Città: Verolavecchia
Messaggi: 198
quindi devo fare:

Codice:
for (int i=0;i<462; i++)
{ 
    vettore[i]=462
}
mmmmm mi sa che ho sbagliato....
enrico999 è offline   Rispondi citando il messaggio o parte di esso
Old 06-06-2007, 15:27   #6
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da enrico999 Guarda i messaggi
Codice:
for (int i=0;i<462; i++)
{ 
    vettore[i]=462
}
mmmmm mi sa che ho sbagliato....
La variabile 'dim' ce l'hai, quindi non vedo perché devi usare una costante.
Comunque dentro questo ciclo for devi semplicemente calcolare il resto della divisione tra un valore e 2. Questo lo ottieni con l'operatore %. Stabilito se è pari o dispari, incrementi o decrementi il valore.
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 06-06-2007, 15:53   #7
enrico999
Member
 
L'Avatar di enrico999
 
Iscritto dal: Jan 2004
Città: Verolavecchia
Messaggi: 198
potresti postarmi il codice giusto, proprio non mi ci trovo...
enrico999 è offline   Rispondi citando il messaggio o parte di esso
Old 06-06-2007, 18:43   #8
uomoserio
Senior Member
 
L'Avatar di uomoserio
 
Iscritto dal: Aug 2000
Messaggi: 608
Quote:
Originariamente inviato da enrico999 Guarda i messaggi
potresti postarmi il codice giusto, proprio non mi ci trovo...
Codice:
for (int i=0; i<dim; i++)
{
   if (vettore[i]%2 == 0) vettore[i]=vettore[i]+1
   else vettore[i]=vettore[i]-1
}
Ovviamente l'incremento e il decremento del valore del vettore li ho scritti per esteso solo per farti capire meglio.
Fossi in te, però, per imparare meglio eviterei di farmi dare il codice "pronto"

Scusate l'intrusione
__________________
Intel Core2Quad Q6600 2,4GHz @ 3,0 GHz
2 Gb RAM 667 MHz
ATI HD2900XT
uomoserio è offline   Rispondi citando il messaggio o parte di esso
Old 07-06-2007, 09:49   #9
enrico999
Member
 
L'Avatar di enrico999
 
Iscritto dal: Jan 2004
Città: Verolavecchia
Messaggi: 198
mi da errore già alla prima riga:

for (int i=0; i<dim; i++)

e mi dice:

'for' loop initial declaration used outside C99 mode
enrico999 è offline   Rispondi citando il messaggio o parte di esso
Old 07-06-2007, 10:15   #10
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da enrico999 Guarda i messaggi
mi da errore già alla prima riga:

for (int i=0; i<dim; i++)

e mi dice:

'for' loop initial declaration used outside C99 mode
Se stai compilando in modalità "ANSI C" non si possono fare dichiarazioni di variabili nel for (lo si può fare appunto nel C99 o in C++).

Semplicemente dichiara 'i' da qualche altra parte, dove hai dichiarato 'dim' ad esempio.
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 07-06-2007, 10:23   #11
enrico999
Member
 
L'Avatar di enrico999
 
Iscritto dal: Jan 2004
Città: Verolavecchia
Messaggi: 198
allora, ho fatto:

Codice:
int i;
for ( i=0; i<dim; i++)
{
   if (vettore[i]%2 == 0) vettore[i]=vettore[i]+1
   else vettore[i]=vettore[i]-1
}
però mi da errore nell'ultima riga, mi dice:

parse error before "else"
enrico999 è offline   Rispondi citando il messaggio o parte di esso
Old 07-06-2007, 10:45   #12
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da enrico999 Guarda i messaggi
parse error before "else"
Metti il ';' dopo le due assegnazioni.
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 07-06-2007, 10:54   #13
enrico999
Member
 
L'Avatar di enrico999
 
Iscritto dal: Jan 2004
Città: Verolavecchia
Messaggi: 198
GRAZIE GRAZIE!


Lo so che secondo voi capire come si fa un esercizio partendo dalla soluzione non va bene... ma ognuno ha i suoi metodi...

CIAO e GRAZIE ANCORA!


Avrei anche un altro esercizio... che dite, lo posto?
enrico999 è offline   Rispondi citando il messaggio o parte di esso
Old 07-06-2007, 10:56   #14
enrico999
Member
 
L'Avatar di enrico999
 
Iscritto dal: Jan 2004
Città: Verolavecchia
Messaggi: 198
Ma si dai, io lo posto, se qualcuno ha voglia di aiutarmi...

L'esercizio è questo:

* salva il testo sotto riportato nel file telefonate.txt ;
* scrivi il programma Contatelefonate.c che accede al file telefonate.txt e calcola il numero di telefonate effettuate a un cellulare e il numero di quelle effettuate verso un numero fisso;
* calcola come risultato il maggiore tra questi due numeri.

Per stabilire se il telefono e' un cellulare o un fisso si consiglia di utilizzale la funzione strcmp(s1,s2) che restituisce 0 se le due stringhe sono uguali, un numero negativo se s1 e' minore di s2 in ordine lessicografico e un numero positivo altrimenti. Nota bene: il file telefonate.txt e' composto da stringa tabulatore numeroconvirgola tabulatore stringa tabulatore stringa FINERIGA

---- testo da incollare nel file telefonate.txt -----
0234023402 02.23 milano 3minuti
02334023402 12.22 milano 4minuti
333402340 0.23 cellul 4minuti
0554023402 02.23 firenze 3minuti
06334023402 12.22 roma 4minuti
333402340 0.23 cellul 4minuti
0234023402 02.23 milano 3minuti
024334023402 12.12 milano 4minuti
333402340 0.23 cellul 4minuti
02354023402 02.23 milano 3minuti
06334023402 12.22 roma 4minuti
3337402340 0.23 cellul 4minuti
0234023402 02.73 milano 3minuti
06334023402 12.22 roma 4minuti
0554023403 02.23 firenze 3minuti
3833402340 0.23 cellul 4minuti
0234023402 02.23 milano 3minuti
02334023402 12.22 milano 4minuti
3333402340 0.23 cellul 4minuti
0234023402 02.23 milano 3minut
0554023403 02.23 firenze 3minuti
02334023402 12.22 milano 4minuti
3363402340 0.23 cellul 4minuti
0234023402 02.23 milano 3minuti
02334023402 12.22 milano 4minuti
333402340 0.23 cellul 4minuti
02534023402 02.23 milano 3minuti
02334023402 12.22 milano 4minuti
333402340 0.23 cellul 4minuti
02334023402 12.22 milano 4minuti
333402340 0.23 cellul 4minuti
0554023402 02.23 firenze 3minuti
06334023402 12.22 roma 4minuti
333402340 0.23 cellul 4minuti
0234023402 02.23 milano 3minuti
024334023402 12.12 milano 4minuti
333402340 0.23 cellul 4minuti
333402340 0.23 cellul 4minuti
333402340 0.23 cellul 4minuti
0234023402 02.23 milano 3minuti
023344023402 12.22 milano 4minuti
333402340 0.43 cellul 4minuti
0234023402 02.23 milano 3minuti
055334023402 12.22 firenze 4minuti
34333402340 0.23 cellul 4minuti
0234023402 02.23 milano 3minuti
02334023402 12.22 milano 4minuti
333402340 0.23 cellul 4minuti
02324023402 02.23 milano 3minuti
05533402340 12.22 firenze 4minuti
3333402340 0.23 cellul 4minuti
06364023402 02.23 roma 3minuti
02334023402 12.22 milano 4minuti
333402340 0.23 cellul 4minuti
0234023402 02.23 milano 3minuti
02334023402 12.22 milano 4minuti
333402340 0.23 cellul 4minuti
02324023402 02.23 milano 3minuti
02334023402 12.22 milano 4minuti
333402340 0.23 cellul 4minuti
3337402340 0.23 cellul 4minuti
0234023402 02.73 milano 3minuti
02334023402 12.22 milano 4minuti
05533402340 12.22 firenze 4minuti
3833402340 0.23 cellul 4minuti
0634023402 02.23 roma 3minuti
02334023402 12.22 milano 4minuti
---------------------

CIAO
enrico999 è offline   Rispondi citando il messaggio o parte di esso
Old 07-06-2007, 11:11   #15
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da enrico999 Guarda i messaggi
* salva il testo sotto riportato nel file telefonate.txt ;
* scrivi il programma Contatelefonate.c che accede al file telefonate.txt e calcola il numero di telefonate effettuate a un cellulare e il numero di quelle effettuate verso un numero fisso;
* calcola come risultato il maggiore tra questi due numeri.
Bene:

- apri il file in lettura con fopen()
- fai un ciclo in cui leggi una singola riga per volta con fgets()
- controlli/conteggi quello che ti interessa
- Una volta terminato il ciclo chiudi il file con fclose()

Questo in sintesi è il da farsi.

Quello che non ho capito è se devi avere un totale di tutte le telefonate a fissi e cellulari (in questo caso sarebbe semplice, se inizia con '0' non è un cellulare). Oppure se devi conteggiare le telefonate per ogni singolo numero (più complicato). Ma credo sia il primo caso.
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 07-06-2007, 12:31   #16
enrico999
Member
 
L'Avatar di enrico999
 
Iscritto dal: Jan 2004
Città: Verolavecchia
Messaggi: 198
il primo pezzo ho fatto così:

Codice:
#include <stdio.h>
#include <stdlib.h>



int main()


FILE *fopen(telefonate.txt, r);
va bene?

come faccio adesso a fare un ciclo per leggere una sola riga per volta con fgets()???
enrico999 è offline   Rispondi citando il messaggio o parte di esso
Old 07-06-2007, 12:38   #17
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da enrico999 Guarda i messaggi
Codice:
#include <stdio.h>
#include <stdlib.h>



int main()


FILE *fopen(telefonate.txt, r);
va bene?
No.
Codice:
#include <stdio.h>

int main (void)
{
    FILE *f;

    f = fopen ("telefonate.txt", "r");

    if (f != NULL)
    {
        /* ... il resto ... */
    }

    return 0;
}
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 07-06-2007, 13:12   #18
enrico999
Member
 
L'Avatar di enrico999
 
Iscritto dal: Jan 2004
Città: Verolavecchia
Messaggi: 198
bene..

ma per leggere una riga per volta?

io ho provato a fare così, ma ho canato...

Codice:
while(1) {
    res=fgets(buf, 200, fd);
    if( res==NULL )
      break;
    printf("%s", buf);
   }
enrico999 è offline   Rispondi citando il messaggio o parte di esso
Old 07-06-2007, 13:30   #19
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da enrico999 Guarda i messaggi
Codice:
while(1) {
    res=fgets(buf, 200, fd);
    if( res==NULL )
      break;
    printf("%s", buf);
   }
Tecnicamente mi sembra corretto.

Io in genere sono solito fare:
while (fgets (buf, sizeof (buf), f) != NULL) { ..... }
__________________
Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 07-06-2007, 13:33   #20
enrico999
Member
 
L'Avatar di enrico999
 
Iscritto dal: Jan 2004
Città: Verolavecchia
Messaggi: 198
anche a me sembra corretto, ma mi da errore in questa riga:

res=fgets(buf, 200, fd);

mi da questo errore:

`res' undeclared (first use in this function)


potresti magari postare il codice come sei solito fare tu?
enrico999 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


L'IA cambia tutte le regole della sicurezza tra vulnerabilità e sorveglianza. Intervista al CEO di Proofpoint L'IA cambia tutte le regole della sicurezza tra ...
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...
Steam Machine: addio al 4K 60 fps. Valve...
Cosa aumenterà di prezzo dopo com...
Altro che 2028: Micron ha blindato prezz...
Come la tecnologia FWA connette i piccol...
Diesel Euro 5, scatta il divieto in quat...
Prime Day, HillMiles scende a 599€ e re...
OpenAI valuta di rinviare l'Ipo al 2027:...
Streaming e Pay TV: ogni famiglia italia...
Volkswagen, Blume prepara maxi-taglio da...
Trenitalia, attacco hacker: esposti alcu...
Adblock for YouTube, 11 milioni di insta...
Assassin's Creed Black Flag Resynced pot...
Gli USA dicono no a Polestar, sì a Volvo...
Steam Machine dovrebbe costare 700 dolla...
Microsoft 365, l'Antitrust apre un'istru...
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:47.


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