mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c
Titolo: operatore ternario ?

ciao, volevo farvi una domanda sull'operatore if ternario.
non ho capito perche' all'interno dell'if ternario né come prima istruzione, né
come seconda posso mettere un'istruzione return???
ad esempio vorrei sapere se la variabile char scelta vale '0' e allora esco
dalla procedura, o se vale != 0 e allora continuo nel sottoprogramma....
se metto l'istruzione return, il compilatore mentre lo compila, lo vede come
un errore, si incacchia e non mi fa andare avanti con il linker!
es.
int miaproc(void)
{
       (scelta == '0') ? return (-1) : proseguo...;
}
il compilatore e' il MS Visual c++ 6.0 e l'errore che il compilatore mi segnala
e': error C2059: syntax error : 'return'
posso anche fare cosi', ma dato che la return la metto a fine funzione, dopo
posso fare poche cose, in poche parole mi sembra strano il modo come e'
stato concepito questo aspetto dell'if ternario
quello che non mi quadra e' che ovviamente l'errore e' solo di SINTASSI E
NON DI LOGICA: questo perche' se non voleva l'istruzione return, allora  non
l'avrebbe dovuta digerire neanche neanche in questa seconda forma e quindi
non capisco la logica che porta a rifiutare il primo esempio e ad accettare
il secondo
sono sicuro che quello che ho detto e' una sciocchezza pero' ditemi cosa ne
pensate voi, e' uno dei tanti modi per crescere
int miaproc(void)
{
       return ((scelta == '0') ?  (-1) : proseguo..).; /* cosi' va bene */
}
ciao e grazie in anticipo!!!
-- 
Posted from 
rm4-527.dialup.tiscalinet.it
 [62.11.133.207] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 }
Questa, come espressione, va bene, perchè return accetta come argomenti
il valore da far ritornare alla routine, e quindi il valore che viene
ritornato da "?:" viene utilizzato per tale scopo; non và bene però per
quello ch tu vuoi fare, perchè in ogni caso il return viene valutato, e
quindi si esce in ogni caso dalla funzione. Per il tuo scopo basta un
if:
int miaproc(void) {
   if (scelta=='0')
      return 0;
   //...
   return 1;
}
In pratica si entra nell'if solo se scelta è il carattere '0', quindi
viene valutato il return e si esce dalla funzione, altrimenti vengono
valutati anche tutti gli statement successivi all'if.
Un ultima cosa, tanto per puntualizzare: la variabile scelta, suppongo,
viene inserita da input fuori dalla funzione miaproc, ed in tal caso
devi passarla come parametro alla funzione (a meno che scelta non sia
una variabile globale, ma in tal caso sarebbe cattivo stile si
programmazione).
Ciao,
Cecco
Newsgroup: it.comp.lang.c
Titolo: Aiuto per esercizio

Ragazzi non riesco a capire da cosa è  causato l' errore rilevato in fase di
compilazione.
Il mio obbiettivo è quello di realizzare una funzione che leggendo da un
file il numero delle stanze di un percorso,la stanza di partenza e tutte le
relazioni tra le stanze , carichi queste ultime in una lista di adiacenza:
codice :
 struct nodo {
         int vertice;
               struct nodo *next;
               };
 struct nodo *adj; /* Puntatore alla lista di adiacenza rappresentante il
grafo*/
int numerostanze,stanzadipartenza;
 void caricamento_lista_stanze(char *nomefile)
 {
 int buffer[2];
 struct nodo *t;
 FILE *fileambienti;
 int i;
 if((fileambienti=fopen(nomefile,"r"))!=NULL)
  {
   if(!ferror(fileambienti))
    {
       fscanf(fileambienti,"%d %d",&numerostanze,&stanzadipartenza);
         adj=(struct nodo *)malloc(numerostanze * sizeof(struct nodo*));
         for(i=0;i<numerostanze;i++) adj[i]=NULL;
         while(!feof(fileambienti))
          {
             t=(struct nodo *) malloc( sizeof (struct nodo));
               fscanf(fileambienti,"%d %d ",&buffer[0],&buffer[1]);
               t->vertice=buffer[1];
               (t->next)=(adj[buffer[0]]);
               adj[buffer[0]]=t;
            }
      }
   }
 fclose(fileambienti);
}
L' errore me lo segnala alla riga  :  for(i=0;i<numerostanze;i++)
adj[i]=NULL;
Io alloco lo spazio per numerostanze-puntatori di tipo nodo , quindi perchè
non posso fare puntare questi puntatori a Null ? (Ehm... scusate la
ripetizione)
Qualcuno mi può aiutare ?
Grazie

         for(i=0;i<numerostanze;i++) adj[i]=NULL;
C'e' un erorre ci concetto: cerchi di fare 2 cose diverse:
- prima definisci ADJ come una lista di struct nodo
- poi lo usi come un array di puntatori a struct nodo
Noti la differenza?
Per come hai definito tu ADJ, ADJ[i] e' un nodo e ha quindi senso
assegnargli un nodo, non certo NULL.
Avresti potuto assegnargli NULL se ADJ fosse stato definito come:
<CODE>
struct nodo ** adj;
</CODE>
Non capisco cosa vuoi fare pero'. Quell'assegnamento a NULL (a parte
la sintassi sbagliata) ha senso solo se tu immagini la tua struttura
dati come:
a) un array di puntatori a struct nodo
b) una lista di puntatori a struct nodo
Tu invece vuoi fare una lista (o un'array, ma il discorso e' analogo)
di struct nodo.
Sono 2 strutture dati diverse.
Nota: questo benedetto cast dopo la malloc volete toglierlo? E'
dannoso e introduce solo errori subdoli... si, nel K&R lo mettono, ma
il loro libro e' uscito prima che fosse approvato il C89 e quindi non
potevano saperlo allora; qui trovate le opportune correzioni da
apportare al libro: 
http://cm.bell-labs.com/cm/cs/cbook/2ediffs.html
.
Mox :)

 struct nodo ** adj;
Grazie ancora .
Newsgroup: it.comp.lang.c
Titolo: Come si pronuncia #define ?

Ho visto di sfuggita alcune v/lezione del nettuno
su rai-sat
Non sono riuscito a capire
come il prof pronunciava #define
define lo pronunciava "defiin" ma il "#" non ricordo.
Come si legge correttamente "#define" ?
Grazie

 
cancelletto-defàin ?

 Come si legge correttamente "#define" ?
Io l'ho sempre pronunciata "defain".
Il carattere # si dice "sharp" in inglese, ma personalmente l'ho sempre 
tralasciato.

 Io l'ho sempre pronunciata "defain".
Quasi giusto. :)
Max

 
Non è esatto. 'Sharp' (Unicode 0x266F) è il simbolo del diesis nella 
notazione musicale. Per quanto simile, non coincide con simbolo #. (Per 
inciso, 'diesis' in inglese è un altro simbolo ancora che non c'entra con 
la musica.)
Il simbolo # viene chiamato number sign, pound sign, hash, crosshatch, 
octothorpe. Non so come lo chiamino i programmatori C/C++.
Max

 notazione musicale. Per quanto simile, non coincide con simbolo #.
