Torna indietro   Hardware Upgrade Forum > Software > Programmazione

NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine
NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine
Dopo anni di attesa e una lunga fase di sviluppo, Noctua entra nel mercato dei dissipatori a liquido AIO con la nuova serie NL-LC1. Forte dell'esperienza maturata nel raffreddamento ad aria, l'azienda austriaca promette di portare la propria filosofia fatta di qualità costruttiva, attenzione ai dettagli e silenziosità anche in questo segmento. Abbiamo provato il nuovo sistema per scoprire se riesce a distinguersi in un mercato ormai molto competitivo.
Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con Android 15 e penna, dal prezzo super
Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con Android 15 e penna, dal prezzo super
Arrivato sul mercato italiano a fine marzo, la serie Boox Go 10.3 (Gen II) offre Android 15, penna da 4096 livelli e retroilluminazione opzionale (nel modello da noi provato, Lumi, presente). La serie si compone di due tablet ePaper che fanno da e-reader, blocco note digitale e persino browser, tutto a un prezzo che fa dimenticare i prodotti di brand più blasonati
Gigabyte MO32U24 OLED: il 4K a 240Hz su un pannello OLED ideale per il gaming
Gigabyte MO32U24 OLED: il 4K a 240Hz su un pannello OLED ideale per il gaming
Pannello QD-OLED da 32 pollici con risoluzione 4K, frequenza di aggiornamento a 240Hz e tempi di risposta rapidissimi: il Gigabyte MO32U24 evolve il progetto del suo predecessore MO32U e alza ulteriormente l'asticella delle prestazioni. È ancora una volta un monitor indirizzato ai giocatori più esigenti
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 20-04-2010, 14:57   #1
gabriel_cz
Junior Member
 
Iscritto dal: Apr 2010
Messaggi: 3
[c++] problema funzione

Ciao a tutti sono nuovo del forum e anche alla programmazione.non capisco perche' la funzione che ho scritto mi restituisce dei valori che non sono quelli che vorrei cioe' la tabellina di un numero che gli passo.Grazie e scusate la mia ignoranza.
#include <cstdlib>
#include <iostream>
//funzione che riceve un numero e ne restituisce la tabellina
using namespace std;
int tabelline(int num)
{
int v[10];//vettore per contenere la tabellina
int ris=0;
int i=1;
int numero;
for(i=1;i<=10;i++)
{
ris=numero*i;//ris=il numero per il contatore e passo il risultato al vettore
v[ris];
}
return v[ris];//restituisce il vettore con la tabellina del numero

}
int main(int argc, char *argv[])
{
int numero;
cout<<"scrivi un numero "<<endl;
cin>>numero;
cout<<"la tabellina di "<<numero<<" e' "<<endl<<tabelline(numero);//chiamo la funzione e gli passo numero


system("PAUSE");
return EXIT_SUCCESS;
}
gabriel_cz è offline   Rispondi citando il messaggio o parte di esso
Old 20-04-2010, 15:08   #2
agente mm8
Senior Member
 
Iscritto dal: Mar 2008
Messaggi: 401
Semplicemente perché invece di moltiplicare num per i, moltiplichi numero per i.
numero tra l'altro è una variabile (inutile) che non hai inizializzato.
agente mm8 è offline   Rispondi citando il messaggio o parte di esso
Old 20-04-2010, 15:10   #3
lupoxxx87
Senior Member
 
Iscritto dal: Jul 2009
Città: Varès
Messaggi: 658
ehm....ci sono un paio di errori ovunque nella struttura della funzione


Codice:
int tabelline(int num) { //qui la funzione restituisce solo un intero...non una tabellina..e non usi la variabile "num"
   int v[10];                      
   int ris=0;
   int i=1;
   int numero;
   for(i=1;i<=10;i++) { //gli indici devono andare da 0 a 9
      ris=numero*i;
      v[ris];           //questa operazione non fa nulla
   } 
   return v[ris];       //restituisce un elemento che è al di fuori del vettore
}
una versione corretta potrebbe essere

Codice:
int[] tabelline(int num) {
   int v[10];                      
   for(int i=0;i<10;i++) 
      v[i]=num*(i+1);
   return v;       
}

Ultima modifica di lupoxxx87 : 20-04-2010 alle 15:17.
lupoxxx87 è offline   Rispondi citando il messaggio o parte di esso
Old 30-04-2010, 18:37   #4
gabriel_cz
Junior Member
 
