mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c
Titolo: Riavviare il computer :)

Qualche mese fa un mio amico programmatore mi ha detto che mentre
imparava il C, gli è capitato non poche volte di riavviare il computer
involontariamente a causa di un errato utilizzo dei puntatori... Evidente-
mente andava a scrivere in qualche area di memoria del sistema opera-
tivo. Ora, siccome è un pò di tempo che studio il C e non mi è mai capi-
tato, se è vero quello che ha detto il mio amico mi spiegate come causa-
re questo errore, a scopo puramente didattico?
Thanks.
--
Sparviere
spar...@ngi.it
http://sparviere.tsx.org


in DOS basta sporcare un area di memoria, piu' o meno a caso,
utilizzata dal sistema operativo, in windows dovrebbe esserci qualche
controllo in piu'.
Il seguente codice (gia' non bello di per se') dovrebbe terminare con
un messaggio di errore tipo "divide by zero/error/overflow", ma con il
PC ancora sano.
int  main ( void )
{
  long a=0;
  return 1/a;
}
se lo modifichi in:
int  main ( void )
{
  long a=0;
  **(long**)&a=0; // modifico la gestione della divisione per zero
  return 1/a;
}
non so cosa potrebbe succedere al tuo PC.
ciao
donCiccio

  **(long**)&a=0; // modifico la gestione della divisione per zero
Questa non l'ho capita per nulla, me la potresti spiegare?
E perche' **(long **)&a? Non e' lo stesso scrivere *(long *)a?
Se NO, perche'?
Se SI, che senso ha assegnare 0 al contenuto della memoria puntata da 0L?
donCiccio, scusami le tante domande, ma questa mattina devo essermi
svegliato male...
buon 0 a tutti
bepin

 buon 0 a tutti
eh? :-)
ciao
donCiccio

eh? :-)
nulla, e' solo un mio modo di terminare i messaggi.
eppoi te l'ho detto che ho avuto un cattivo risveglio....
buon puntatore a tutti
bepin

 buon puntatore a tutti
buon (cast) a te
ciao
donCiccio

nel mio esempio 'a' e' una long, quindi *a non si puo' fare, e nemmeno
**&a.
???
be, ma e' quello che hai fatto, mettendoci il cast di mezzo.
Cioe', secondo me ottengo lo stesso risultato con
long a=0;
**(long **)&a=0;
e con:
long a=0;
*(long *)a=0
e adirittura con, a questo punto
*(long *)0L=0;
anyway... era solo per discutere un po'
grazie di tutto
buna serata a tutti
bepin


mi piacciono queste discussioni +o- educative  :-)
ciao
donCiccio


Scusa se mi intrometto ma devo dirvi che sono estasiato dai casini che
possono insidiarsi nel C..... peggio che decifrare il Giapponese... ^_^
Well
Buon decifraggio a tutti
Alamo714


azz!!!
ho preso un granchio bello grosso!
hai ragione tu, e' compilabile, ed e' la stessa cosa! :-(
ciao
donCiccio

[SNIP]
Si, questo mi era chiaro fin dall'inizio
Per il resto, vedi che siamo gia' capiti
buon cast a tutti
bepin

possono insidiarsi nel C..... peggio che decifrare il Giapponese... ^_^
si vede che non hai mai programmato in C++ ;-)))
Anto
--
Antonio Cuni, 19 anni, studente
Brainbench Certification: 
Master C++: 4.6, higher than 98% of all previous test takers.
C Language: 3.32, higher than 79% of all previous test takers.
http://www.brainbench.com/transcript.jsp?pid=1301688
Newsgroup: it.comp.lang.c
Titolo: processi in c

io so usare i processi (l'istruzione fork) su gcc di linux
ma qualcuno sa se c'è la libreria per avviare processi su C in windows???


it.comp.programmare.win32
Ciao,
Zeppe

non hai scritto una frase di senso compiuto...vabbe aspetto altre risposte!
"Zeppe" <zep...@MOdespammedVE.comTHIS> ha scritto nel messaggio
news:c304nt$ttt$1...@newsreader.mailgate.org...


 non hai scritto una frase di senso compiuto...vabbe aspetto altre risposte!
1. impara a quotare.
2. impara a leggere il manifesto del gruppo.
3. impara ad usare google.
4. impara a leggere tra le righe.
Per inciso:
	Spostati sul gruppo pertinente.
Ciao,
 Emmanuele.
-- 
Emmanuele Bassi (Zefram)                 [ 
http://www.emmanuelebassi.net
 ]
GnuPG Key fingerprint = 4DD0 C90D 4070 F071 5738  08BD 8ECC DB8F A432 0FF4

non hai scritto una frase di senso compiuto...vabbe aspetto altre risposte!
ok, allora: chiedi su it.comp.programmare.win32!
Ahh... sono proprio un santo! ;)
cmq, non riceverai altre risposte, o almeno non migliori di questa,
dato che nel ng non si parla di cio'. 
Ciao,
Zeppe

Newsgroup: it.comp.lang.c
Titolo: Verificare se in una matrice ci sono righe pari uguali alla prima riga

Ragazzi dovrei fare un controllo in una matrice, cioèdevo controllare
se ci sono righe pari (cioè la riga 2,4,6,8, ecc...) ke siano uguali
alla prima (cioè la riga 0). Potete dirmi ke codice usare? devo
salvare la prima riga in un vettore facendo lo stesso con le altre
righe e poi fare il controllo oppure c'è un metodo più veloce? Vi
ringrazio per una vostra risposta, ciao

 ringrazio per una vostra risposta, ciao
Confronti elemento per elemento la riga 0 con le righe pari usando un 
ciclo e incrementando il contatore di riga di 2 a ogni iterazione. Se 
vuoi puoi usare alternativamente la funzione memcmp per confrontare un 
blocco di memoria (riga) con un altro.
Ciao.


puoi fare tutto sul posto senza copiare dati in vettori temporanei.
puoi farlo sia usando gli indici , sia usando puntatori.

potete scrivermi il codice senza usare librerie e puntatori?.

 potete scrivermi il codice senza usare librerie e puntatori?.
No. E' un programma veramente banale. Se hai studiato
un minimo dovresti essere in grado di scriverlo da solo.
Qui di solito non si chiede la risoluzione precotta degli esercizietti.
Qui di solito la gente posta il quesito e il proprio tentativo
di soluzione e poi "gli altri", se hanno tempo
e voglia, danno suggerimenti su come correggere/migliorare il codice.
ciao,
g.
Newsgroup: it.comp.lang.c
Titolo: passate a C#

invece di perdere tempo col C.

invece di perdere tempo col C.
C#?? E checcos'e'?? :-D

 invece di perdere tempo col C.
solita propaganda da una persona che non capisce un cazzo di linguaggi di
programmazione ed a cosa servono !!!
hai dimostrato tutta la tua intelligenza ora puoi andartene a trollara da
qualche altra parte !!!
adios

 invece di perdere tempo col C.