Ho sempre sentito pronunciare C# come "C sharp" quindi mi sono rifatto a 
questo.  Ho anche sempre visto usare # come "sharp" (ovvero come diesis 
musicale).  In realtŕ, su come si pronunci "#define" non ho mai 
approfondito piů di tanto ;-)  Comunuque grazie del chiarimento ;-)

 octothorpe. Non so come lo chiamino i programmatori C/C++.
Ho rivisto le lezioni
"#" lo chiama "fregno" !!!!!!!!!

 Come si legge correttamente "#define" ?
qua in inghilterra lo pronunciamo:
hash define
dove define si pronuncia +o- difain.
Tommaso Galleri
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Max
Credo che venga comunemente chiamato pound in america e hash in
inghilterra.
Ho notato che il simbolo # sulla tastiera del telefono, quando ti
chiedono di premerlo e' sempre chiamato hash in Inghilterra e pound in
America.
Certamente nel contesto di :
#define
in inghilterra, nelle ditte per cui ho lavorato, lo hanno sempre tutti
pronunciato:
hash define


>>> ma il "#" non ricordo.
Wow, quindi il tuo prof legge:
#define
come:
fregno defiin
No comment.


 Mah, io negli USA l'ho anche sentito chiamare number sign/
Possibilissimo, e' uno dei suoi nomi, ma... a quale contesto ti
riferisci?


 Io credo la seconda, ma non lo so, lavoro in UK e non negli USA!
Facendo una ricerca con google pare proprio che in america dicano:
pound define
per leggere:
#define
come sospettavo.
In italiano # si pronuncia "cancelletto", ma quando ero in Italia
leggevo
#define
semplicemente come
define
e facevo prima.
In inghilterra tutti i miei colleghi (ed io) diciamo:
hash define
Tommaso

Newsgroup: it.comp.lang.c
Titolo: Istanze multiple

Sempre riguardo il mio programma... come faccio a rilevare se c'č
un'altra istanza aperta del mio prog?
evitando FindWindow() o simili perň...
Grazie
--
E.G. er Cicca
er_c...@freemail.it
Per rispondere in privato, sostituite @
usa.net
 con @
freemail.it
Hiroshima 45, Chernobyl 86, Windows 98

evitando FindWindow() o simili perň...
SEI OT qui dentro ! 
Per favore cercate di rispettare il topic !
Per rilevare un'altra istanza aperta dell'applicazione si usa
CreateMutex, ma saro' lieto di scendere nei dettagli su
it.comp.programmare.win32.


Chiedo scusa, mentre scrivevo il msg ho sbagliato a selezionare il
newsgroup!
me ne sono accorto solo adesso...


Newsgroup: it.comp.lang.c
Titolo: gestione di semplici informazioni da file

Salve a tutti ho un piccolo problema.
Dovrei implementare una funzione in ANSI C che mi permetta di scandire
un file di testo, ad esempio input.txt, avente la seguente struttura:
NOME: PINCO
COGNOME: PALLINO
ID: 42344
PROVINCIA: MI
e stampare a video delle specifiche informazioni. Vi faccio un esempio:
prendendo in considerazione il file come precedentemente presentato,
vorrei stampare a video tutti coloro che si chiamano ARMANDO, oppure
chi risiede nella provincia di MILANO (MI).
Il mio problema è che non riesco a capire come andare a "selezionare"
il campo NOME, oppure il campo, PROVINCIA.
Vi ringrazio in anticipo.

Ciao,
basta utilizzare la funzione fscanf. Sotto è riportata una semplice 
implementazione.
### START CODE ###
char FieldName[50];
char Name[50];
FILE *input=fopen("./input.txt","r");
if (input)
{
	while (!feof(input))
	{
		fscanf(input,"%s",FieldName);
		if (strcmp(FieldName,"NOME:")==0)
		{
			fscanf(input,"%s",Name);
			if (strcmp(Name,"ARMANDO")==0)
			{
			.......	
			}
			else
			{
			........
			}
		}
		...........
	}
	fclose(input);
}
### END CODE ###
slackyMAX ha scritto:


Newsgroup: it.comp.lang.c
Titolo: OFFRTA WEB HOSTING ( REGALATO NON CI CREDI ? )





































Offerta web Hosting 50 mb di spazio web con 
      accesso al pannello di controllo in piu la registrazione dominio sia 
      it,com,org,ecc,ecc a lire 130.000 compreso d'iva aproffittatene oferta 
      ancora per pochi giorni..


 


WWW.QUARTOFLEGREO.COM









Certo che se i VAFF..si potessero vendere...sai 
  che affari, si venderebbero a prezzi stracciatissimi...quasi regalati. CHI 
  VUOL CAPIRE CAPISCA
Newsgroup: it.comp.lang.c
Titolo: Tipo e nome parametro nel prototipo di una funzione in C

 
Su Internet, in molti esempio, trovo questa sintassi per dichiarare una 
funzione:
 
int somma(int , int) /* prototipo della funzione*/
 
 
 
in tanti altri esempi, trovo:
int somma(int numero1 , int numero2) /* prototipo della funzione*/
 
 
Il nome del parametro (numero1 e numero2) ï¿œ facoltativo?
 
 
Quale ï¿œ la sintassi "piï¿œ" corretta?
 
Ciao
 
nero23

 
 
Sono entrambe corrette, ma ovviamente è più leggibile avere il nome dei
parametri anche nel prototipo, così puoi intuire cosa la funzione prende solo
con questo, che sta magari nel .h, senza andare a vedere il codice!
Ciao!


Devo dire che i commenti nell'interfaccia non li ho mai visti.


Secondo me non c'e' una sintassi "piu'" corretta. Semplicemente puoi
usare entrambe le forme: perche' il precompilatore ignora il nome
assegnato alle variabili numero1 e numero2, ma effettua solo un
controllo di concordanza tra i tipi annunciati nel prototipo della
funzione e quelli dichiarati nella definizione della funzione.

Newsgroup: it.comp.lang.c
Titolo: [Lang C]Linear Algebra, Calculus In language C

 hello, I present my work : a freeware, (Language C, GSL, GnuPlot).
 Linear algebra : Real Complex values.
http://www.geocities.com/xhungab/rfloat.html
The purpose of this work is to verify with numeric applications,
some properties of the linear algebra.
pow, transpose, trace,det, minor, mminor, cofactor, mcofactor,adjoint,
inverse(adjoint), inverse(gaussjordan),gauss, gaussjordan,
LU, PLU, Gram-Schimdt process, QR decomposition,
 norm,distance, innerproduct, coldim, rowdim, rank, nullity,
Orthogonal complement, Nullspace, Row space, Column space.
Inner productin Mnxn, inner product on R**n generated by A,
Weighed Euclidean Inner Produc, Eigenvalue, Eigenvector,
Cayley-Hamilton theorem, similarity, Gram-Schmidt process.
 Calculus : (10 packages)
