Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Il primo Sony con retroilluminazione True RGB alla prova del banco di misura e dei contenuti: luminanza enorme, colori accurati in HDR e un antiriflesso molto efficace. I limiti sono due sole HDMI 2.1 e il blooming fuori asse
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 03-02-2015, 19:16   #1
shiony710
Junior Member
 
Iscritto dal: Jan 2015
Messaggi: 16
[C] Confrontare la somma di due elementi di un vettore con un intero

Ciao a tutti, ho urgente bisogno di aiuto, questa è la traccia:
Dato un vettore di interi v e un intero x scrivi una funzione in C che stabilisce se esistono in v due elementi
v[i] e v[i] tali che v[i] + v[i] = x. Calcola la complessita computazionale dell'algoritmo
proposto. Esiste un'algoritmo che funziona in tempo
O(n^2)? E possibile fare meglio?


Questo è quello che ho provato a fare:

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

int main()

{
    int v[100], n, i, j, position;
    printf("Inserisci il numero degli elementi\n");
    scanf("%d", &n);
 
    printf("Inserisci %d elementi\n", n);
    
    for ( i = 0 ; i < n ; i++ )
      scanf("%d", &v[i]);
    
    int x;
    printf("inserisci un intero x \n");
    scanf("%d", &x);
    for ( i = 0 ; i < ( n - 1 ) ; i++ )
    {
         position = i;
         int somma = v[position] + v[j];
         
         for ( j = i + 1 ; j < n ; j++ )
         {
             if ( somma = x )
             somma = x;
         }
         if   ( somma != x )
             i++;
             }
    system("pause");
    return 0;
}
shiony710 è offline   Rispondi citando il messaggio o parte di esso
Old 05-02-2015, 08:29   #2
Maxco93
Member
 
L'Avatar di Maxco93
 
Iscritto dal: Oct 2011
Città: Roma
Messaggi: 179
Qui di seguito trovi il codice funzionante.Ho impostato un limite alla dimensione dell'array(costante dim), per vari motivi il più importante tra questi lo spreco di risorse.
Ti suggerisco di:
  • Quando puoi usa i puntatori.
  • Scrivi un codice piu leggibile possibile.
  • Step fondamentale di ogni linguaggio di programmazione: sono gli operatori, scrivere = e == significa 2 cose ben diverse sopratutto in C, gli hacker si basano proprio su questi errori.
  • Cerca di usare ove sia possibile meno cicli, rendono tutto poco leggibile.
  • Ho notato che utilizzi ancora il vecchio standard di gcc l'89, ti consiglio di usare il 99 che è l'ultima versione stabile di gcc che ti permette alcune scorciatoie.
  • Altra cosa che ho notato studia bene break,return sono molto utili per uscire da un ciclo.

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

const int dim = 4;		//Dimensione

int main(){
    int* v = (int*)calloc(dim,sizeof(int));	//Crea un array dinamico di 4 celle tute inizializzate a 0
    int k,somma,i,j;
    printf("Inserisci elementi:\n"); 
    for (i = 0 ; i < dim ; i++ ){			//Inserisco i valori nelle celle scandite da 0 a 3
     printf("\tInserisci valore: ");
      scanf("%d", &v[i]);
	}
    
    int x;
    printf("inserisci un intero x \n");		//Setto il valore di x
    scanf("%d", &x);
    
    k = somma = 0;
    while(k < dim){							//Se il mio scan di indice raggiunge la fine dell'array
		for(j = 0; j < dim; j++){			//Sotto ciclo per scandire le altre posizioni
			if(j != k){						//Leggo tutte le posizioni tranne in quella dove sono
				somma = v[k]+v[j];
				if(somma == x){				//Se la somma è uguale a x, ho finito esco dal programma e faccio una stampa.
					printf("Nella posizione v[%d]=%d e v[%d]=%d la loro somma è %d uguale a x=%d\n",k,v[k],j,v[j],somma,x);
					return 0;
				}	
			}
		}
		k++;
	}
	printf("Non ci sono elementi di V che danno per somma %d\n",x);	//Se sono arrivati qui senza essere stato bloccato sopra vuol dire che non ci sono elementi per cui la loro somma sia x.
	free(v);	//Libero la memoria allocata per V, per renderla di nuovo disponibile al OS
    return 0;
}
EDIT: Se hai domande chiedi pure.
__________________
Sono della provincia di Roma.
Maxco93 è offline   Rispondi citando il messaggio o parte di esso
Old 05-02-2015, 10:34   #3
shiony710
Junior Member
 
Iscritto dal: Jan 2015
Messaggi: 16
Ok ti ringrazio molto, ormai l'esame è andato ci riproverò nella prossima sessione, purtroppo il libro sul quale ho studiato non aiuta molto al livello pratico, quindi ho dovuto fare tutto come se fossi partito da 0
shiony710 è offline   Rispondi citando il messaggio o parte di esso
Old 05-02-2015, 10:39   #4
Maxco93
Member
 
L'Avatar di Maxco93
 
Iscritto dal: Oct 2011
Città: Roma
Messaggi: 179
Fai buon uso dei consigli per la prossima volta allora.
__________________
Sono della provincia di Roma.
Maxco93 è offline   Rispondi citando il messaggio o parte di esso
Old 05-02-2015, 10:45   #5
shiony710
Junior Member
 
Iscritto dal: Jan 2015
Messaggi: 16
Si certo, e probabilmente ti "tartasserò" ancora per qualche chiarimento.
Grazie mille
shiony710 è offline   Rispondi citando il messaggio o parte di esso
Old 05-02-2015, 11:56   #6
Maxco93
Member
 
L'Avatar di Maxco93
 
Iscritto dal: Oct 2011
Città: Roma
Messaggi: 179
Per avere un contatto piu diretto scrivimi un PM.
__________________
Sono della provincia di Roma.
Maxco93 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare Mova Z70 Ultra Roller Complete: motore potente, ...
Ecobonus al 65%: il governo valuta il ri...
Biscotti fatti con bottiglie di plastica...
SIHOO B100 a 161€ e B100 Pro a 209€: sed...
ClickFix dilaga: un finto captcha e un c...
HP Envy 6520e a 63€: stampante multifunz...
Diablo diventa una serie animata Netflix...
iPhone Duo porterà Apple al 25% d...
TSMC brucia le tappe: la produzione dei ...
Lexar ARES, SSD da 1TB a 156,74€: PCIe G...
Un'altra novità in arrivo da Samsung: ec...
Bottiglie di plastica trasformate in cas...
ECOVACS T90 OMNI a 439€: ottimo prezzo p...
BYD ha ordinato altre 10 navi da traspor...
Maven Robotics esce dall'ombra: la scomm...
La serie Magic 9 di HONOR avrà anche una...
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: 10:09.


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