Vai al contenuto





leotech

Membri
  • Numero contenuti

    40
  • Iscritto

  • Ultima visita

Info principali

  • Sesso
    Uomo

Visite recenti

531 visite nel profilo
  1. Il file deve stare nella cartella dove si trova l'eseguibile, non in quella dove c'è il file .c.
  2. Ciao a tutti. Ho alcune librerie dinamiche scaricate da internet che vorrei usare all'interno dei progetti, senza dover specificare ogni volta dove sono collocate. Mi spiego meglio: vorrei poter includere la mia libreria nelle parentesi angolari (<mylib.h>) come la libreria standard del C (<stdio.h>), senza dover scrivere ogni volta tutto il path al suo interno. Facendo delle ricerche ho visto che nel mondo Unix il compilatore va a cercare le librerie nella cartella /usr/local/, nella quale non sono però riuscito a copiare né gli header (in /usr/local/include) né il codice compilato della libreria (/usr/local/lib). Ad ogni tentativo di scrittura, anche in modalità sudo, ho ricevuto sempre lo stesso errore: "Operation not permitted". Dove devo collocare le mie librerie quindi? Grazie a chiunque saprà rispondermi!
  3. Grazie per la risposta Lief. Non so se così possa funzionare, ti spiego brevemente la mia idea: vorrei realizzare un programma multithreading nel quale con un thread gestisco la generazione di una forma d'onda e la sua uscita alle casse, con un altro invece vorrei gestire l'interazione con l'utente (ogni lettera corrisponde ad una nota, per cui viene generata la forma d'onda solo quando l'utente preme un tasto e interrompe la sua produzione solo nel momento in cui la tastiera non riceve più pressioni). Cercando ancora su internet ho trovato una soluzione che mi soddisfa a metà... Usare la libreria <termios.h>. Purtroppo da quanto ho capito se volessi utilizzare il terminale mentre il mio programma è in esecuzione sarebbe impossibile, per cui sto cercando altre soluzioni (sempre che esistano). Vorrei evitare di creare un altro processo con la fork visto il peso che andrebbe la sua creazione... Spero tu possa aiutarmi..
  4. Ciao a tutti! Sto cercando di scrivere un programma in cui, dopo aver messo la funzione main() in pausa (con la chiamata di sistema pause()), se l'utente preme un qualsiasi tasto sulla tastiera il programma lo riconosce e stampa su schermo una frase del tipo "Hai premuto il pulsante 'x'". Ho provato a cercare su internet ma l'unica cosa che sono riuscito a trovare è come riconoscere se l'utente ha premuto ctrl-c. Vi inserisco anche il codice che ho scritto, sperando che vi possa essere d'aiuto a capire il mio problema. Grazie a tutti in anticipo! #include <stdio.h> #include <stdlib.h> #include <signal.h> #include <unistd.h> void catch_keyboard(int signo) { char c; read(STDIN_FILENO, &c, 1); printf("Pressed %c on keyboard\n", c); } void sig_quit() { //chiude il programma quando riconosce la combinazione ^\ exit(0); } int main() { signal(SIGIO, catch_keyboard); signal(SIGQUIT, sig_quit); pause(); }
  5. Grazie mille, le andrò a vedere
  6. So che non è una buona pratica di programmazione, infatti come ho specificato vorrei farlo per uno scopo puramente didattico. Il mio intento era di usare le librerie standard del C, senza utilizzare librerie di terze parti. Non è un problema che sia hardware-dipendente per lo stesso motivo per il quale ho deciso di reinventare la ruota :). Sono curioso di vedere fin dove riesco ad arrivare con la programmazione... Inoltre ciò mi permetterebbe di approfondire la mia conoscenza dell'hardware, il quale mi ha sempre affascinato
  7. Ciao a tutti! Sto scrivendo un motore audio molto basilare per approfondire le mie conoscenze e per passione. Sono riuscito ad implementare correttamente la generazione della forma d'onda, però non so come farla arrivare alle casse del mio MacBook... La correttezza della generazione l'ho verificata attraverso la printf dei valori sullo stdout, qualcuno di voi sa come reindirizzare il tutto sullo stream audio? Ho provato a cercare su Google, dove tutti consigliano di scaricare delle librerie apposite, ma preferirei non usarle in quanto vorrei imparare io stesso a progettarle in un futuro. Vi ringrazio in anticipo per le risposte!
  8. Ciao, premetto di non conoscere Swift quindi non so se la mia soluzione sia effettivamente la più giusta/migliore. Comunque ho fatto delle prove su XCode e ho trovato questa modo: per accedere ad un singolo carattere di una stringa devi utilizzare il metodo index(punto_dal_quale_voglio_partire, offsetBy: n), dove n indica la posizione del carattere al quale vuoi arrivare dentro la stringa. Le stringhe in Swift partono da 0 (come credo in tutti - o quasi - i linguaggi di programmazione). Ti posto un esempio: import Foundation let pc = "computer" let char = pc[pc.index(pc.startIndex, offsetBy: 3)] print(char) quello che ho ottenuto dalla print è stato "p".
  9. Prego Il return 0, senza le parentesi, serve ad indicare al sistema operativo che il programma è stato eseguito correttamente.
  10. Eccoti il codice, ho apportato alcune modifiche a quello che avevi postato tu (ho aggiunto il return 0 alla funzione main che mancava e ho spostato la creazione dell'array v1 dopo la selezione della dimensione per evitare di occupare più memoria inutilmente. Spero di esserti stato utile #include <stdio.h> #include <stdlib.h> void leggi_v (int v1[], int *dim) { int i; printf ("Inserire gli elementi del vettore: \n\n"); for (i=0; i<*dim; i++) { printf ("Elemento %d: ", i+1); scanf ("%d", &v1[i]); } } void stampa_v (int v1[], int dim) { int i; printf ("Il vettore sara' composto dai seguenti elementi \n"); for (i=0; i<dim; i++) printf ("Elemento n.%d: %d\n", i+1, v1[i]); } void ordina_vettore(int v1[], int dim) { int temp = 0; int i = 0; int j = 0; int numeri = 0; int zeri = 0; for(int k = 0; k < dim; k++) { if(v1[k] == 0) { zeri++; } else if(v1[k] != 0) { numeri++; } } int array_numeri[numeri]; int array_zeri[zeri]; for(int k = 0; k < dim; k++) { if(v1[k] == 0) { array_zeri[i] = v1[k]; i++; } else if(v1[k] != 0) { array_numeri[j] = v1[k]; j++; } } for(i = 0; i < numeri; i++) { for(j = 0; j < numeri - i - 1; j++) { if(array_numeri[j] > array_numeri[j + 1]) { temp = array_numeri[j]; array_numeri[j] = array_numeri[j + 1]; array_numeri[j + 1] = temp; } } } for(i = 0; i < numeri; i++) { v1[i] = array_numeri[i]; } for(j = i; j < dim; j++) { v1[j] = array_zeri[j - i]; } } void check_v (int v1[], int dim) { int i; int contatore = 0; for (i=0; i<dim; i++) { if ((v1[i]%2) == 1 || v1[i] == 0) { contatore++; } } if (contatore < dim) { printf ("Il vettore non contiene solo numeri dispari o pari a 0\n"); } if (contatore == dim) { printf ("Ok\n"); ordina_vettore(v1, dim); printf("Vettore ordinato:\n\n"); for(int i = 0; i < dim; i++) { printf("Elemento %d: %d\n", i + 1, v1[i]); } } } int main(){ int dim; printf ("Inserire il numero di elementi del vettore: "); scanf ("%d", &dim); int v1[dim]; leggi_v (v1, &dim); stampa_v (v1, dim); check_v (v1, dim); return 0; }
  11. La funzione per ordinare il vettore deve funzionare se nell'array ci sono solo numeri dispari e 0 o anche nel caso in cui ci siano i numeri pari?
  12. Sisi certo, avevo provato a fare delle ricerche per conto mio (inserendo anche il codice del modello) ma non ne ero riuscito a cavare un granché, ecco il motivo per il quale ho creato questo topic.
  13. Che di Intel Iris Pro Graphics esistono più versioni, e lì non è specificata
  14. Le specifiche come nel link qui sotto http://www.notebookcheck.net/Intel-Iris-Pro-Graphics-580.160664.0.html
×
×
  • Crea Nuovo...

Info

Per offrirti il miglior servizio possibile il sito utilizza cookies, anche di terze parti e profilazione. Utilizzando il sito acconsenti al loro impiego. Privacy Policy Termini di utilizzo