*PER FAVORE* evitate di rispondere a questo troll.
-- 
Enrico `Trippo' Porreca

 invece di perdere tempo col C.
ghghgh...

 *PER FAVORE* evitate di rispondere a questo troll.
l'idiota ha gia postato la stessa cazzata un paio di mesi fa,
assieme ad una dichiarazione di amore per B.G.
Io ho provato a fargli levare l'account, ma Infostrada (evidentemente)
ha fatto orecchie da mercante...
Io ci provo ancora una volta.
Se qualcuno volesse darmi una mano e mandare una mail
ad 
ab...@net24.it
 includendo header e contenuto del
post, forse ce lo levano dalle scatole.
C:\>iao Angelo.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Io ho provato a fargli levare l'account, [...]
E a che servirebbe se gli account si ottengono gratuitamente ?
Dismesso uno, te ne crei un altro.  Vista l'idiozia dell'elemento, io
suggerisco di plonkarlo e basta.


Beh penso che dopo un po' uno si stufi a sottoscrivere un nuovo account 
alla settimana... A meno che non faccia il troll di professione.
-- 
Enrico `Trippo' Porreca

 suggerisco di plonkarlo e basta.
di solito utilizzo mailgate: rimedio scarsamente applicabile :-)
C:\>iao Angelo


 E a che servirebbe se gli account si ottengono gratuitamente ?
Nessuno fa saltare un account per una trollata.
Per di più isolata come questa....
Personalmente penso che non si debbano intasare le mail degli abuse
con queste cose, ma semmai con le segnalazioni di spammer che sono
ben più fastidiosi e "costosi" per la comunità.
follow up su it.news.net-abuse
-- 
Gerolamo

 con queste cose, ma semmai con le segnalazioni di spammer che sono
Dammi la tua definizione di spammer: secondo la mia il soggetto e'
uno spammer.
C:\>iao Angelo


 uno spammer.
Sbagli.
Comuque avevo impostato il follow-up su INNA, non certo qui.
Se vuoi parlarne ti basta seguirlo...
-- 
Gerolamo (follow up su it.news.net-abuse)
Newsgroup: it.comp.lang.c
Titolo: problema vettori

Ciao a tutti,
ho scritto un semplice prog che prende SOLO numeri in input e li plotta
in un istogramma.
Se per le occorrenze immagazzinate nel vettore "digit" uso tipo:
while ((c=getchar()) != EOF || (c>=48 && c<=57)) {
       switch(c) {
	case 48: ++digit[0]; break;
	case 49: ++digit[1]; break;
	.....
	case 57: ++digit[9]; break;
	case '\n': break;
        default: ; break;
	}
}
for (i=0; i<9; i++) {
   printf("%d", digit[i]);
}
va tutto bene.
Tuttavia volevo fare le cose piu' elegantemente usando:
while ((c=getchar()) != EOF || (c>=48 && c<=57) ) {
   if  (c="\n") continue;
     ++digit[c];
}
for (i=48; i<57; i++) {
  printf("%c", digit[i]);  
}
non funziona, non stampa niente!
Con:
printf("%d", digit[i]);
stampa una serie di zero....
Dove sbaglio?
che tipo di vettore e' digit[c]??
grazie in anticipo,
mirko
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 
Come sarebbe che tipo di vettore e' ??
Se non lo sai tu che lo hai definito (e non ci hai mostrato
la definizione!!)
Se vuoi usarlo in quel secondo modo (che secondo me non
e' elegante perche' "spreca" un bel po' di posizioni
di digit) devi averlo dimensionato almeno fino alla posizione 57,
quindi qualcosa tipo
int digit[58];
comunque puoi anche scrivere direttamente
int digit[10];
in modo da riservare 10 posizioni per contare le 10 cifre da 0 a 9
e poi scrivere
++digit[c-'0'];
siccome '0' varra' 48, allora c-'0' va da 0 a 9 mentre c varia tra 48 e 57.
ciao,
g.

 g.
che dire... funziona!
grazie!!!


 va tutto bene.
Andrà anche tutto bene, ma perché fare tutto 'sto bordello per leggere un
semplice numero da tastiera e riscriverlo sul video?
Basta fare:
    int i;
    scanf("%d", &i);
    printf("%d", i);
--
Cingar
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

     printf("%d", i);
In realta' il vettore non memorizza i caratteri immessi ma la occorrenze
degli stessi. Mi serviva per plottare un istogramma delle frequenze.
Tutto sto bordello, come lo chiami tu, era un piccolo passo in avanti
nella soluzione di un esercizio piu' complesso che mi ero prefisso:
scrivere un programma per la cifratura/decifratura secondo il metodo 
delle frequenze.
ciao


 }
...
ATTENZIONE! mi sa che ti sei mangiato un "=" (if (c=="\n") ...).
Altrimenti non hai equivalenza con lo switch  e la condizione dell' if 
sarebbe banalmente sempre vera.
Vieni da esperienze col Pascal ?  :-)
Giorgio

 ATTENZIONE! mi sa che ti sei mangiato un "=" (if (c=="\n") ...).
Aggiungo che il confronto va fatto un carattere, non con un litteral:
if (c == '\n')
Luca
-- 
Home: 
http://kronoz.cjb.net
"L'amore consiste nell'essere cretini insieme." -- P. Valery
Newsgroup: it.comp.lang.c
Titolo: primo messaggio

Ciao! Ho deciso d'imparare a programmare in C, però avrei prima alcune
questioni da porvi:
1) Mi consigliate un buon "programma" (si chiamano compilatori no?) per
programmare in C? Magari che costi poco o gratuito.
2) C'è qualcosa d'interessante sul web per imparare il C?
3) Mi consigliate qualche testo particolare o qualche altro ng?
4) Devo conoscere altri linguaggi di programmazione?
Grazie!

 4) Devo conoscere altri linguaggi di programmazione?
Non è strettamente necessario ma è certo che la "cultura" di un
programmatore è fatta anche di quel tipo di conoscenze.
EMG

4) Devo conoscere altri linguaggi di programmazione?
E' preferibile, sebbene non strettamente necessario.
Diciamo che ti aiuterebbe a capire *prima* tante cose.

 probabile che utilizzi Windows9x/MS-DOS.
Sì, ma sto imparando anche ad usare Linux...adesso ho una RedHat 6.0, ma non
so se sono già in grado di usarla decentemente (ho la maturità, ho avuto
poco tempo)

 Grazie!
Prego!

Newsgroup: it.comp.lang.c
Titolo: da grande.....

Ciao
una volta completato il libro Deitel, vorrei dedicarmi alla 
programmazione Socket, infatti se sto' studiando C e' proprio per questo 
motivo, capire i protocolli creando programmi che li utilizzano...
quali testi vanno per la maggiore in campo socket?
grazie

http://www.kohala.com/start/#books
Puoi anche fermarti qui.
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

Newsgroup: it.comp.lang.c
Titolo: ASSOLTO!

