Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Qrevo Curv 2 Flow è l'ultima novità di casa Roborock per la pulizia di casa: un robot completo, forte di un sistema di lavaggio dei pavimenti basato su rullo che si estende a seguire il profilo delle pareti abbinato ad un potente motore di aspirazione con doppia spazzola laterale
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite
Abbiamo guidato per diversi giorni la Alpine A290, la prima elettrica del nuovo corso della marca. Non è solo una Renault 5 sotto steroidi, ha una sua identità e vuole farsi guidare
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile
Abbiamo provato a fondo il nuovo Magic 8 Lite di HONOR, e per farlo siamo volati fino a Marrakech , dove abbiamo testato la resistenza di questo smartphone in ogni condizione possibile ed immaginabile. Il risultato? Uno smartphone praticamente indistruttibile e con un'autonomia davvero ottima. Ma c'è molto altro da sapere su Magic 8 Lite, ve lo raccontiamo in questa recensione completa.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 17-02-2008, 10:39   #1
J3X
Senior Member
 
L'Avatar di J3X
 
Iscritto dal: Dec 2001
Città: ____________________ Messaggi: 8532 _________ Messaggi: 2351 _________ Messaggi: 14408 ________ Messaggi: 5013 _________ Messaggi: 691366
Messaggi: 2924
[C] richiamare in main un valore in funzione void