Iscritto dal: Apr 2010
Messaggi: 3
#include <cstdlib>
#include <iostream>

using namespace std;
//funzione che dato un numero ne stampa la tabellina
int tabellina(int num)
{
int v[10];//vettore per contenere la tabellina
int risultato=0,i=0;
for(i=1;i<=10;i++)
{
risultato=num*i;
v[risultato];

}
return v[risultato];
}

int main(int argc, char *argv[])
{
int risposta;
cout<<"inserisci numero"<<endl;
cin>>risposta;
cout<<"la tabellina del "<<risposta<<" e' "<<tabellina(risposta)<<endl;

system("PAUSE");
return EXIT_SUCCESS;
}
questo e' cio' che ho scritto dopo alcune modifiche grazie ai vostri suggerimenti

purtroppo continua a restituire valori strani.Io penso che il problema sia che la funzione deve restituire un vettore.Forse vanno usati i puntatori.Spero che qualcuno me lo spieghi.grazie

Ultima modifica di gabriel_cz : 30-04-2010 alle 18:42.
gabriel_cz è offline   Rispondi citando il messaggio o parte di esso
Old 30-04-2010, 20:18   #5
agente mm8
Senior Member
 
Iscritto dal: Mar 2008
Messaggi: 401
Usa il tag code per favore...
agente mm8 è offline   Rispondi citando il messaggio o parte di esso
Old 01-05-2010, 00:02   #6
MaxArt
Senior Member
 
L'Avatar di MaxArt
 
Iscritto dal: Apr 2004
Città: Livorno
Messaggi: 6659
Quote:
Originariamente inviato da gabriel_cz Guarda i messaggi
Codice PHP:
#include <cstdlib>
#include <iostream>

using namespace std;
//funzione che dato un numero ne stampa la tabellina
int tabellina(int num)
{
    
int v[10];//vettore per contenere la tabellina
  
int risultato=0,i=0;
    for(
i=1;i<=10;i++)
    {
         
risultato=num*i;
        
v[risultato];
                     
     }                  
        return 
v[risultato];
}