ASSOLTO!

 ASSOLTO!
Emh .. non è Ansi!
dovevi forse scrivere
Assolto();
oppure
void Assolto ( void );
boh...forse mi sbaglio!

The Dark Player ha scritto:

ROTFLissimo :-)))))

 boh...forse mi sbaglio!
No, credo che per questa particolare chiamata fosse Prescrizione() la 
sintassi giusta... ma guardero' meglio sul K&R prima di dirlo con 
sicurezza... :P
-- 
Mat/tia Belletti - Undergraduate student @ 
cs.unibo.it
ICQ: 33292311    - email: 
mbel...@cs.unibo.it
IRC: RedGlow     - site(s): 
http://mbellett.web.cs.unibo.it/
Jabber: RedGlow  - Linux registered user 299762 @ machine 213003

> >>ASSOLTO!
Invece io lo vedo giusto
ASSOLTO!
Il ! nega!
    danilo

 sicurezza... :P
 
Guarda, rispondo io:
la funzione e' 
void Prescribe(INT time);
dopo un certo tempo dall'avvio di un processo provvede a prescriverlo 
e lo annulla.
;-)
-- 
Mentore Siesto

 ;-)
È allo studio una nuova versione con un parametro in più:
void Prescribe(int time, bool friend_of_PresDelCons);
--
Cingar
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/
Newsgroup: it.comp.lang.c
Titolo: help C# database oleDb

 
Ciao a tutti scrivo per la prima volta qui!! Hoi un problema con uan quesry
parametrica in c# usando un ole dB non riesco a far funzionare la quesry
inserendo il where infatti mi dà un errore del tipo:
Errore di sintassi (operatore mancante) nell'espressione della query 'ID
ordine =?'.
E non riesco prorpio a capire perchè. Grazie a chi mi aiuterà!!!!!
Il codice è il seguente:
..............................................
OleDbConnection dataConnection=new OleDbConnection();
try
{
OleDbCommand dataCommand=new OleDbCommand();
//Console.Write("Inserisci OrdineID ");
//string ordineID=Console.ReadLine();
dataConnection.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0; Data
Source=c:\\Programmi\\Microsoft Office\\Office10\\Samples\\NorthWind.mdb";
dataConnection.Open();
dataCommand.CommandText="SELECT * FROM Ordini WHERE ID ordine =? ";
dataCommand.Connection=dataConnection;
dataCommand.Parameters.Add("?ID ordine", OleDbType.Integer).Value= 10248;
OleDbDataReader dataReader =dataCommand.ExecuteReader();
while(dataReader.Read())
{
Console.WriteLine(dataReader[3].ToString());
}
dataReader.Close();
}
catch(Exception e)
{
Console.WriteLine("Errore di accesso al database "+e.Message);
}
finally
{
dataConnection.Close();
}
 
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 Ciao a tutti scrivo per la prima volta qui!! Hoi un problema con uan
Facciamo che sia anche l'ultima va! :D
-- 
-=[]=--- iAN CooG/HokutoForce ---=[]=-
"A n00b immersed in a newsgroup receives a up thrust force
equal to the volume of bullshits that he writes on it."

Newsgroup: it.comp.lang.c
Titolo: Cerco "graphics.h"

Cerco un include file "graphics.h", ossia quello con le funzioni
grafiche per DOS (setcolor, outtext, ...) che riesca però a
funzionare, anche, se possibile, con il Ms Visual C.
(la versione che ho io non ne vuol sapere).
E' necessario anche il file "graphics.lib"!(credo)
Grazie mille!



Mi sa che questa libreria non la troverai mai per il compilatore che
stai utilizzando. Infatti la 'graphics.h' é stata scritta dalla
Borland e funziona solamente per i vecchi compilatori dos, ad esempio
Turbo C o Turbo C++.
Il Ghenio
-----
Proteggeremo il mondo della devastazione!
Uniremo tutti i popoli nella nostra nazione!
Denunceremo i mali della verità e dell'amore,
Estenderemo il nostro potere fino alle stelle.
Jesse!
James!
Team Rocket pronto a partire alla velocità della luce.
Arrendetevi subito oppure preparatevi a combattere.
Miaaaoooo, proprio cosi'!
(Team Rocket)
-----
Newsgroup: it.comp.lang.c
Titolo: Funzioni esterne

Come si fa ad utilizzare in C delle funzioni scritte in Assembler?
Quando vado a linkare con Tlink i files .OBJ del programma in C e di quello
in Assembly mi da un errore.
Grazie
anNOSPA...@tin.it



 wrote in message
867jri$ngu$2...@nslave2.tin.it...

Se ci dici qual'è l'errore ti possiamo anche aiutare......
Sicuro di aver usato correttamente le convenzioni C
--
________________________________
Togliete NoSpaM per rispondermi
bye Brain

 Sicuro di aver usato correttamente le convenzioni C
No, per niente...il fatto è che ho iniziato a programmare in C da poco, e mi
dispiace molto in quanto mi sono reso conto della potenza di questo
linguaggio.
Comunque, l'errore è che quando vado a linkare gli OBJ del programma in C e
del programma assembler dove ci sono le funzioni che voglio chiamare dal
primo, il Tlink mi dice che le funzioni non sono definite.

 primo, il Tlink mi dice che le funzioni non sono definite.
Vai nel sito
http://www-lia.deis.unibo.it/Courses/FondII/MatDiFII.htm
nella parte relativa all'assembler, ci sono diversi documenti in .pdf.....
in uno di quelli ci sono spiegate le convenzioni che si devono usare,
ed in un altro ci devono essere alcuni esempi di funzioni scritte in
assembler da linkare ad un .obj vatto in C
Non ricordo quali, ma se ti interessa sfoglia un po' i documenti


Allora mi sa che è meglio che per ora ti concentri solo su C, che è già
molto...
Marco Iannaccone

 Comunque, l'errore è che quando vado a linkare gli OBJ del programma in C



Vado a memoria ... .
Nella nome della funzione assembler devi mettere un carattere di
sottolineatura all'inizio e nel sorgente che richiama la funzione deve
essere presente la stringa "C" all'inizio della funzione .
Ad esempio nel sorgente che dichiara la funzione assembler :
   extern "C" void AsmFunz(void) ;
Nel file che definisce la funzione assembler essa dovra chiamarsi 
                  _AsmFunz
ciao 

Grazie a tutti

Newsgroup: it.comp.lang.c
Titolo: scan di una stringa

salve. vorrei chidervi una cosa. mi dite come faccio ad utilizzare la
funzione
sscanf? più o meno, io so che serve a fare uno scan di una stringa!
Posso
fare lo scan di una stringa di dimensioni non ancora definite, e
definirle in
base al numero di caratteri contenuti nella stringa? Scusatemi se non
sono stato
molto chiaro. Grazie a tutti. DaN
-- 
Posted from 
c000-h011.c000.muc.cp.net
 [209.228.29.35] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

