Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura
Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura
Il primo Micro RGB di Samsung per il salotto è il 65 pollici da 2.749 euro. Sul banco di misura abbiamo rilevato 2.000 nit di picco, nero assoluto con il local dimming e il 91,4% del BT.2020, il colore più ampio che abbiamo misurato su un LCD
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre
Apple ha rinnovato iPhone 18 Pro soprattutto dentro: chip A20 Pro a 2 nm con memoria affiancata al SoC, camera di vapore tre volte più ampia, Dynamic Island più piccola del 25% grazie a Face ID sotto il display e fotocamera principale con diaframma variabile da f/1.48 a f/4. Lo abbiamo misurato al colorimetro e nei benchmark, usato con iOS 27 e messo alla prova in fotografia tra laghi, borghi e interni poco illuminati
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34
A Londra, per il trentennale dei Toughbook, Panasonic ha presentato il tablet G3 e il 2-in-1 34. Con Jon Tucker, a capo dell'ingegneria europea, abbiamo parlato di ciò che non si vede: batterie, antenne, porte seriali e accorgimenti nati sul campo
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 developer – SCJP 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 developer – SCJP 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 developer – SCJP 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 developer – SCJP 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 developer – SCJP 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 developer – SCJP 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 developer – SCJP 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


Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura Samsung Micro RGB R95H, il primo LCD a LED rossi...
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre iPhone 18 Pro: la recensione del miglior iPhone ...
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34 Panasonic, 30 anni di Toughbook: la "Bibbia...
realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione realme C100x, lo smartphone economico con la bat...
Star Wars Zero Company è l'erede di XCOM 2 Star Wars Zero Company è l'erede di XCOM ...
Il Dipartimento della Guerra USA pensa a...
SpaceX ha lanciato le missioni Crew-13, ...
DJI Avata 2 in offerta Prime: drone FPV ...
Microsoft vuole far agire l'IA prima anc...
Ginga porta il monitoraggio delle perfor...
Tesla sorprende Wall Street: 486.532 con...
Cosa succede alle ossa degli astronauti ...
AgriEuro Premium Days: il 6 e 7 ottobre ...
259 euro per 2 TB di SSD PCIe 4.0 (Biwin...
GPT-6 Astra decifra dopo 217 anni una le...
Roborock Saros 20 Neo: pulisce al meglio...
Samsung Galaxy S27 Ultra, nuove conferme...
Offerte Prime Candy: lavatrice ProWash 3...
Tegola su Anthropic, gli agenti AI valgo...
E-bike in carbonio con un prezzo assurdo...
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: 22:31.


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