int main(int argcchar *argv[])
{
int risposta;
cout<<"inserisci numero"<<endl;
cin>>risposta;
cout<<"la tabellina del "<<risposta<<" e' "<<tabellina(risposta)<<endl;

    
system("PAUSE");
    return 
EXIT_SUCCESS;

questo e' cio' che ho scritto dopo alcune modifiche grazie ai vostri suggerimenti

purtroppo continua a restituire valori strani.Io penso che il problema sia che la funzione deve restituire un vettore.Forse vanno usati i puntatori.Spero che qualcuno me lo spieghi.grazie
Forse non hai ben chiaro come funziona la cosa...
Se vuoi che restituisca una tabellina, la funzione dovrà restituire un array di interi, e non un intero. Ma tu, l'array, non lo costruisci, anzi rischi che ti dia parecchi problemi.
Vediamo nel dettaglio.
int risultato=0,i=0;
Qui, l'inizializzatione di i è inutile, perché subito dopo (nel for) lo poni ad 1. Fai così: lo inizializzi subito ad 1, ed elimini l'assegnazione nel primo pezzo del for, così: for(;i<=10;i++)
v[risultato];
Questa riga non fa assolutamente nulla: non assegni, insomma, il risultato alla corrispondente posizione nell'array. Quello che fai è richiamare il valore dell'array v nella posizione risultato (che quindi può valere anche 90, ben oltre i limiti dell'array)... e basta, perché non ci fai nulla: non lo assegni a niente.
Allora, ricapitoliamo: tu vuoi che l'array contenga la tabellina. Cioè, nel primo posto ci vuoi num*1, nel secondo num*2 e così via. Allora, quello che devi fare è questo:
v[i-1]=risultato;
La variabile i contiene i valori da 1 a 10 e c'è utile per indicare la posizione all'interno dell'array. Il -1 serve perché la prima posizione dell'array è indicata con 0 e non con 1. Quindi fai l'assegnazione dovuta.
return v[risultato];
Per l'appunto, questo è l'errore di prima. Se immetto 5 come num, allora verrà restituito v[50], che è un valore numerico ben oltre il range dell'array.
Inoltre, così tu restituisci un intero, e non un array.
Allora devi restituire v, e non v[qualcosa]. Contemporaneamente, devi modificare la dichiarazione della funzione in modo che restituisca un array, o più generalmente un puntatore ad una variabile di tipo intero. Così:
int* tabellina(int num)
Tutto il trucco sta in quel piccolo asterisco, per farti entrare nel magico mondo dei puntatori (non ne sai molto, vero? Preparati psicologicamente, per chi non li ha mai visti sono un po' un trauma... E col C ne vedrai fino al voltastomaco).

Infine c'è la questione della stampa a video. Non puoi stampare direttamente un array, questo è poco ma sicuro. Ti produrrebbe risultati incomprensibili...
Ti consiglio di cambiare l'ultima parte così:
Codice PHP:
inttabell tabellina(risposta),i=0;
cout<<"la tabellina del "<<risposta<<" e' ";
for (;
i<10;i++) {
   
cout << *(tabell+i) << " ";
}
cout << endl
Se hai delle domande chiedi pure.
__________________
HWU Rugby Group :'( - FAQ Processori - Aurea Sectio - CogitoWeb: idee varie sviluppando nel web
MaxArt è offline   Rispondi citando il messaggio o parte di esso
Old 01-05-2010, 11:38   #7
deadlyomen17
Senior Member
 
L'Avatar di deadlyomen17
 
Iscritto dal: Sep 2004
Città: Cosenza
Messaggi: 2971
Codice PHP:
#include <iostream>

using namespace std;

intottieniTabellinaint numero );

int main (int argcchar const* argv[])
{
    
int numero;
    
// lettura del numero
    
cout << "Inserisci un numero: ";
    
cin >> numero;
    
    
// ottengo l'array di interi che contiene la tabellina
    
inttabellina ottieniTabellinanumero );
    
    
// ciclo l'array e stampo ogni suo elemento
    
for( inttabellina; *ii++ )
    {
        
cout << *<< " ";
    } 
    
cout << endl;
    
    
delete [] tabellina;
    
    return 
0;
}

intottieniTabellinaint numero 
{
    
// dichiaro e inizializzo l'array di interi in cui metterò il risultato
    
inttabellina = new int[10];
    
    for( 
int i 1<= 10i++ ) 
    {
        
// i-1 perchè per fare la tabellina facciamo partire i da 1, mentre 
        // un array parte sempre da 0
        
tabellina[i-1] = numero i;
    }
    
    return 
tabellina;

deadlyomen17 è offline   Rispondi citando il messaggio o parte di esso
Old 04-05-2010, 17:21   #8
gabriel_cz
Junior Member
 
Iscritto dal: Apr 2010
Messaggi: 3
grazie ragazzi.erano giorni che ci pensavo ma non riuscivo ad uscirne.
Max se mi spiegassi nel dettaglio ,come hai fatto nella prima parte,il codice per la stampa,te ne sarei grato.
deadly adesso mi studio quello che hai scritto tu e casomai ti chiedo chiarimenti.
Pensavo fosse piu' facile,voleva essere un esercizio per imparare ma si e' rivelato piu' ostico di quello che pensavo...
gabriel_cz è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine NL-LC1 è il primo dissipatore a liquido A...
Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con Android 15 e penna, dal prezzo super Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con ...
Gigabyte MO32U24 OLED: il 4K a 240Hz su un pannello OLED ideale per il gaming Gigabyte MO32U24 OLED: il 4K a 240Hz su un panne...
Recensione realme 16 5G: lo smartphone con Selfie Mirror ha una batteria da 6550mAh Recensione realme 16 5G: lo smartphone con Selfi...
Come rispettare tutte le nuove regole per i monopattini elettrici? La guida per non rischiare sanzioni Come rispettare tutte le nuove regole per i mono...
NVIDIA svela la tecnologia che trasforma...
iPhone del 20° anniversario e AirPods co...
Non solo Prime: ecco le 13 offerte su Am...
Xreal Aura apre le prenotazioni: gli occ...
Snap presenta i nuovi Specs: gli occhial...
Google rilascia Wear OS 7: basato su And...
Microsoft chiude la porta ai Surface da ...
Sedie gaming e da ufficio in offerta: a ...
Viltrox porta il suo 28mm f/4.5 pancake ...
Jensen Huang è andato a zappare l...
Prime Day in anticipo - giorno 3: ci son...
AMD EPYC e Instinct: accordo per fornire...
Amazon spinge Fire TV Stick 4K Select, R...
Ryzen 10000 Olympic Ridge desktop: addio...
Android 17 debutta sui Pixel: ecco cosa ...
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: 11:28.


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