molto chiaro. Grazie a tutti. DaN
La funzione sscanf è equivalente alla funzione fscanf, solo che al posto di
lavorare su file lavora su stringhe.
Se non sai a cosa server fscanf e come la si usa, ti consiglio di leggere un
manuale di C in cui venga spiegata la libreria standard.
Se invece sai come funziona fscanf, beh, sscanf funziona allo stesso modo,
solo che al posto di un FILE * vuole un vettore di char, che deve essere
regolarmente terminato con un \0.
Lanugo
Newsgroup: it.comp.lang.c
Titolo: produrre doc Word con Visual C++

Salve a tutti,
devo produrre documenti WORD con Visual C++.
Non ho idea di quali librerie possa utilizzare, qualcuno sa se ne esistono? anche commerciali (essendo un formato proprietario non mi faccio illusioni)?
Oppure, qualcuno ha affrontato il problema è ha soluzioni alternative?
Io ne ho alcune, ma non so da dove cominciare:
- in Visual Basic produrre doc è facile, sarà possibile esportare un ACTIVEX o quel che è, da riutilizzare in C++?
- produrre .rtf, ma anche qui quali lib usare?
Grazie,
 Stefano

 produrre .rtf, ma anche qui quali lib usare?
cerca la codifica dell'RTF, mi pare ci sia qualcosa sul sito della microsoft
oppure prova su 
http://www.wotsit.org/
cmq non è molto difficile..
ciao
Fra

 devo produrre documenti WORD con Visual C++.
it.comp.programmare.win32
-- 
Gerolamo

 it.comp.programmare.win32

Newsgroup: it.comp.lang.c
Titolo: AIUTO: Tasti Funzione F1-12

Salve a tutti,
chiedo ai guru del c questo aiuto: ho la necessità di fare un programma in
c, ma non so come intercettare la pressione dei tasti funzione F1-12 magari
anche combinati con Alt e/o Ctrl. Come devo fare? So ad esempio che se
voglio gestire la pressione del tasto "esc" devo rifarmi al codice ASCII
027, ma non ho idea per i tasti F.
Qualcuno ha una tabella con i codici relativi a questi ultimi (se esiste)?
Potete, se non è di troppo disturbo, rispondermi con un esempio di codice c?
Esistono link che discutono di ciò?
Grazie e 1000 a tutti voi.

Scusate il post doppio.

 Grazie e 1000 a tutti voi.
Eccoti un sorgente di esempio ( gira in DOS e in Windows modalitŕ console )
che ti da il codice ASCII e di scansione per tutti ( o quasi ) i tasti della
tastiera.
Spero sia abbastanza chiaro e che ti possa esserti utile.
Ciao.
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
int main( void )
{
  int k1, k2;
  while(1)
  {
    k1=getch();
    if((k1=='q')||(k2=='Q'))
      break;
    else
    {
      printf("%02Xh ( %c ) ",k1,k1);
      // se k1 č 0 all'ora č un tasto speciale come F1 ecc.
      if(!k1)
      {
        // k2 contiene il codice di scansione del tasto
        k2=getch();
        printf("%02Xh ( %c )",k2,k2);
      }
      printf("\n");
    }
  }
}
-- 
Posted from  [217.57.38.6] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Marco Cascio wrote:

Scusami ma se devi fare una cosa non standard tanto vale usare
............
#include<conio.h>
#include<keys.h>
...............
int main()
{
    int key;
    while( (key!=getxkey())!=K_Escape))
    {
      switch (key)
      {
         case K_ERight : do something;break;
         case K_ELeft   : do something;break;
         .....................................................................
     }
    }
return 0;
}
Newsgroup: it.comp.lang.c
Titolo: 2 programmi per controllo sottostringhe non vanno...

Ciao a tutti,
allora ho due programmi per verificare se una stringa è contenuta tutta o in
parte in un altra.
il classico programmino sottostringa.
Ne ho fatti 2 leggermente diversi tra loro e nessuno dei due mi funziona!!!!
questo è il primo, il problema è che....mi crasha.
#include <stdio.h>
#include <string.h>
#define N 50
#define TRUE 1
#define FALSE 0
typedef char stringa[N];
int sottostringa(stringa s1,stringa s2){
 int i=0, j=0;
 int sottostring=FALSE;
 while ((s1[i]!='\0') || (s2[j]!='\0')){
   if (s1[i]==s2[j]){
    sottostring=TRUE;
    j++;
   }
   else{
    sottostring=FALSE;
    j=0;
   }
   i++;
 }
 return sottostring;
}
main(){
 stringa s1,s2;
 printf("Inserisci la prima stringa:");
 scanf("%s", s1);
 printf("Ora inserisci la seconda stringa:");
 scanf("%s", s2);
 if (sottostringa(s1,s2)==TRUE)
 printf("%s e sottostringa di %s\n",s2,s1);
 else
 printf("%s non e sottostringa di %s\n",s2,s1);
}
e questo è il secondo,che ha problemi con l'ultimo carattere,
cioè se chiedo se mobil è sottostringa di automobile mi dice di si
se chiedo se mobile è sottostringa di automobile mi dice di no!
#include <stdio.h>
#include <string.h>
#define N 50
#define TRUE 1
#define FALSE 0
typedef char stringa[N];
int sottostringa(stringa s1,stringa s2){
 int i=0, j=0;
 int sottostring=FALSE;
 if (strlen(s2)>strlen(s1))
 sottostring=FALSE;
 else{
  while (i<strlen(s1)) {
   if (s1[i]==s2[j])
    j++;
   else
   if (j<strlen(s2)) {
    sottostring=FALSE;
    j=0;
   }
   else {
   sottostring=TRUE;
   }
   i++;
  }
 }
 return sottostring;
}
main(){
 stringa s1,s2;
 printf("Inserisci la prima stringa:");
 scanf("%s", s1);
 printf("Ora inserisci la seconda stringa:");
 scanf("%s", s2);
 if (sottostringa(s1,s2)==TRUE)
 printf("%s e sottostringa di %s\n",s2,s1);
 else
 printf("%s non e sottostringa di %s\n",s2,s1);
}
Spero mi possiate aiutare! Grazie.


Questo penso di averlo corretto cambiano le rispettive righe nel modo
seguente:
    while (i<=strlen(s1)) {
      if ((s1[i]==s2[j]) && s2[j])
Che succedeva?
Che si raggiungeva la fine di entrambe le stringhe, i caratteri erano sempre
uguali, quindi si eseguiva sempre l'istruzione j++ ma poi si usciva dal
ciclo perche', appunto, si aveva raggiunto la fine della stringa, senza mai
passare nel ramo else del primo if, e quindi senza mai passare nel ramo else
del secondo if, dove si assegna TRUE a sottostring.
A parole e' difficile ma spero di essere stato spiegato :-)
Puo' darsi che abbia sbarellato, ma magari ti ho dato qualche elemento su
cui pensare.
Ciao,
Ema

 cui pensare.
Tutto perfettissimo!!!
Grazie
(ora ne ho postato uno nuovo piu difficile....)
Newsgroup: it.comp.lang.c
Titolo: Media numeri generati casualmente [C++]

 Mi servirebbe un programma in C++ [...]
E allora perche` hai postato qui?
-- 
Enrico `Trippo' Porreca

 penso io ad adattarli)? Voi come lo fareste?