http://www.geocities.com/xhungab/calculus.html
The news groups of this work :
http://groups.yahoo.com/group/mathc/
Thank.

it.comp.lang => ITALIANO
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Newsgroup: it.comp.lang.c
Titolo: consiglio su compilatore gratuito.

Sto da poco iniziandomi nella programmazzione in C.
Qualcuno sa dirmi dove potrei trovare un compilatore gratuito che funzioni
bene?
Grazie 1000
Dhokaa

Si certo installa linux ed avrai il Gcc completamente gratuito!


 bene?
Consulta le FAQ su 
www.programmazione.it
. Trovi diversi links.
EMG

 Dhokaa

Newsgroup: it.comp.lang.c
Titolo: [REQ][HELP] Matrici dinamiche

Piccolo prob: devo dichiarare, all'interno di una struct, una matrice
bidimensionale di int.
La matrice, pero', deve essere dimensionata in un successivo momento durante
l'esecuzione del programma.
Ecco, non riesco a dichiarare la variabile. Qualcuno mi aiuta?
Thx in anticipo,
                        Drizzt.


struct Pippo
{
    int **Matrice;
};
e poi allochi Matrice nel solito modo:
struct Pippo pippo;
pippo.Matrice = malloc( RIGHE * sizeof( int * ) );
e
for ( i = 0; i < RIGHE; i++ )
    pippo.Matrice[ i ] = malloc( COLONNE * sizeof( int ) );
EMG
Newsgroup: it.comp.lang.c
Titolo: Thread COME??????

Non riesco a trovare tutoria o guide su come si fa a fare una THREAD ???
Come si fa???è una cosa complicatissima??
GRAZIE
<SAX>

 wrote in message
news:MPG.1716a3d76...@powernews.libero.it...


 <SAX>

Claudio
Non ti sei accorto nemmeno dei due cross post che hai fatto se e' per
questo :P
Era in tema sul primo NG a cui ha postato, non su questo :)
-- 
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."
Newsgroup: it.comp.lang.c
Titolo: MESA 3D Graphics Libs.

Premesso che sono un programmatore principiante hobbista passo ad
esporre il mio problema:
Ho prelevato delle librerie grafiche già compilate (DLL freeware MESA)
per utilizzarle in un mio programma. Purtroppo le DLL e relative LIB
sono state compilate con Visual C++, mentre io uso Borland C 5.0. Ho
letto in rete che esiste la possibilità di convertire le LIB compilate
con Microsoft per Borland.
Qualcuno mi può dare un aiuto?
Grazie in anticipo.
Roberto Donadello

 Qualcuno mi può dare un aiuto?
  Che io sappia, non ci sono differenze a livello di codice oggetto tra
cio` che viene prodotto con il VC++ e quello che, invece, serve al
Borland: pensa a tutte le DLL di sistema, se cosi` fosse avresti bisogno
di un sistema operativo supplementare compilato con il Borland.
	Alla prossima,
		Marco

Ciao Marco,
sono d'accordo con te sulle DLL; ma file .lib che crei quando compili una
DLL e che devono essere linkati ai sorgenti dei programmi che ne fanno uso
credo siano tipici per ogni compilatore. Cosa ne pensi?
Ciao e grazie


 ogni compilatore. Cosa ne pensi?
  Ne penso che il formato dovrebbe essere, cosi` coem e` stato per tutto
il tempo che io ho programmato sotto DOS & Co., standard.
	Alla prossima,
		Marco
PS Ma almeno hai provato ad utilizzarle?

il tempo che io ho programmato sotto DOS & Co., standard.
Non esiste un formato standard per i file .lib (librerie). Ciň č provato dal
fatto che negli SDK vengono distribuite varie versioni delle librerie,
ognuna per il suo compilatore.
Ciao, Giuseppe
---------------------------------------------------------------------------
_Guybrush su IRCNet canale #programmazione
ICQ: 42227764
---------------------------------------------------------------------------

 PS Ma almeno hai provato ad utilizzarle?
Si ho provato ed il compilatore mi ha dato picche, per questo ho cercato una
soluzione.Ciao

 ---------------------------------------------------------------------------
  Grazie per la conferma. Hai suggerimento al mio problema?
Ciao

Ciao
O vieni in possesso dei sorgenti e ti ricompili tutto tu o cerchi di
ottenere le librerie adatte per il tuo compilatore. Non c'è altra soluzione.

Newsgroup: it.comp.lang.c
Titolo: strano comportamento input da kb

Buongiorno a tutti:
Mi era venuto in mente di scrivere una funzione che permettesse
l' inserimento di una stringa controllando la posizione di input
su schermo, la lunghezza massima ed altro.
Pensavo di usare getche() ricorsivamente, riempiendo un vettore
passo passo e facendo i vari controlli.
Tutto funziona fino a quando non si premono i tasti di rotta sx/dx. 
In questo caso mi sono accorto che il buffer invia due codici in
sequenza, uno ha valore 0 ed il successivo il codice del tasto.
Sono riuscito a intercettare i valori cosi'(è una prova):
void main( int argc, char *argv[])
{
  int i=0,stringcol=5,stringrow=35;	
  char FileName[13],c;
  textcolor(YELLOW);textbackground(BLACK);
  clrscr(); 
  while("true")
  {	    
     gotoxy(i+stringcol,stringrow);
     c=getche();
     FileName[i]=c;
     ++i;
   switch(c)
     {
     case 0:
        c=getche();
        break;
     } 
ecc.
qualche idea?
grazie - S.
--  
Postato da Virgilio Newsgroup: scopri i nuovi gruppi 
Eros, foto e video a 
http://newsgroup.eros.virgilio.it

 qualche idea?
Qualche idea per cosa, in particolare ?
Il modo in cui intercetti i tasti, facendo uso (bada bene) di funzioni non
standard come getche(), che si interfacciano a basso livello con la
tastiera, prelevando input e non bufferizzandolo, mi sembra sia quello
corretto.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

Andrea Laforgia ha scritto:

Qualche idea nel senso che qualcuno abbia già sperimentato una
cosa analoga: mi ha lasciato un po' perplesso il vedermi sparare
fuori due codici di seguito che mi "forano" due volte la getche().
ciao - grazie
S


 fuori due codici di seguito che mi "forano" due volte la getche().
"Perplesso" per quale motivo ?
Il meccanismo è quello su quella piattaforma: i codici "speciali" vengono
memorizzati nel buffer di tastiera con due byte.  Che ci trovi di strano?

Newsgroup: it.comp.lang.c
Titolo: Finestra di dialogo

E' da poco tempo che sto provando ad utilizzare il Visual C++ ma,
sviluppando un'applicazione   non  riesco a visualizzare una finestra di
dialogo dalla barra menů.
Ho incluso la classe del dialogo che dovrebbe partire sulla main:
// Fisica.cpp : Defines the class behaviors for the application.
//
#include "stdafx.h"
#include "Fisica.h"
#include "MotoDlg.h"  // questa č la classe inclusa
#include "MainFrm.h"
#include "FisicaDoc.h"
#include "FisicaView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
Poi ho anche mappato il tutto con:
////////////////////////////////////////////////////////////////////////////
/
// CFisicaApp
BEGIN_MESSAGE_MAP(CFisicaApp, CWinApp)
 //{{AFX_MSG_MAP(CFisicaApp)
 ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
 ON_COMMAND(ID_CALCOLA_MOTO, OnCalcolaMoto)
 //}}AFX_MSG_MAP
 // Standard file based document commands
 ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)
 ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)