salve a tutti,,,
poniamo il caso che in una funzione void ci sia un calcolo... (una espressione, il calcolo dell'epsilon macchina, qualcosa che dia un numero...)
è possibile in qualche modo che nel main() riesca ad estrarre quel numero che mi interessa e stamparlo magari col printf ?

esempio...
questa dovrebbe essere la funzione dell'epsilon...
Codice:
float eps,f1,f2;

f1=1.0;
while(f2!=1)	
    {
     eps=f1;
     f1=f1/2.0;
     f2=f1+1.0;
     }
printf("Epsilon Macchina: %e \n", eps);
/* il valore che mi interessa è eps */
inutile dirmi che sarebbe più semplice dichiararla float o double o scriverla direttamente in main,,, ma come posso scriverla void e richiamarla in main?

grazie
__________________
J3X I'M ON eBay[ho trattato con...]
veryOldPost: HWUpgrade users map!//Mod1//EurO/I?//AcquistiEstero
J3X è offline   Rispondi citando il messaggio o parte di esso
Old 17-02-2008, 10:53   #2
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
E' possibile, ma devi passare un parametro come puntatore alla funzione. Ad esempio:

float epsilon;
miafunzione(&epsilon);

e poi lo stampi. La funzione resta void, ma operi sul puntatore per ritornare il valore al chiamante.

La funzione diventa:
Codice:
void miafunzione(float *eps)
{
float f1,f2;

f1=1.0;
while(f2!=1)	
    {
     *eps=f1;
     f1=f1/2.0;
     f2=f1+1.0;
     }
}
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 17-02-2008, 11:07   #3
J3X
Senior Member
 
L'Avatar di J3X
 
Iscritto dal: Dec 2001
Città: ____________________ Messaggi: 8532 _________ Messaggi: 2351 _________ Messaggi: 14408 ________ Messaggi: 5013 _________ Messaggi: 691366
Messaggi: 2924
grazie
ok... fin qui più o meno c'ero arrivato (girando su internet... ) ma con i puntatori non sono ancora molto abile

quindi dandomele col cucchiaino queste cose... prima del main ci metto il prototipo
void miafunzione(float *eps)

poi nel main? per stampare il valore che vado a scrivere?
Codice:
#include <stdio.h>
void miafunzione(float *eps);
main()
{
printf (valore epsilon: %e, /* ??? */ );
}
scusa la gnoransa... ma sto agli inizi
__________________
J3X I'M ON eBay[ho trattato con...]
veryOldPost: HWUpgrade users map!//Mod1//EurO/I?//AcquistiEstero
J3X è offline   Rispondi citando il messaggio o parte di esso
Old 17-02-2008, 11:24   #4
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da J3X Guarda i messaggi
grazie
ok... fin qui più o meno c'ero arrivato (girando su internet... ) ma con i puntatori non sono ancora molto abile

quindi dandomele col cucchiaino queste cose... prima del main ci metto il prototipo
void miafunzione(float *eps)

poi nel main? per stampare il valore che vado a scrivere?
Codice:
#include <stdio.h>
void miafunzione(float *eps);
main()
{
printf (valore epsilon: %e, /* ??? */ );
}
scusa la gnoransa... ma sto agli inizi
Te l'avevo scritto

Codice:
main()
{
    float epsilon;
    miafunzione(&epsilon);
    printf ("valore epsilon: %e", epsilon);
}

Ultima modifica di cionci : 17-02-2008 alle 11:33.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 17-02-2008, 11:30   #5
slartibartfast
Senior Member
 
L'Avatar di slartibartfast
 
Iscritto dal: May 2005
Messaggi: 564
devi passare il parametro come indirizzo, nel tuo esempio:
Codice:
#include <stdio.h>
void miafunzione(float *eps);
main()
{
  float e = 1.0;
  miafunzione (&e);
  printf ("valore epsilon: %e", e);
}

void miafunzione(float *eps)
{
float f1,f2;

f1=*eps;
while(f2!=1)	
    {
     *eps=f1;
     f1=f1/2.0;
     f2=f1+1.0;
     }
}
slartibartfast è offline   Rispondi citando il messaggio o parte di esso
Old 17-02-2008, 11:43   #6
J3X
Senior Member
 
L'Avatar di J3X
 
Iscritto dal: Dec 2001
Città: ____________________ Messaggi: 8532 _________ Messaggi: 2351 _________ Messaggi: 14408 ________ Messaggi: 5013 _________ Messaggi: 691366
Messaggi: 2924
ora provo...
grazie 1000 a tutti
__________________
J3X I'M ON eBay[ho trattato con...]
veryOldPost: HWUpgrade users map!//Mod1//EurO/I?//AcquistiEstero
J3X è offline   Rispondi citando il messaggio o parte di esso
Old 17-02-2008, 23:29   #7
J3X
Senior Member
 
L'Avatar di J3X
 
Iscritto dal: Dec 2001
Città: ____________________ Messaggi: 8532 _________ Messaggi: 2351 _________ Messaggi: 14408 ________ Messaggi: 5013 _________ Messaggi: 691366
Messaggi: 2924
ragazzi... per prima tutto ok e vi ringrazio ancora

ora c'è un altro problemino...

in pratica l'ordinamento INSERTION SORT fatto sempre come void(...) pure dovrei farlo funzionare chiamandolo dal main() con un output del tipo...
Codice:
quanti numeri vuoi inserire?
3
inserisci i 3 numeri:
20 -5 12
la lista ordinata è: -5 12 20
il fatto è che non so nemmeno quale sia l'insertion sort corretto...
se questo http://it.wikipedia.org/wiki/Insertion_sort#C
questo: http://www.mat.uniroma3.it/users/liv...ion_sort.shtml
o un altro...

ho fatto qualcosa ricollegandomi alla tecnica di prima... ma sono andato un pò per tentativi e sinceramente mi vergogno pure di postarlo...

ve ne sarò grato!
__________________
J3X I'M ON eBay[ho trattato con...]
veryOldPost: HWUpgrade users map!//Mod1//EurO/I?//AcquistiEstero
J3X è offline   Rispondi citando il messaggio o parte di esso
Old 18-02-2008, 00:49   #8
k0nt3
Senior Member
 
Iscritto dal: Dec 2005
Messaggi: 7262
Quote:
Originariamente inviato da J3X Guarda i messaggi
il fatto è che non so nemmeno quale sia l'insertion sort corretto...
se questo http://it.wikipedia.org/wiki/Insertion_sort#C
questo: http://www.mat.uniroma3.it/users/liv...ion_sort.shtml
o un altro...
in realtà fanno proprio la stessa cosa tutte e due
Quote:
Originariamente inviato da J3X Guarda i messaggi
ho fatto qualcosa ricollegandomi alla tecnica di prima... ma sono andato un pò per tentativi e sinceramente mi vergogno pure di postarlo...

ve ne sarò grato!
mai vergognarsi posta che verrai aiutato altrimenti non possiamo capire dove sbagli
k0nt3 è offline   Rispondi citando il messaggio o parte di esso
Old 18-02-2008, 09:18   #9
J3X
Senior Member
 
L'Avatar di J3X
 
Iscritto dal: Dec 2001
Città: ____________________ Messaggi: 8532 _________ Messaggi: 2351 _________ Messaggi: 14408 ________ Messaggi: 5013 _________ Messaggi: 691366
Messaggi: 2924
Quote:
Originariamente inviato da k0nt3 Guarda i messaggi
mai vergognarsi posta che verrai aiutato altrimenti non possiamo capire dove sbagli
ok... ma non mi linciate
mi sono usciti questi orrori... il risultato finale è questo che ovviamente non funziona... piccole modifiche o da rifare tutto?
Codice:
#include <stdlib.h>
#include <stdio.h>

#define MAX 100


void insertion_sort(int x[], int n);


int main()
{
 int v, i, x[i], n;
/*lettura*/
  printf("Numero di elementi: ");
  scanf("%d", &n);
  printf("Inserisci %d elementi: \n", n);
  for (i=0; i<n; i++)
    scanf("%d", &x[i]);


/*chiamata insertionsort*/  
insertion_sort(&x, n);


/*stampa*/
for (i=0; i<n; i++)
    printf("%d ", x[i]);
  printf("\n");


}/*__fine main()__*/





void insertion_sort(int x[], int n) 
{
  int i, j, app;

  for (i=1; i<n; i++) {
    app = x[i];
    j = i-1;
    while (j>=0 && x[j]>app) {
      x[j+1] = x[j];
      j--;
    }
    x[j+1] = app;
  }

}
e quest'altro.....
Codice:
#include <stdio.h>
#include <stdlib.h>


void InsertionSort(int *x[], int n);


main()
{
int i, x[i], n;



printf("numero elementi da inserire: ");
scanf ("%d", &n);



printf("\ninserire gli elementi (max %d):\n", n);
for (i=0; i<n; i++)
scanf("%d", &x[i]);

InsertionSort(&x[], n);

printf ("Lista ordinata con InsertionSort: \n");

for (i=0; i<n; i++)
   {
   printf ("%d ", x[i]);
   }

}/*__fine main()__*/



void InsertionSort(int *x[], int n) 
{
   int i, a[i],  j, app;
 
   for (i = 1; i < n; i++)
   {
      app = a[i];
      for (j = i - 1; (j >= 0) && (a[j] > app); j--)
      {
         x[j+1] = x[j];
      }
      a[j + 1] = app;
   }
for (i=0; i=n; i++)
  *x[i]=a[i]  ;
   
}

come modifico quello che più si avvicina al funzionante?
__________________
J3X I'M ON eBay[ho trattato con...]
veryOldPost: HWUpgrade users map!//Mod1//EurO/I?//AcquistiEstero
J3X è offline   Rispondi citando il messaggio o parte di esso
Old 18-02-2008, 09:39   #10
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Questo non si può fare: int v, i, x[i], n;
insertion_sort(&x, n);

La chiamata è errata.

J3X: ci sono una marea di errori. Difficile correggere, credo che tu faccia prima a studiarti il tutto
Se chiedi in ingresso il numero di elementi devi fare l'allocazione dinamica del vettore.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 18-02-2008, 09:45   #11
J3X
Senior Member
 
L'Avatar di J3X
 
Iscritto dal: Dec 2001
Città: ____________________ Messaggi: 8532 _________ Messaggi: 2351 _________ Messaggi: 14408 ________ Messaggi: 5013 _________ Messaggi: 691366
Messaggi: 2924

quelli che vedi su sono il risultato di tentativi.... sono partito con cose un pò più logiche, poi dove mi dava errori rattoppavo
mi diceva che in x[] non era dichiarata la grandezza... quindi ho messo x[i], ma non era dichiarato i, e quindi l'ho messo prima e tutto ok

per allocazione dinamica intendi malloc? tipo
A=(int*)malloc(sizeof(int)*n);
ma dove lo vado a posizionare e come lo collego?
ho provato qualcosa pure con questo ma non mi è uscito granchè...

come posso fare per richiamare l'insertion sort nel main?
__________________
J3X I'M ON eBay[ho trattato con...]
veryOldPost: HWUpgrade users map!//Mod1//EurO/I?//AcquistiEstero
J3X è offline   Rispondi citando il messaggio o parte di esso
Old 18-02-2008, 09:52   #12
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
La firma della funzione insertion sort deve essere questa.

void InsertionSort(int *x, int n);

x è un vettore allocato dinamicamente e lo usi come un vettore normale.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 18-02-2008, 10:08   #13
J3X
Senior Member
 
L'Avatar di J3X
 
Iscritto dal: Dec 2001
Città: ____________________ Messaggi: 8532 _________ Messaggi: 2351 _________ Messaggi: 14408 ________ Messaggi: 5013 _________ Messaggi: 691366
Messaggi: 2924
quindi nel secondo codice che ho scritto prima dovrei mettere il prototipo come hai scritto tu...
però nel main mi esce sempre che per x[] -array size missing in `x'-
ma esistono degli esempi già fatti e me li studio da lì... perchè mi servirebbe sapere come si fa per capirlo...
con le funzioni prima ho fatto pure altri esercizi e si sono trovati
questo lo so che è più complicato e mi servirebbe vederlo...
__________________
J3X I'M ON eBay[ho trattato con...]
veryOldPost: HWUpgrade users map!//Mod1//EurO/I?//AcquistiEstero
J3X è offline   Rispondi citando il messaggio o parte di esso
Old 18-02-2008, 10:12   #14
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da J3X Guarda i messaggi
però nel main mi esce sempre che per x[] -array size missing in `x'-
Te l'ho detto, non si può dichiarare così, con i incognito.

O fai:

int *x;

x = (int *)malloc(sizeof(int) * n); //solo dopo che hai già preso in input n

o fai:


int x[10]; //e non prendi in input n, ma ti limiti a 10 elementi
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 18-02-2008, 10:19   #15
J3X
Senior Member
 
L'Avatar di J3X
 
Iscritto dal: Dec 2001
Città: ____________________ Messaggi: 8532 _________ Messaggi: 2351 _________ Messaggi: 14408 ________ Messaggi: 5013 _________ Messaggi: 691366
Messaggi: 2924
benissimo... grazie
ho scritto questo... nessun errore al compilatore...
ma mi riscrive i numeri così come li ho messi...
Codice:
#include <stdio.h>
#include <stdlib.h>



void InsertionSort(int *x, int n);


main()
{
int *x, i, n;



printf("numero elementi da inserire: ");
scanf ("%d", &n);

x=(int*)malloc(sizeof(int)*n);

printf("\ninserire gli elementi (max %d):\n", n);
for (i=0; i<n; i++)
scanf("%d", &x[i]);

InsertionSort(&x[0], n);

printf ("Lista ordinata con InsertionSort: \n");

for (i=0; i<n; i++)
   {
   printf ("%d ", x[i]);
   }

}/*__fine main()__*/


void InsertionSort(int *x, int n)
{
   int i, a[i],  j, app;
 
   for (i = 1; i < n; i++)
   {
      app = a[i];
      for (j = i - 1; (j >= 0) && (a[j] > app); j--)
      {
         x[j+1] = x[j];
      }
      a[j + 1] = app;
   }
   
}
__________________
J3X I'M ON eBay[ho trattato con...]
veryOldPost: HWUpgrade users map!//Mod1//EurO/I?//AcquistiEstero
J3X è offline   Rispondi citando il messaggio o parte di esso
Old 18-02-2008, 10:37   #16
J3X
Senior Member
 
L'Avatar di J3X
 
Iscritto dal: Dec 2001
Città: ____________________ Messaggi: 8532 _________ Messaggi: 2351 _________ Messaggi: 14408 ________ Messaggi: 5013 _________ Messaggi: 691366
Messaggi: 2924
ma che de....pravato
nei fasulli tentativi ho modificato il sacro codice dell'insertion sort di wikipedia.. e rimettendolo preciso preciso ora si trova
Codice:
#include <stdio.h>
#include <stdlib.h>



void InsertionSort(int *x, int n);


main()
{
int *x, i, n;



printf("numero elementi da inserire: ");
scanf ("%d", &n);

x=(int*)malloc(sizeof(int)*n);

printf("\ninserire gli elementi (max %d):\n", n);
for (i=0; i<n; i++)
scanf("%d", &x[i]);

InsertionSort(&x[0], n);

printf ("Lista ordinata con InsertionSort: \n");

for (i=0; i<n; i++)
   {
   printf ("%d ", x[i]);
   }

}/*__fine main()__*/


void InsertionSort(int *x, int n)
{
  int i, j, app;
 
   for (i = 1; i < n; i++)
   {
      app = x[i];
 
      for (j = i - 1; (j >= 0) && (x[j] > app); j--)
      {
         x[j+1] = x[j];
      }
 
      x[j + 1] = app;
   }


   
}
grazie un milione !!!!!
ora me lo studio e faccio anche altri esempi con array e allocazione dinamica

grazieeeeeeeeeeeeeeeeeeeeeeeeeeee
__________________
J3X I'M ON eBay[ho trattato con...]
veryOldPost: HWUpgrade users map!//Mod1//EurO/I?//AcquistiEstero
J3X è offline   Rispondi citando il messaggio o parte di esso
Old 18-02-2008, 10:47   #17
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Questo:

InsertionSort(&x[0], n);

equivale a questo:

InsertionSort(x, n);
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 18-02-2008, 10:57   #18
J3X
Senior Member
 
L'Avatar di J3X
 
Iscritto dal: Dec 2001
Città: ____________________ Messaggi: 8532 _________ Messaggi: 2351 _________ Messaggi: 14408 ________ Messaggi: 5013 _________ Messaggi: 691366
Messaggi: 2924
Quote:
Originariamente inviato da cionci Guarda i messaggi
Questo:

InsertionSort(&x[0], n);

equivale a questo:

InsertionSort(x, n);
mmmhhh.. meglio
__________________
J3X I'M ON eBay[ho trattato con...]
veryOldPost: HWUpgrade users map!//Mod1//EurO/I?//AcquistiEstero
J3X è offline   Rispondi citando il messaggio o parte di esso
Old 18-02-2008, 11:37   #19
J3X
Senior Member
 
L'Avatar di J3X
 
Iscritto dal: Dec 2001
Città: ____________________ Messaggi: 8532 _________ Messaggi: 2351 _________ Messaggi: 14408 ________ Messaggi: 5013 _________ Messaggi: 691366
Messaggi: 2924
una info...
ma nell'algoritmo insertionsort... "app" che ruolo svolge? variabile di appoggio?
__________________
J3X I'M ON eBay[ho trattato con...]
veryOldPost: HWUpgrade users map!//Mod1//EurO/I?//AcquistiEstero
J3X è offline   Rispondi citando il messaggio o parte di esso
Old 18-02-2008, 11:38   #20
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Sì, una variabile dove mettere temporaneamente un elemento.
cionci è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Roborock Qrevo Curv 2 Flow: ora lava con un rullo Roborock Qrevo Curv 2 Flow: ora lava con un rull...
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite Alpine A290 alla prova: un'auto bella che ti fa ...
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile Recensione HONOR Magic 8 Lite: lo smartphone ind...
Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora Sony WF-1000X M6: le cuffie in-ear di riferiment...
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI Snowflake porta l'IA dove sono i dati, anche gra...
Pirateria audiovisiva: la Guardia di Fin...
Ubisoft conferma due nuovi Far Cry in sv...
Chi vincerà il Festival di Sanrem...
G42 e Cerebras portano in India un super...
Offerte aggiornate del weekend Amazon: 7...
4 MacBook Air in offerta e scende a 939€...
Chrome cambia il tuo modo di lavorare: o...
Minimo storico iPhone 17 su Amazon: 909€...
USA, incriminati tre ingegneri della Sil...
Xbox: Phil Spencer lascia dopo 38 anni, ...
Cuffie e sostanze chimiche: uno studio e...
Terremoto sui dazi USA: la Corte Suprema...
Arianespace potrebbe lanciare il primo r...
Google Pixel 10a disponibile al prezzo m...
Microsoft Copilot nei guai: email riserv...
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: 14:55.


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