per generare numeri casuali di un dado usi rand()%7 (il resto della 
divisione di un numero casuale per 7) che ti genera numeri casuali tra 0 e 
6, mettendolo, insieme alle altre operazioni che riterrai opportune, dentro 
un for(i=0;i<n;i++). Io in C farei cosi', non conosco il C++ ma credo che 
sia ampiamente riadattabile :)

 per generare numeri casuali di un dado usi rand()%7  
anzi (rand()%6)+1.
Facendo come avevo detto prima, cioe' rand()%7, ti generava anche lo 0.

> Perchč, dove avrei dovuto postare?
per esempio   it.comp.lang.c++

 utilizzando i bit alti 
Grazie, lo ignoravo totalmente :)

Newsgroup: it.comp.lang.c
Titolo: scanf impiccione...

In un programmino sotto gcc linux un utente deve inserire singolarmente dei
caratteri... utilizzando una serie di scanf("%c",pippo) mi succede che
l'invio alla fine dell'inserimento di un carattere mi venga letto anche
dallo scanf successivo.
Qual e' il metodo migliore per risolvere?
Grazie, Nicola

 scanf("%c",pippo)
scanf("%c", &pippo)
-- 
Rhymes
rhy...@myself.com
" ride or die "

:

Standard:
/* leggi un char: piu' comoda e veloce la getchar */
c = getchar();
/* svuoti il buffer */
while (getchar() != '\n')
    ;
Non standard: come prima per la lettura, pero' potresti trovare un
metodo diverso per svuotare il buffer della tastiera.
Nota: non ricorrere a fflush(stdin) primo perche' e' undefinet
behaviour, quindi gli effetti non sono prevedibili, secondo perche'
l'effetto sotto linux e' "non fare nulla" :)
-- 
Mox
"Trust the programmer."
"Don't prevent the programmer from doing what needs to be done."
"Keep the language small and simple."
"Provide only one way to do an operation."

 l'effetto sotto linux e' "non fare nulla" :)
Piuttosto originale come discorso :)
Grazie, Nicola

 Grazie, Nicola
 
Ciao Nicola, in pratica Mox ti ha fatto un sunto di quanto detto nel
newsgroup su funzioni come scanf().
Se dai un'occhiata ai post più vecchi, o dal tuo newsreader o tramite
google->gruppi, troverai un sacco di info utili.
Setbuf() non l'ho mai utilizzato, ma da quel che leggo dal man si,
potrebbe tornarti utile.
Trovo comunque meno complesso l'uso del ciclo mangia\n con getchar.
Ciao,
Riccardo

Piuttosto originale come discorso :)
Perche' originale?



Non e' il migliore, io ogni tanto lo uso :
printf ("%c%*c",pippo) ; 
Naturalmente se pippo e' l'indirizzo della variabile char, 
altrimenti sarebbe giusto mettere un &pippo .
Ciao
Newsgroup: it.comp.lang.c
Titolo: Compilare con Visual C++ 6, come?

al politecnico uso Turbo C per dos della borland
come posso compilare gli stessi programmi usando Visual C++6 microsoft sotto
Windows 2000? devo per forza installare windows me che compila programmi
dos?
grazie per l'aiuto
Mario

 dos?
2000 ed me sono 2 cose diverse.
Visual C++ 6.0 genera al + applicazioni consolle 32
Puoi Installare Visual C++ 6.0 sia sotto 2000 sia sotto Me ( ma ti
sconsiglio vivamente Win Millennium Bug Edition)
Se hai usato borland e vuoi mantenere lo stesso progetto dovrai rimappare
molto.
Infine come "The Follet" ama ribadire sei ... siamo OT
Newsgroup: it.comp.lang.c
Titolo: help esercizio

Ciao a tutti. Sto imparando il linguaggio C e ho trovato questo
esercizio:
Scrivere un programma che prenda in input un numero di cinque cifre,
lo spezzetti nelle sue singole cifre e le visualizzi ognuna separata
dall'altra da tre spazi. Per esempio, se l'utente digitasse 42339, il
programma dovrebbe visualizzare:
4   2   3   3   9


Non mi è chiaro come effettuare l'operazione di "spezzettamento".
Il seguente programma altro non fa che copiare il numero inserito...
Vi chiedo per cortesia qualche aiuto. Grazie
#include <stdio.h>
main()
{
    int x;
    printf("Inserire un numero di cinque cifre:\n");
    scanf("%d", &x);
    printf("%d\n\n", x);
    system("pause");
}

 
se l'esercizio si limita a quello scritto, IMHO si fa prima acquisendo il 
numero come stringa invece che come intero.
Ciao Jack
-- 
Eroi non si nasce, ti incastrano
- Jim Belushi

 numero come stringa invece che come intero.
Grazie

> numero come stringa invece che come intero.
int main(void)
{   
 
    char stringa[10];
    int i;
 
    	printf("scrivi un numero (max 9 char):");
    	gets(stringa);
    	for(i=0;i<strlen(stringa);i++)
    	{
    	    	printf("%c ",stringa[i]);
    	}
    system("PAUSE");
  return 0;


#include <stdio.h>
int main()
{
    int numero;
    while (1) {
      printf("Inserisci un numero di 5 cifre: ");
      scanf("%d", &numero);
      if (numero < 10000 || numero > 99999)
        puts("Ho detto 5 cifre!!!n");
      else break;
    }
    printf("%d   %d   %d   %d   %dn",
      numero / 10000,
      (numero % 10000)/1000,
      (numero % 1000) / 100,
      (numero % 100) / 10,
      (numero % 10));
    return 0;
}
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 }
int main(void) {
   while(1)
     printf("%c   ",getchar());
}
E.
Newsgroup: it.comp.lang.c
Titolo: mi presento

Ciao a tutti,
questo è il mio primo post in questo NG, mi presento:
mi chiamo Salvatore, ho 22 anni e sono uno studente di Informatica
(università di Bari);
sto studiando il C per l'esame di ASD (algoritmi e strutture dati) e devo
implementare alcune strutture dati (che ho già implementato in Pascal).
Passare dal Pascal al C per i primi giorni è stato un po difficile
(soprattutto per il passaggio dei parametri alle funzioni e per l'uso molto
frequente dei puntatori), comunque, un altra cosa che ancora non ho capito è
questa:
Come si dichiarano i sub-range in C? Ad esempio, in Pascal posso dichiarare:
CONST maxlung = ...;
TYPE    subrange= 0..maxlung;
Come si traduce questo in C?
Poi vorrei sapere se esistono le FAQ del NG, e se qualcuno può dirmi dove
posso trovare le implementazioni di struture dati (liste, pile, code,
insiemi, dizionari, alberi, ecc.).
Ringrazio anticipatamente chi mi sarà d'aiuto
Ciao Salvatore