// ON_COMMAND(ID_CALCOLA_MOTO, OnCalcolaMoto)
 // Standard print setup command
 ON_COMMAND(ID_CALCOLA_MOTO, CFisicaApp::OnCalcolaMoto)
 ON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp::OnFilePrintSetup)
END_MESSAGE_MAP()
Ho anche inserito :
void CFisicaApp::OnCalcolaMoto()
{
 // TODO: Add your command handler code here
 CMotoDlg motoDlg;
 motoDlg.DoModal();
}
Quando compilo non restituisce nessun errore e nessun avertimento ma, quando
il programma č in esecuzione e provo ad avviare la finestra di dialogo,
dalla barra menů dell'applicazione questa e come se non l'avessi premuta.
Sono disperato, cosa devrei  fare per fare apparire la finesta di dialogo?
Grazie a tutti.

 dialogo dalla barra menů.
Come tu stesso dici, hai problemi con un linguaggio che non attiene al 
topic di questo gruppo; in piu`, su una piattaforma specifica, e quindi 
anch'essa non attinente a questo gruppo.
Followup-To impostato.
-- 
Baci,
Mony
Newsgroup: it.comp.lang.c
Titolo: Lettura stringhe con 160 caratteri

Salve a tutti.
Come va? Spero bene....
Ho un altro problemino con il C. Finalmente ho imparato puntatori e
compagnia, ma sto avendo un problema nel memorizzare una stringa di 160
caratteri.
Ho usato
char testo[160];
Il programma funziona (fin quando i caratteri sono pochi), ma appena
raggiungo il limite destro della finestra, il cursore va a capo e appena
batto invio....non so cosa fa, forse memorizzza solo i caratteri che si
trovano a capo, anzi credo che non memorizzi nemmeno questi. Ma il problema
principale è in ogni caso: come faccio a fargli memorizzare tutta la
stringa?Devo ingrandire la finestra o  allargare il monitor :))
Esiste un'altra funzione che non si preoccupa della grandezza della
finestra?
Grazie a tutti.
A presto.
Andrea.

char testo[160];
char testo[161];
Devi memorizzare anche il carattere terminatore \0.
Che funzione usi per leggere la stringa ?
--
Andrea Laforgia (
andrea_...@bigfoot.com
)
---------------------------------------------

 wrote in message
38ba5503....@diesel.cu.mi.it...


 Si tratta di una struct in cui memorizzo questo testo.
E' la funzione scanf che si incasina quando metti degli spazi, utilizza gets.
Ivan Molella

 Si tratta di una struct in cui memorizzo questo testo.
E' la funzione scanf che si incasina quando metti degli spazi, utilizza gets.
Ivan Molella

stringa, ma solo il pezzo a capo....non sono bravo a spiegare....
Ho provato il tuo programma e con il Turbo C++ 3.0 non si presenta il
problema da te lamentato ma in compenso c'e' un altro : Non legge piu'
di 127 caratteri :-)) (quanto odio la scanf)
La cosa buffa (o tragica) e' che le seguenti righe :
  char riga[300] = "";
  scanf("%s", riga);
leggono fino a 127 caratteri se il programma viene compilato con il
Turbo C++ 3.0 mentre arriva fino a 254 se lo compilo con il Borland
C++ 5.5
Come mai ?
ciao

Grazie a tutti.....usavo scanf e non funzionava....ora con gets funziona!!
Ciao e a presto.
Andrea.

Newsgroup: it.comp.lang.c
Titolo: puntatori e funzioni a cascata

Riassumo qui in maniera molto schematica la situazione in cui mi trovo:
void foo ( Struttura*** ptr ) {
...
ptr = malloc ( ??? );			// come allocare?
for ( i = 0; i < n; i++ )
	*ptr [ i ] = qualcosaltro ();	// riga incriminata!
...
}
Struttura** bar () {
...
Struttura** ptr;
foo ( &ptr );
return ptr;
...
}
void baz () {
...
Struttura** ptr = bar ();
...
}
L'elemento che crea problemi e' sopra segnalato: praticamente non so in 
che modo allocare quel segmento di memoria (assumendo che debba 
contenere N elementi "Struttura") e riempirlo correttamente.
Suggerimenti?
Grazie :-) !
-- 
Roberto -MadBob- Guido
mail bob4mail***@***
gmail.com
web 
http://madbob.homelinux.com
BrainTop Project maintainer - 
http://braintop.sf.net

Roberto -MadBob- Guido ha scritto:
<snip>
se io scrivo:
void funzione(T ***p) 
il valore puntato dal puntatore sarà sempre e solo *p, come normalmente
previsto dalla logica dei puntatori, quindi che stai passando alla
funzione ? un puntatore a puntatore per riferimento, ovvero mediante un
altro puntatore ?  il puntatore a puntatore sarà accessibile, nella
funzione, come *p.
Quindi, se io volessi allocare la matrice, scriverei qualcosa del tipo:
#include <stdio.h>
#include <stdlib.h>
typedef int T;
void allocazione(T*** p, int m, int n)
{
     int i;
     *p = malloc(m * sizeof *p);
     if (*p) 
       for (i=0; i<m; i++) 
         (*p)[m] = malloc(n * sizeof(T));
}
void assegnazione(T** p, int m, int n)
{
     int i;
     for (i=0; i<m; i++) 
     {
         int j;
         for (j=0; j<=n; j++)
           p[m][n] = rand() % 100;
     } 
}
void scrittura(T** p, int m, int n)
{
     int i;
     printf("<matrix>\n");
     for (i=0; i<m; i++) 
     { 
         printf("<row>" , i);
         int j;
         for (j=0; j<=n; j++)
         {
           if (j) printf(",");   
           p[m][n] = rand() % 100;
           printf("%d", p[m][n]);
         }
         printf("</row>\n");
     }       
     printf("</matrix>\n");
}
int main(int argc, char *argv[])
{
    T **m1, **m2;
 
    allocazione(&m1, 3, 2);
    allocazione(&m2, 2, 4);
    assegnazione(m1, 3, 2);
    assegnazione(m2, 2, 4);
    scrittura(m1, 3, 2);
    scrittura(m2, 2, 4);
    return 0;
}
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Suggerimenti?
Perque struttura*** ?
Struttura **foo(void) {
{
  int i;
  Struttura **pp = malloc (n * sizeoof *p)
/*
  Struttura **pp = malloc (n * sizeof (Struttura*));
*/
 for ( i = 0; i < n; i++ )
   pp[i]=qualcosaltro();
 return pp;
}
Struttura** bar () {
 return foo();
}
bar č inutile ;-)
void baz () {
 ...
 Struttura** ptr = foo();
}
-- 
Horst

      *p = malloc(m * sizeof *p);
Errata Corrige: 
*p = malloc(m * sizeof **p);

Newsgroup: it.comp.lang.c
Titolo: chi mi aiuta? con djgpp

ciao atutti!
volevo chiedere se c'e qualcuno che "MOLTO" pazientemente mi puo
spiegare come devo fare per installare djgpp???
(grazie!! :-))

 spiegare come devo fare per installare djgpp???
Certo. La sua documentazione ad esempio. Oppure Google: prova "djgpp 
installation" e clicca su `Mi sento fortunato'.

 ha scritto nel messaggio