Come si traduce questo in C?
Non si traduce :)  Se proprio non vuoi mai passare "maxlung" fai il
controllo al momento di inserire.
In Pascal per quel che ricordi io questo controllo non veniva mai
fatto, quindi potevi benissimo assegnare 14 quando avevi detto che
potevi avere solo numeri da 0 a 10.
Mox

Come si traduce questo in C?
In C non esiste il concetto di "subrange" come in Pascal.
Il C e' molto + scarno del Pascal.
-- 
Andrea Laforgia (
walkie...@libero.it
)
"Usenet is a strange place" [Dennis Ritchie]

Newsgroup: it.comp.lang.c
Titolo: char* to int

Un saluto a tutto il ng, volevo chiedere se esiste una funzione ANSI
che faccia la conversione di un numero da un formato char ad uno int.
Se esiste, funziona anche con float?
Grazie a chi risponderà, ciao a tutti.
Salvatore.

Salvatore ha scritto:

atoi() int
atof() float
-- 
Kleidemos
Un computer a un altro quando si incontrano:
"Ciao, come ti boota oggi???"

Newsgroup: it.comp.lang.c
Titolo: Programmare le Eprom

Ciao ragazzi,
conoscete un sofware per programmare le eprom o i pic in C o C++?
mi farebbe molto comodo, grazie.
byez
Klayman
_________________________________________________________________________
Get Your Private, Free E-mail from MSN Hotmail at 
http://www.hotmail.com
.
-- 
Posted from [137.204.72.85] by way of 
f164.law10.hotmail.com
 [64.4.15.164] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 mi farebbe molto comodo, grazie.
 Dipende anche dal sistema per il quale le devi programmare :)
Ci sono una marea di compilatori per ogni cpu, alcune volte messi a
disposizione dagli stessi produttori.

Newsgroup: it.comp.lang.c
Titolo: Connessione ODBC in C

Ciao a tutti!
Sapete dove trovo documentazione al fine di utilizzare un database
tramite driver ODBC in C?
Oppure qualcuno ha un paio di righe di code da mostrarmi?
Grazie di cuore

 google in inglese.
Newsgroup: it.comp.lang.c
Titolo: Programma distribuito

Ciao a tutti,
vorrei sapere se qualcuno ha un link sull'implementazione di un programma
tipo SETI online. Vorrei realizzare la possibilità di calcolare qualche
classico algoritmo tipo quello delle 8 regine nella mia LAN o ancora meglio
su Internet.
Conosco  qualche cenno di MPI ma preferirei capire come farlo col solo C, su
Linux. Avrei intenzione anche di creare un'interfaccia in Tk.
Grazie in anticipo,
ale_s


Non puoi farlo con il solo standard C, che e` l'argomento di discussione 
da queste parti, e che non ha supporto alcuno per lo sviluppo di 
applicazioni distribuite. Hai bisogno di estensioni specifiche (vedi 
it.comp.os.linux.development).

Newsgroup: it.comp.lang.c
Titolo: stderr

Salve.
Una domanda scema. Quando un comando, in DOS, sbatte il suo output non
su stdout ma su chissa' che altro canale, come faccio a redirigerlo su
un file o su more ?
Su Unix (W UNIX !!!) c'e' il comodissimo 2>&1 ma sul maledetto dos
!?!?!?
Bye
PC
############## FREE CHIORI ##############
(Chiori e' un pirata telematico agli arresti domiciliari
da 2 mesi. Esprimi la tua solidarieta' inserendo
queste righe al termine dei tuoi messaggi)
############## FREE CHIORI ##############

 un file o su more ?
In generale non si può.
EMG

 
Ciao, Francesco
-- 
+-------*Le tre leggi del buon utente*-------+
|============================================|
+-1ř:Un utente non puo' nuocere al suo PC ne'|
|    tramite la sua colpevole inerzia permet-|
|    tere che il suo PC subisca un danno.    |
+-2ř:Un utente deve soddisfare le richieste  |
|    di sistema a meno che queste non contra-|
|    stino con la prima legge.               |
+-3ř:Un utente deve pensare ai suoi interessi|
|    installando il software di cui ha biso- |
|    gno a meno che questo non contrasti con |
|    la prima e la seconda legge.            |
|============================================|
+-Legge Zero---------------------------------+
|Un utente non puo' installare Windows, o cau|
|sera' la fine del suo PC e la rovina dell'u-|
|manita' !!!! Cobra(
franc...@iol.it
)      |
|                  (
maraf...@xoommail.com
)|
|============================================|

Newsgroup: it.comp.lang.c
Titolo: io

Salve mi sarei curioso di vedere il codice.
absi...@inwind.it
sostituisci ab con an.
Ciao



Scusa...?
by LjL
ljl...@tiscalinet.it

scusate voi ho sbgliato volevo rispondere
Newsgroup: it.comp.lang.c
Titolo: problema client-server in c (linux)

Ciao a tutti,
ho un piccolo problema con un programma.
Sto cercando di realizzare un "cat" da un client verso un server, 
mantenendo la connessione aperta anche dopo il trasferimento dei dati.
Se non chiudo la connessione con close(sd), non rieco ad uscire dal read 
del client, che aspetta dei dati oppure uno "0".
Soltanto la chiusura della connessione da parte del server mi 
restituisce "0" e il client esce dal read.
E' possibile aggirare il problema, inviano al client un EOF senza 
chiudere la connessione?
Server:
....
	while(1)
	{
		bytes = read(fd, buf, BUF_SIZE);	/* legge dal file */
 
		if(bytes <= 0)		/* controlla la fine del file */
			break;
		write(sd, buf, bytes);	/* scrive sul socket */
	}
	close(fd);			/* chiude file */
	close(sd);			/* chiude connessione */
....
Client:
....
	while(1)
	{
		bytes = read(sd, buf, BUF_SIZE);	/* legge dal socket */
 
		if((bytes <= 0))	/* controlla la fine del file */
			break;		/* esce dal loop */
 
	write(1, buf, bytes);		/* scrive sullo standard output */
	}
....
Grazie,
ciao.

 del client, che aspetta dei dati oppure uno "0".
io userei una bella select sul socket per risolvere il problema.
ciao


provo,
grazie!
Newsgroup: it.comp.lang.c
Titolo: Alcune domande in generale.

Buonasera a tutti.
1) I commenti introdotti da // non sono validi in C, vero?.
2) i puntatori far ed huge sono standard (in quanto il mio compilatore non
li supporta)?.
Ringrazio.

 compilatore non li supporta)?.
  No, non sono standard e mai lo saranno. Inoltre, dato che ormai quasi
tutte le piattaforme supportano l'indirizzamento "flat", non e` piu`
necessario.
	Alla prossima,
		Marco

li supporta)?.
No, non sono standard.
--
Andrea Laforgia (ICQ 87230455)
------------------------------ 
#exclude <windows.h>

Ringrazio tutti.
Sapete anche dove posso reperire lo standard del linguaggio C?
E soprattutto dove sono le faqs del ng così per un po' non vi assillo?
Distinti Saluti.
Francesco Agostino Fassi.

Sapete anche dove posso reperire lo standard del linguaggio C?
E' a pagamento.
Sul documento FAQ di comp.lang.c c'e' l'indirizzo preciso
dell'istituto ANSI.


 li supporta)?.
No, non sono standard.
EMG
Newsgroup: it.comp.lang.c
Titolo: packing portabile

Ciao, sto realizzando un programma che per vari motivi deve leggere e 
scrivere delle immagini bitmap, quindi devo fare in modo che le struct 
che uso abbiano come dimensione esattamente 14 e 40 bytes. Purtroppo la 
dimensione della prima diventa 16 byte per arrotondare ai 32 bit e su un 
altro tipo di sistema anche la seconda potrebbe cambiare dimensione. Per 
evitare questo usavo __attribute__((packed)) dopo la definizione della 
struct, ma questo non e' portabile nemmeno tra diverse versioni di gcc, 
e quindi non mi aspetto che funzioni su altri compilatori. Qualcuno mi 
suggerisce un modo portabile per avitare questo cambiamento di 
dimensioni? Un invito gmail al primo che mi risponde :-)
-- 
Devaraja (Xdevaraja87^gmail^c0mX)
Linux Registerd User #338167
http://counter.li.org

 al primo che mi risponde :-)
Umh, problemi con lo struct alignment? Ovviamente come gia' tu hai detto
esistono le opzioni del compilatore o le extensions dei vari
compilatori.
Certamente non e' una soluzione portabile.
Una soluzione molto piu' portabile e' quella di usare un array:
unsigned char bitmap[14] = {0};
l'array poi puoi compilarlo con dati validi tramite struttura di
puntatori o, a mio avviso melgio, tramite funzioni.
WriteWidth(bitmap, 48);
che equivale a quello che fai ora:
bitmap.width = 48;
con la differenza che eviti i problemi di cui parlavi!
HTH,
Tommaso
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 
Anche questa sembra una buona idea.. va bene l'invito lo do anche a te 
se vuoi :-) Se hai tempo e voglia mi posti un po' di direttive che ti 
ricordi cosi' mi risparmi ore di google.


Tommaso Galleri ha scritto:

Grazie, sembra una buona idea... se mi posti un indirizzo valido ti 
mando l'invito che ho promesso :-)


 ricordi cosi' mi risparmi ore di google.
Non credo ti servano molto quelle che conosco io.  Sono per la 
maggioranza per compilatori embedded.  Anche il compilatore Intel/CadUl 
a cui mi riferivo erano per microprocessori 186.
In ogni caso #pragma pack() vale anche per vecchi compilatori DOS (forse 
il Borland?) e poi ricordo #pragma align n per Microtek, #pragma 
align(n)  e le varie direttive align n e .align n per i macro assemblatori.
Spiacente di non poterti dare maggiori indicazioni.

Newsgroup: it.comp.lang.c
Titolo: less NomeDirectory

L'ambiente e' Linux
vorrei fare un programmino che effettui la copia di un file il quale
puo' essere un file qualsiasi, ad esempio copiare il contenuto di
una directory(non quello che visualizza "ls" ma come effettivamente
e' scritta la directory su disco ovvero l'ipotetico output
di  "less NomeDirectory") in un file di output normale (di testo)
con copy-write non riesco l'errore segnalato da perror() e' ovviamente
"is a directory" come faccio?????

Ciao Pha,

  Usa le funzioni di accesso ai file di basso livello (open(), read(),
ecc.). Sul K&R c'e` un ottimo esempio di come fare.
	Alla prossima,
		Marco

 Marco