news:8dd8fd8b.04022...@posting.google.com...

Se magari spieghi meglio dove' il problema.
Non vedo, sinceramente, dove potresti trovare difficolta ad installarlo.
Almeno che non intendi dire che dopo averlo decompresso non riesci a farlo
funzionare.?
Se e' cosi' allora, evidentemente non hai letto nemmeno il readme.
Cmq leggiti questo documento:
http://www.pspc.dibe.unige.it/~fondamenti1/Come_installare_DJGPP_2.pdf
Ciao Tony
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (
http://www.grisoft.com
).
Version: 6.0.592 / Virus Database: 375 - Release Date: 18/02/2004

emilio ha scritto:

ciao
mi sembrava di averti gia mandato la risposta tempo fa' ... mah ...
adesso te la rimando:
da questo indirizzo
http://www.delorie.com/djgpp/zip-picker.html
compilando il form,
ottieni non solo l'elenco dei file da scaricare, ma anche le istruzioni
per installarlo correttamente.
per esempio, io uso windows 2000 e ho ottenuto queste istruzioni:
elenco file da scaricare:
unzip32.exe          to unzip the zip files         95 kb
v2/
copying.dj
        DJGPP Copyright info            3 kb
v2/djdev203.zip      DJGPP Basic Development Kit   1.5 mb
v2/faq230b.zip       Frequently Asked Questions    664 kb
v2/readme.1st        Installation instructions      22 kb
v2apps/rhid149b.zip  RHIDE                         2.4 mb
v2gnu/bnu214b.zip    Basic assembler, linker       3.1 mb
v2gnu/gcc332b.zip    Basic GCC compiler            2.8 mb
v2gnu/gdb53b.zip     GNU debugger                  1.5 mb
v2gnu/gpp332b.zip    C++ compiler                  2.8 mb
v2gnu/mak3791b.zip   Make (processes makefiles)    267 kb
v2gnu/txi46b.zip     Info file viewer              761 kb
istruzioni per installare:
C:\> mkdir djgpp
C:\> cd djgpp
C:\DJGPP> unzip32 d:\tmp\djdev203.zip
C:\DJGPP> unzip32 d:\tmp\faq230b.zip
C:\DJGPP> unzip32 d:\tmp\rhid149b.zip
C:\DJGPP> unzip32 d:\tmp\bnu214b.zip
C:\DJGPP> unzip32 d:\tmp\gcc332b.zip
C:\DJGPP> unzip32 d:\tmp\gdb53b.zip
C:\DJGPP> unzip32 d:\tmp\gpp332b.zip
C:\DJGPP> unzip32 d:\tmp\mak3791b.zip
C:\DJGPP> unzip32 d:\tmp\txi46b.zip
importante:
prima devi copiare il file unzip32.exe in C:\DJGPP
poi modifichi i comandi a seconda di dove sono
i file che hai scaricato, per esempio:
C:\djgpp> unzip32 c:\posizione\esatta\di\djdev203.zip
C:\djgpp> unzip32 c:\posizione\esatta\di\faq230b.zip
....
eccetera
ciao
davide
Newsgroup: it.comp.lang.c
Titolo: Hashing functions

buondģ
premetto che questa č la prima volta che posto in questi newsgroup. 
Dovendo fare una relazione, avrei la necessitą di reperire del materiale 
in c/c++ riguardo alle tabelle hash, in particolare focalizzato ai 
metodi dell'hash doppio, con overflow area e a catene separate. ho fatto 
una breve ricerca sulla rete trovando qualcosa, ma forse qualcuno di voi 
conosce qualche sito che non sono riuscito a scovare :)



, 
corn...@SPAMusa.net says...

mi scuso per il doppio messaggio

Newsgroup: it.comp.lang.c
Titolo: Libro di C

Mi consigliate un buon libro dettagliato per imparare il linguaggio c? E
magari qualche documento in italiano su internet?

 interessare, io lo studiero' dopo il D&D.
Newsgroup: it.comp.lang.c
Titolo: caratteri lilla sforforescenti!