Ma lo ho fatto!!
fd=open(argv[1],O_RDONLY);
while ((contatore=read(old_file,buffer,sizeof(buffer))) >0)
write(new_file,buffer,contatore);
cos'e' il K&R?

ecc.). Sul K&R c'e` un ottimo esempio di come fare.
No, sotto linux quel metodo NON funziona. 
Giocando con man, sembra che la open su di una directory non da' problemi,
ma la read non legge !!! Bisogna utilizzare la readdir(); pero' di readdir
ne esistono due:
READDIR(2)          Linux Programmer's Manual          READDIR(2) 
NAME
	readdir - read directory entry 
SYNOPSIS       
	#include <unistd.h>
	#include <linux/dirent.h>       
	#include <linux/unistd.h>
	_syscall3(int, readdir, uint, fd, struct dirent *, dirp, uint, count);
	int readdir(unsigned int fd, struct dirent *dirp, unsigned int count);  
READDIR(3)          Linux Programmer's Manual          READDIR(3) 
NAME
	readdir - read a directory 
SYNOPSIS       
	#include <sys/types.h>
	#include <dirent.h>        
	struct dirent *readdir(DIR *dir); 
Il metodo ufficiale ( sotto Linux ) consiste in una opendir(3) ed una
readdir(3)
man 3 opendir
man 3 readdir

 No, sotto linux quel metodo NON funziona.
  Se Linux e` un sistema UNIX-like, funziona. Le directory sono i-node
come gli altri file, quindi sono accessibili dalle funzioni della API
del sottosistema di file system del sistema operativo.
  In effetti, basta andare a guardare nel codice sorgente della glibc
per rendersene conto.
	Alla prossima,
		Marco
Newsgroup: it.comp.lang.c
Titolo: AIUTO abbastanza urgente...(x esperti)

Questo e' il problema:
Devo scrivere programmi in C usando anche le librerie GLUT.
Ho scaricato le glut 3.7.6 ma non riesco a installarle e far girare un
semplice prog.
Uso Dev-C++.
Allora:
glut.def  va in Dev-c++\lib
glut.h  va in  Dev-c++\include\gl
glut32.dll   va in windows\system
glut32.lib ??? dove va?
Provando a far girare un prog che disegna un cubo mi compare la finestra
"Compiler and Linker Output" con le seguenti voci:
C:\WINDOWS\TEMP\ccFWthgb.o(.text+0x17):cube.c: undefined reference to
`__glutInitWithExit'
C:\WINDOWS\TEMP\ccFWthgb.o(.text+0x33):cube.c: undefined reference to
`__glutCreateWindowWithExit'
C:\WINDOWS\TEMP\ccFWthgb.o(.text+0x57):cube.c: undefined reference to
`__glutCreateMenuWithExit'
C:\WINDOWS\TEMP\ccFWthgb.o(.text+0x79):cube.c: undefined reference to
`_imp__glClearColor'
C:\WINDOWS\TEMP\ccFWthgb.o(.text+0x8c):cube.c: undefined reference to
`_imp__glShadeModel'
C:\WINDOWS\TEMP\ccFWthgb.o(.text+0xb1):cube.c: undefined reference to
`_imp__glClear'
ecc. ecc...
Aiutatemi x favore,altrimenti non riesco ad esercitarmi!!!
Grazie in anticipo!

`__glutInitWithExit'
l'errore è dato perchè il linker non riesce a risolvere la
chiamata a quelle funzioni
--
Lawrence "Rhymes" Oluyede
rhy...@myself.com
Redattore di HiT
http://hit.edengames.net
Newsgroup: it.comp.lang.c
Titolo: Riempimento array 2D