domanda:
io per fare il clear screen uso:
system ("cls");
..c'è modo per dare altri comandi grafici?
...tipo cambiare di sfondo e farlo verde?
...o i caratteri invece che bianchi lilla sforforescente? (:
franz

 ha scritto nel messaggio
news:95xS7.306253$sq5.15...@news.infostrada.it...

                                                          ^^^^^^^^^^^^^
Se non ricordo malissimo dicesi fosforescente!
Se poi ci dici pure che compilatore usi....dato che quello che chiedi non é
standard o lo fai con delle librerie oppure metti mano all'assembler.


Salve,
per cancellare lo schermo puoi usare questo mettendolo in cls.h e
ricordandoti di includere cls.h nei tuoi programmi:
#ifndef __CLS_H
#define __CLS_H
#define cls()   printf("\e[2J\e[0;0f")
#endif
e' un po' piu' leggero di system() ma non so se e' portabile, non lěho
provato sotto DOS, aspetto che qualcuno mi faccia sapere se funziona.
per i caratteri colorati prova questo:
printf("\e[1;34m   Prova di colore  \e[00m \n");
            ^^ setta il colore                 ^^ torna al default
Ancora una volta non sono sicuro della portabilita'
se qualcuno fa delle prove mi faccia sapere
sotto unix funziona, sotto dos non so.
Grazie.

 Grazie.
-- 
Posted from  [62.211.175.162] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 sotto unix funziona, sotto dos non so.
Sotto cygwin funziona sicuramente, sotto DOS afaik (vado a memoria,
visto che non lo uso da una vita) si deve caricare il driver ansi.sys
nel config.sys
-- 
Vanni Brutto
| email 
za...@nofesso.libero.it
      |
| irc nick VanniB   |   ICQ 18526701 |
--- rimuovi nofesso per rispondere ---
---PC powered by Linux kernel 2.4.14vb
Se  il lavoro  č salute  č meglio  che
lavorino gli ammalati. 

> sotto DOS afaik (vado a memoria,
Che vuol dire afaik?
Dome

 Che vuol dire afaik?
As far as i know (per quanto ne so)
-- 
Vanni Brutto
| email 
za...@nofesso.libero.it
      |
| irc nick VanniB   |   ICQ 18526701 |
--- rimuovi nofesso per rispondere ---
---PC powered by Linux kernel 2.4.14vb
Dai  cattivi  ci  difende  Dio...  mai
dagli   stupidi  chi   ci  potrą   mai
proteggere? 

domanda:

Per cancellare lo schermo puoi usare questo magari mettendolo in un
file chiamato cls.h:
#ifndef __CLS_H
#define __CLS_H
#define cls()   printf("\e[2J\e[0;0f")
#endif
e poi usare la macro appena definita cls() per fare cio' che vuoi.
E' un po' piu' leggero di system() ma non ho fatto molti test di
portabilita', su unix funziona,  su DOS non so :)
per i caratteri colorati puoi usare le sewuenze di escape \e[m
esempio:  printf("\e[1;34m  Prova di colore  \e[00m\n");
                          ^^colore scelto                    ^^ torna
al default.
scusami ma non ricordo la lista dei colori comunque cambiando i valori
1 e 34 nella prima parte cambiano i colori di foreground e di
background.
Ancora una volta non sono sicuro che sia una cosa portabile, fate
delle prove sotto dos e fatemi sapere.
Grazie.

 ...o i caratteri invece che bianchi lilla sforforescente? (:
Prova con un buon shampoo :-)
Franco
Newsgroup: it.comp.lang.c
Titolo: ancora scanf

Nel libro di Kernighan-Ritchie v2 (sapete che Dennis segue almeno i
gruppi sci.crypt e comp.lang.c ecc ? )
B1.3 Input formattato
Vi è scritto che "... fscanf restituisce EOF in caso di... e di errore
prima di qualsiasi conversione "
Ho potuto verificare invece che fscanf (o scanf) in caso di errore
restituisce 0 e non EOF, che da me (Borland-C PC) è -1.
_____________________
void getint( FILE*  f, int*  i)
{while( !fscanf(f,"%d", i) ) 
              {fprintf(stderr , "Errore se puoi ridigita> ");
               while( getc(f)!='\n' );
              }
}

restituisce 0 e non EOF, che da me (Borland-C PC) è -1.
falso allarme: non avevo letto che in 7.4 INPUT FORMATTATO-SCANF
c'è scritto "Al termine del file, scanf ritorna il valore EOF; notate
che questo valore è diverso dallo 0, che viene invece restituito
quando il carattere in input è in contrasto con la prima specifica di
controllo presente in format."
______________________________
void getint( FILE* f, int* i)
{while( fscanf(f,"%d", i) != 1 ) 
              {fprintf(stderr , "Errore> ");
               while(getc(f)!='\n');
              }
}

Newsgroup: it.comp.lang.c
Titolo: Qualche dubbio su struttura.

Ciao a TUTTI !
Ho un dubbio per quanto riguarda l' inizializzazione di un membro di una
struttura;
struct test {
                     char *nomi[10];
                     /*.......*/
                };
int main(void)
{
    struct test myname;
    myname.nomi[0]="Luca";
    /*......*/
    return 0;
}
č legale l' inizializzazione  myname.nomi[0]="Luca"; , oppure anche in
questo caso devo prima allocare e poi "strcopiare" Luca ?
Scusate la domanda banale ma a forza di mischiare linguaggi sto'
perdendo la testa... :-)

 questo caso devo prima allocare e poi "strcopiare" Luca ?
La seconda che hai detto.
Ovviamente
strcpy(myname.nomi, "Luca");
L'istruzione
strcpy(myname.nomi[0], "Luca");
e' sbagliata.
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 ha scritto nel messaggio
news:96609ad1812e75730c3...@mygate.mailgate.org...

Newsgroup: it.comp.lang.c
Titolo: Callback?

Dunque il problema è questo, da un unico programma si deve gestire dei
dati che devono andare da
tun ----------> usb
usb ----------> tun
(molto semplicisticamente)
quindi in sostanza dobbiamo costantemente leggere su due file (la porta
usb e /dev/tun) e poi lavorare di conseguenza.
Ci stiamo un po' scervellando su come fare, threading, forking e
compagnia bella.
Ma ho pensato una cosa, non sarebbe possibile invece di complicarsi
tanto la vita ricevere un'interrupt ogni volta che otteniamo un nuovo
dato?
Non so bene come si potrebbe fare però, ho perfino pensato di usare due
programmi del tipo (per ogni device)
--8<---------------cut here---------------start------------->8---
while (1) {
      if (read()...) {
         // put the data somewhere
         // send a signal to the main process
       }
}
--8<---------------cut here---------------end--------------->8---
e in questo modo potremo avere solo un programma principale che con 
"signal" può andare ad assegnare le giuste funzioni ai giusti segnali.
Mi sembra però abbastanza astruso e spero ci siano altre vie...
Suggerimenti?
Grazie...

 Suggerimenti? Grazie...
Usare la select().   In ambiente unix questa mi sembra la soluzione 
classica.
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   < 
http://giovanni.homelinux.net/
 >

Newsgroup: it.comp.lang.c
Titolo: Aiuto Funzione SPLIT

Salve!
ho il seguente problema:
devo scrivere una funzione split che:
dato un path viene salvato su un array, di ogni parte del path
spezzo con una funzione C il path es./xxxx/ssss/aaaa -->[/xxxx]; [/ssss];ect
int split(char *path, char tree[NBLOCK][NCHAR]){
//NCHAR e' la massima lunghezza di una directory mentre NBLOCK numero delle
directory
int i,k;
int j=-1;
int len=strlen(path);
  for(i=0; i<len; i++){
 if((strcmp(path[i],"/"))==0){
    k=0;  //indice che mi rappresenta la lunghezza dell'array di tab hash in
cui
   //salvare in nomedir
    tree[j++][k];
    strcpy(tree[][k],path[i]); //copio il carattere "/"
    i++;
           while((strcmp(path[i],"/"))!=0 && i<len){
             strcpy(tree[][k],path[i]);
      k++;
    }
 }
  }
return j+1; //ritorno il numero di split
}
purtroppo la funzione non funziona, credo a causa della manipolazione della
tabella hash,
qualcuno di voi gentilmente saprebbe come risolvere?
GRAZIE 1000!
Roberto

 qualcuno di voi gentilmente saprebbe come risolvere?
Prima di postare un quesito cerca almeno di produrre del
codice che possa passare indenne da un compilatore.
Il codice sopra non compila nemmeno, come potevi
sperare che fosse corretto?
ciao,
g.

 
Usare strtok???
-- 
Tnk
Luca "Kleidemos" Francesca
Un computer a un altro quando si incontrano:
"Ciao, come ti boota oggi???"
Newsgroup: it.comp.lang.c
Titolo: Funzioni a parametri variabili

Nel mio programma che sto scrivendo in C, ho una serie di parametri
rappresentati da questa struct:
--
  typedef struct strparam_t param_t;
  struct strparam_t {
    int *value_ptr;
    int min;
    int max;
    void (*pset_func)( const param_t *p, int new_value);
};
--
In pratica, ogni parametro punta ad una variabile di tipo int e può
avere un valore minimo ed un valore massimo. Quando un parametro deve
essere cambiato, viene richiamata la funzione pset_func che accetta il
puntatore al parametro stesso e il nuovo valore da modificare.
Per esempio:
--
  int setting1;
  void set( const param_t *p, int new_value );
  const param_t params[] = {
    { &setting1, 0, 100, set },
  };
  void
  set( const param_t *p, int new_value )
  {
    *(p->value_ptr) = new_value;
    /* Fai qualcos'altro */
  }
--
Fin qui tutto bene. Il problema nasce per alcune variabili che non sono
semplicemente degli int ma degli array di int. Per questi e *solo* per
questi, la funzione di set dovrebbe accettare un altro parametro che è
l'indice dell'array.
Avevo pensato di aggiungere un campo table che, se diverso da zero,
indica un parametro organizzato ad array:
--
  struct strparam_t {
    unsigned char table;
    int *value_ptr;
    int min;
    int max;
    void (*pset_func)( const param_t *p, int new_value, ???);
};
--
Ma come definire la pset_func? Per alcuni parametri (table=0), la
pset_func vuole solo due argomenti (p e new_value); per altri
(table!=0), la pset_func vuole tre argomenti (p, new_value e l'indice
dell'array).
Stavo iniziando a cervellarmi su funzioni ad argomenti variabili (tipo
la printf) oppure a union, ma vorrei prima chiedere il parere di voi
esperti.

 dell'array).
Personalmente userei sempre una funzione con 3 argomenti, in fondo
settare l'int singolo è un caso particolare dell'array:
void (*pset_func)( const param_t *p, int new_value, int offset);
void set(const param_t *p, int new_value, int offset) {
        p->value_ptr[offset] = new_value;
        ...
}
e nel caso di int semplice offset sarà ovviamente 0.
Se proprio vuoi usare i varargs:
void (*pset_func)( const param_t *p, int new_value, ...)
struct strparam_t {
        unsigned char table;
        int *value_ptr;
        int min;
        int max;
        void (*pset_func)( const param_t *p, int new_value, ...);
};
void set(const param_t *p, int new_value, ...) {
        if (p->table) {
                va_list params;
                int offset;
                va_start(params, new_value);
                offset = va_arg(params, int);
                va_end(params);
                ...
        } else {
                ...
        }
}
Luca
-- 
"In linea di principio sarei indifferente al natale, se solo il natale
 ricambiasse la cortesia e mi lasciasse in pace." -- Marco d'Itri
Newsgroup: it.comp.lang.c
Titolo: find 2

Ciao ragazzi,
potreste dedicarmi 1 minuto per capire dov'č l'errore in questo codice?
si tratta sempre di find.. cn 2 argomenti opzionali.. esattamente come sul 
K&R, non c'č nessun problema in compilazione, ma mi vengono outputtati 
continui "segmentation fault" se lancio il programma cn un argomento 
opzionale.. potreste spiegarmi meglio che significa quest'errore e 
possibilmente come ovviare a ciň? grazie in anticipo, ciao ciao
#include<stdio.h>
#include<string.h>
#define MAX 1000
main(int argc, char *argv[])
{
  FILE *fp;
  char line[MAX];
  char c, except=0;
  long int number=0, found=0, linenumber=0;
  if(argc==1)
    {
      printf("Utilizzo: find -x -n [FILE] [PATTERN]...\n");
      return 0;
    }
  while((*++argv)[0]=='-')
    while((c=*++argv[0])!='\0')
      switch(c) {
      case 'n':
        number=1;
        break;
      case 'x':
        except=1;
        break;
      default:
        printf("find: errore: argomento %c non riconosciuto\n", c);
        printf("Utilizzo: find -x -n [FILE] [PATTERN]...\n");
        return 0;
      }
  if((fp=fopen(*argv, "r"))==NULL)
    {
      printf("find: errore: impossibile aprire il file d'origine\n");
      return 0;
    }
  while((fgets(line, MAX, fp))>0)
    {
      linenumber++;
      if(strstr(line, *++argv)!=NULL)
      {
        if(!except)
          {
            if(number)
              printf("%ld: ",linenumber);
            printf("%s", line);
            found++;
          }
        else
          continue;
      }
    }
if(found>0)
       return 1;
else return 0;
}
 
 

     while((c=*++argv[0])!='\0')
ragiona su questo... 
e sul fatto che 
&argv[0] = "nome_prog"
&argv[1] = "primo_arg"
&argv[2] = "secondo_arg"
e in questo caso argc = 3

 }
if ( except )
   mi pare che non faccia niente di interessante... :-(
--
ciao
Massimo

>     while((c=*++argv[0])!='\0')
nella prima linea dovrebbe essere un puntatore al primo carattere di ogni 
argomento.. giusto?:-S
mentre nella seconda dovrebbe "scorrere" tutti i caratteri dell'argomento 
fino a incontrare '\0', cioň la fine della stringa. quindi incrementare il 
puntatore (*++argv) e fare in modo che punti al primo carattere 
dell'argomento successivo... dove ho sbagliato?:-s scusa.. programmo da 
poco...

Newsgroup: it.comp.lang.c
Titolo: Vorrei un buon libro per iniziare

Avrei bisogno di una guida in c++ per iniziare.
La mia email č:
m.ch...@studenti.to.it

...

Newsgroup: it.comp.lang.c
Titolo: Aiuto per Principiante Autodidatta

Ho trovato un vecchio compilatore ( C88 Compiler v 2.3) e mi sono messo a
studiare il C.
Dopo i primi rudimenti, per esercitarmi, ho tradotto in C un mio vecchio
programma in Basic per risolvere un sistema di n equazioni in n incognite.
Dopo gli inevitabili errori di sintassi, tutto bene.
Appena ho cercato di fare una modifica aggiungendo qualcosa in piu', mi ha
dato il messaggio "Compiler error. Function too big".
Togliendo qualcosa, ecco che va bene.
Quando va bene, il messaggio del compilatore e' "........ 93% utilization",
oppure "...... 99% utilization".Si riferisce all' utilizzazione della
memoria? E, aggiungendo qualcosa, si supera la memoria disponibile?
E in tal caso, come si fa per averne a disposizione di piu' ?
Grazie a chi mi aiuta.
Franco
sabb...@tiscalinet.it

 dato il messaggio "Compiler error. Function too big".
Cambia compilatore. Prendi il Borland C++ 5.5 su 
www.borland.com
 o il
DJGPP su 
www.delorie.com
.
EMG

 tal caso, come si fa per averne a disposizione di piu' ?
  Usa un compilatore che sfrutti al meglio le caratteristiche di un PC
moderno, ho come l'impressione che il tuo compili addirittura ad 8
bit...
 
http://www.delorie.com
	Alla prossima,
		Marco

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

Ciao ragazzi ho un picoolo problema, qst prog mi va in un loop
infinito. Esso dovrebbe cambiare le righe pari con quelle dispari di
una stessa matrice. Help!!
Vorrei davvero capire il problema. Grazie dell'aiuto
#include <cstdlib>
#include <iostream>
const int MAX = 100;
using namespace std;
void leggi_mat(int mat[MAX][MAX],int *nrig, int *ncol){
              cout << endl<<"Quante righe?:";
              cin >> *nrig;
              cout<<endl<<"Quante colonne?: ";
              cin >> *ncol;
              int i,j;
              for (i=0;i<*nrig;i++)
              for(j=0;j<*ncol;j++){
                                  cout<<endl<<"Inserisca il numero
["<<i<<"]["<<j<<"]: ";
                                  cin>>mat[i][j];
                                  }
              cout<<"Grazie per l'inserimento";
              }
int main(int argc, char *argv[])
{int mat[MAX][MAX];
int i,z,j,swap;
int nrig,ncol;
leggi_mat(mat,&nrig,&ncol);
for(j=0;j<nrig-1;j+2)
for(z=0;z<ncol;z++){
swap=mat[j][z];
mat[j][z]=mat[j+1][z];
mat[j+1][z]=swap;
}
cout<<"Nuova matrice";
for(z=0;z<nrig;z++)
for(j=0;j<ncol;j++){
                    cout<<endl<<endl<<mat[i][j];}
    system("PAUSE");
    return EXIT_SUCCESS;
}

 Vorrei davvero capire il problema. Grazie dell'aiuto
Ho fatto copia/incolla e l'ho compilato:
tmp.cpp(24) : warning C4552: '+' : operator has no effect; expected operator 
with side-effect
tmp.cpp(35) : warning C4700: local variable 'i' used without having been 
initialized
Il problema mi sembra chiaro!
-- 
Costantino Grana 

 infinito.
Ti hanno gia' risposto, ma in futuro dovresti porre le
domande sul gruppo it.comp.lang.c++  in quanto il tuo
codice e' scritto in c++ e non in c e quindi quello e'
il gruppo appropriato.
ciao,
g.

Grazie
Scusate per lo sbaglio
Newsgroup: it.comp.lang.c
Titolo: Sto andando di fuori: guardate un po' qui :-(

Nel mio bel main inserisco siffatte dichiarazioni
int main (int argc,char **argv)
{
 
   unsigned *sigma;
   unsigned *allStr;
   unsigned *matrix;
dopodiche'eseguo sittali inizializzazioni
 
   sigma=(unsigned *) calloc(8*8,sizeof(unsigned));
   allStr=(unsigned *) calloc(256*8,sizeof(unsigned));
   matrix=(unsigned *) calloc(8*8,sizeof(unsigned));
 
ed eseguo la non fuori luogo istruzione 
 
  printf("Io odio il C");
}
Volete sapere quale e' il responso del gdb se metto un breakpoint alla
linea contenente la printf e faccio "info locals"?
(gdb) info locals
(gdb) No Locals
In pratica le tre variabili suddette non esistonooo,yiuppiii!
Ma proviamo a stampare il loro indirizzo
(gdb) p sigma
(gdb) No symbol "sigma" in current context 
Aiutooo!
Fabio.

 
non e' che per caso tu setti il breakpoint con
    b printf
?
In questo caso si ottengono comportamenti simili a quelli da te
descritti, perche' il breakpoint viene settato all'interno della funzione
printf (nel cui scope di visibilita'  probabilmente non esiste alcuna
variabile sigma)!!
Cioe' info local ti da informazioni sulle variabili locali della printf,
non della main.
Prova a settare un breakpoint con
   b main
e vedere cosa succede
oppure, appena caricato il programma con
gdb <nomeprogramma>
prova a premere l e poi a  settare il breakpoint con
   b <numero della linea corrispondente alla printf>
Spero di esserti stato utile,
Marco Guidi

Fabio Mascelloni (
masc...@cli.di.unipi.it
) wrote:
: Nel mio bel main inserisco siffatte dichiarazioni
Hai incluso <stdlib.h> ?
: int main (int argc,char **argv)
[ snip ]   
:    sigma=(unsigned *) calloc(8*8,sizeof(unsigned));
:    allStr=(unsigned *) calloc(256*8,sizeof(unsigned));
:    matrix=(unsigned *) calloc(8*8,sizeof(unsigned));
Togli i cast.
[ snip ]
: Volete sapere quale e' il responso del gdb se metto un breakpoint alla
: linea contenente la printf e faccio "info locals"?
A me funziona:
Breakpoint 1, main (argc=1, argv=0xbffffbb4) at da_canc.c:16
16        printf("Io odio il C");
(gdb) info locals
sigma = (unsigned int *) 0x8049618
allStr = (unsigned int *) 0x8049720
matrix = (unsigned int *) 0x804b728
(gdb) p sigma
$1 = (unsigned int *) 0x8049618
Hai compilato con -g ? (be' non mi viene in mente altro ;)
Ciao ciao,
Andrea
-- 
"...Unix, MS-DOS, and Windows NT (also known as the Good, the Bad, and 
 the Ugly)."
(by Matt Welsh)
Newsgroup: it.comp.lang.c
Titolo: librerie per gestire liste, code, stack, alberi...

Salve a tutti!
Vorrei chiedere se potreste suggerirmi qualche bella libreria open source per la gestione di code, liste, stack, alberi ecc ecc (insomma piu' ce n'e' meglio e') per non dover stare ogni volta a reinventare la ruota!
Grazie a chi mi rispondera'.


Dipende che ci devi fare.
 
Se ti serve giusto una lista e/o uno stack fai prima a reimplementarli (ma si
suppone che nella tua vita lo fai una volta sola e poi ti porti dietro il
codice).
 
Se usi già qualche libreria è possibile che abbia già qualcosa, a partire dalla
famosa glib che ha un po' di tutto fino a, boh, ce ne sono milioni, anch'io
ne ho scritta una che implementa qualche container (libmmp). Vedi un po' cosa
ti serve davvero, visto che "tutto" non è ovviamente possibile, e più roba c'è
più è o complessa da usare e o aggiunge overhead (per forza di cose).
 
Se vuoi scrivere comodo con tanti container e algoritmi generici senza
ammattire troppo beh, ti conviene scrivere un po' più ad alto livello, tipo
in C++ con le STL ad esempio, ma questo è un altro discorso.
 
Ciao!

Newsgroup: it.comp.lang.c
Titolo: compilatore C

Ciao a tutti,
mi consigliate un buon compilatore C semplice da usare?

 
Gcc su linux
Mingw su windows(il porting del gcc)
-- 
Kleidemos
Un computer a un altro quando si incontrano:
"Ciao, come ti boota oggi???"

 ha scritto nel messaggio
news:boLfc.84585$rM4.3...@news4.tin.it...


[...]
.. uhm, ...che sia semplice da usare ho i miei dubbi.
Ciao