Ciao a tutti :)
ho un array 2D dichiarato nella main:
 int nArray2D[N][N];          // L'array 2D
vorrei creare una funzione generica che mi riempisse l'array 2D con valori
random:
void Array2D_Rand_i(int *nArray[], int nArray_SizeM, int nArray_SizeN);
ma quando vado ad effettuare la chiamata:
 //- Riempimento array 2D
 Array2D_Rand_i(nArray2D, N, N);
Il compilatore (credo giustamente) mi da errore:
: passing arg 1 of 'Array2D_Rand_i' from incompatible pointer type
Come posso risolvere questa situazione?
Il problema grande e' che non conosco nessuna delle due dimensioni a
priori (anche se tratto solo matrici quadrate).
Grazie a chiunque per una risposta!
Fede
!

 
Sbagli candeggio :-D
la tua funzione va scritta cosě:
void Array2D_Rand_i(int *nArray, int nArray_SizeM, int nArray_SizeN);
e all'interno, con un ciclo, scrivi in nArray con quest'espressione:
*(nArray + i*nArray_SizeM + j) = (tua espressione);
dove ovviamente i varia tra 0..nArray_SizeM-1 e j varia tra
0..nArray_SizeN ...

 0..nArray_SizeN ...
Oopss ... j varia tra 0..nArray_SizeN-1 ... lapsus di scrittura!

 void Array2D_Rand_i(int *nArray[], int nArray_SizeM, int nArray_SizeN);
Prova con
void Array2D_Rand_i(int * * nArray, int nArray_SizeM, int nArray_SizeN);
Ciao,
Ema

 ha scritto nel messaggio Sbagli candeggio
:-D
la tua funzione va scritta così:
void Array2D_Rand_i(int *nArray, int nArray_SizeM, int nArray_SizeN);
e all'interno, con un ciclo, scrivi in nArray con quest'espressione:
*(nArray + i*nArray_SizeM + j) = (tua espressione);
dove ovviamente i varia tra 0..nArray_SizeM-1 e j varia tra
0..nArray_SizeN-1 ...

 funzionare correttamente.
E' che, se hai seguito i consigli di Tony, hai dichiarato il parametro come
int *
e l'array che gli passi come
int[N][N], che e' paragonabile ad un int * *
e
int * != int * *
Ciao,
Ema
Newsgroup: it.comp.lang.c
Titolo: Codice per puntatori

Dovo posso trovare del codice e listati dove poter studiare e capire bene
l'utilizzo dei puntatori?
grazie
There is NOSPAM in my signature ;-)

 l'utilizzo dei puntatori?
Consiglio a tutti i cultori del C una gitarella a
http://www.lysator.liu.se/c/
 ; in particolare il sito contiene (sotto
"other sources") riferimenti a vari tutorials.  Quello che ti
interessa e' "A tutorial on pointers and arrays in C":
http://www.netcom.com/~tjensen/ptr/pointers.htm
 , o la sua welcome
page 
http://www.netcom.com/~tjensen/ptr/cpoint.htm
 .
-- 
Maurizio Loreti                      
http://wwwcdf.pd.infn.it/~loreti/mlo.html
Un. of Padova, Dept. of Physics - Padova, Italy          
lor...@padova.infn.it
Newsgroup: it.comp.lang.c
Titolo: Crivello di Eratostene con campi di bit.

Ciao.
Un esercizio mi chiede di implementare l'algoritmo del crivello di 
Eratostene utilizzando i campi di bit per memorizzare i numeri da 
controllare. 
Poichè l'algoritmo contiene dei cicli, che utilizzerei per individuare i 
multipli dei numeri primi, mi stavo domandando come posso fare questo, 
visto che non credo ci sia un modo per fornire un'istruzione del tipo: 
poni ad uno il sesto campo di questa struttura.
Vi incollo il testo dell'esercizio, poi vi spiego meglio i miei dubbi. 
***
(Il crivello di Eratostene) Implementate l'algoritmo del crivello per i 
numeri primi, impiegando un array di strutture dove ogni struttura 
contiene una parola suddivisa in campi di bit. Su una macchina con 
parole di 4 byte è possibile utilizzare un array di 1.000 elementi per 
stampare tutti i primi minori di 32.000. Ogni bit rappresenta un intero 
ed è inizializzato a zero. L'idea è quella di depennare tutti i multipli 
di un dato primo, ponendo a 1 il bit corrispondente. Si parte dal numero 
primo 2: a partire da 4, si pone a 1 un bit ogni due. Si considera 
quindi 3, il cui bit è rimasto a 0: a partire da 6 si pone a 1 un bit 
ogni tre. Il bit corrispondente a 4 è 1, e quindi non viene considerato. 
Il bit corrispondente a 5 vale 0, partendo da 10 si pone a 1 un bit ogni 
5. Alla fine di questo procedimento i numeri primi sono quelli che 
corrispondono ai bit a zero.
***
Bene. Consideriamo, ad esempio, il primo elemento di questo array di 
mille elementi, contenenti ciascuno una struttura organizzata in 32 
campi da un bit. Il secondo campo corrisponderebbe al numero 2, che 
essendo primo, va lasciato a zero. A questo punto, come glielo dico al 
programma di porre a zero anche il quarto, il sesto, l'ottavo campo e 
così via? 
Grazie e un saluto a tutti.
Bizio.

 così via? 
Non devi mettere 32 campi nella struttura ma un solo campo a 32 bit.


 così via?
no il quarto e il sesto e così via devi porli a uno
1. azzeri tutto l'array
2. metti a 1 il primo bit perchè l'uno non è considerato primo
3. addesso parte il ciclo che per ogni numero analizzato,
   e che compare con bit=0, mette ad 1 tutti i bit che rappresentano
   i multipli di quel numero, numero escluso.
4. se i numeri nell'array sono 32000 il ciclo andrà da 1
   a 16000, tanto multipli di 16001 non ce ne sono.
5. se usi i campi di bit penso che dovrai utilizzare uno
   switch con 32 opzioni, viene meglio usando un array
   di interi e settare i bit con gli operatori sui bit.
spero di esserti stato utile
ciao
-- 
Non si sa mai in quale modo appaia il genio; o nel profondo
come Bach, o nella leggerezza come Mozart, o nel profondo e
nella leggerezza come Beethoven.
                                             - R. Schumann -