mii-community/UsenetArchiveIT-conversations huggingface dataset:
Newsgroup: it.comp.lang.c
Titolo: parametri gcc per stretta conformità standard ISO

ciao
quali sono i parametri da dare in pasto a gcc per far sì che il proprio 
codice sia strettamente conforme con lo standard ANSI/ISO? e poi, 
esistono altre opzioni che facilitano al programmatore il riconoscimento 
di situazioni "critiche" che potrebbero essere fonte di errori e problemi?
per ora ho trovato: -ansi -pedantic -Wall -Wextra
p.s.: non sono un programmatore di professione, sono semplicemente uno 
studente al primo anno di ing. info. che vorrebbe evitare di imparare 
quegli aspetti del C che non fanno parte dello standard, e magari essere 
aiutato dal compilatore quando questo può facilmente aiutarmi.
grazie

 per ora ho trovato: -ansi -pedantic -Wall -Wextra
Visto che siamo nel 2006 io metterei -std=c99 al posto di -ansi ;)
Oltre alla verifica delle conformita` -Wall -Wextra dovrebbero essere
sempre attivi durante lo sviluppo perche` permettono di identitificare
velocemente possibili "sviste".
Luca
-- 
Home: 
http://kronoz.cjb.net
Ligabue canta: "Tutti vogliono viaggiare in primaaaa..."
Io ci ho provato e dopo un chilometro ho fuso il motore e bruciato
la frizione...
Newsgroup: it.comp.lang.c
Titolo: fscanf( "%lf", &val ) - Cos'è ?

mi è giunto tra le mani un codice che dovrebbere leggere un file testuale
del tipo:
0.100000 2.23003 4.56535
1.324565 2.00010 .... etc...
e funziona.
viene fatto un ciclo for con l'istruzione
  fscanf("%lf", &val);
Cos'è questo %lf ? Vado a vedere sul manuale ma trovo soltanto %f, mentre l,
come sapevo, serve come prefisso a d per indicare un longint, pensavo
servisse per indicare un long float .... cioè un double, ma non ho avuto
conferma. Oltretutto per i numeri rapresentati era sufficiente un float
semplice, quindi sostituisco %lf con %f..... si scatena l'inferno: il
programma comincia a leggere dei numeri allucinanti....
Non riesco assolutamente a capire.... potete aiutarmi ?
grazie in anticipo,
--
Alessio
----------------------------------------------------------------------------
-----------------
<Non è che ho paura di morire... è che non vorrei essere lì
 quando questo succede  (Woody Allen)>
Nick: Runamok
membro del Zizzetope fun club
HomePage: 
http://space.tin.it/io/gdcap
 (quando funziona)
----------------------------------------------------------------------------
-----------------

semplice
Non dipende dai numeri contenuti nel file, ma dalle
variabili che conterranno i numeri.  Se le variabili sono
float, allora si usa "%f", se sono double "%lf", se sono
long double "%Lf".
-- 
Andrea Laforgia (
walkie...@libero.it
)
"Usenet is a strange place" [Dennis Ritchie]

 long double "%Lf".
Beccato, grazie č proprio quello che volevo sapere (infatti la variabile da
leggere era una double), strano perň che sul manuale non c'era!!
ciao,
Alx

 long double "%Lf".
Beccato, grazie, č proprio quello che volevo sapere (infatti la variabile da


Newsgroup: it.comp.lang.c
Titolo: stringa contenuta in una altra

non c'è nessuna funzione che controlla se 1 stringa è contenuta in un altra?
se non ce ne sta 1 gia fatta...qualcuno ha gia pronto un codice d'esempio?
grazie e ciao

 ha scritto nel messaggio
news:ECpsb.13080$hV.5...@news2.tin.it...

Newsgroup: it.comp.lang.c
Titolo: Dubbio su external

Salve,
avrei due domande. Avendo questo programma diviso in più file:
// file main.cpp
external int Incrementa(void);
external int somma;
int main
{  
   Incrementa();  
   Incrementa();
}
// file b.cpp
int somma = 0;
external int Incrementa(void)
{  somma++; } 
 
In questo caso somma vale 2. Ma il valore della variabile somma rimane 2 per tutta l'esecuzione del programma (ammesso che esso sia più articolato) se ovviamente non lo modifico io? Ossia, detto in modo (forse) più preciso, quale è la durata della variabile? Quando muore "a". 
Se ho capito bene, "muore" alla fine del programma.
-- 
==============================
                        BiiO
 
www.biio.it
 
bi...@biio.it
==============================


Le variabili globali, cioe' dichiarate fuori a qualsiasi funzione, esistono
per tutta la durata del programma, da prima del main fino a dopo la fine del
main. E' giusta la tua affermazione finale.
ciao
donCiccio

 ma su questa linea non da errori?
Si, scritta cosě si, č che l'ho riscritto al volo e ho dimenticato il ";"
Comunque mi interessava comprendere la "vita" delle variabili. Grazie per
l'aiuto.

 Si, scritta cosě si, č che l'ho riscritto al volo e ho dimenticato il ";"
secondo me non ci voleva external, e' la definizione della funzione nel file
b.cpp
ciao
donCiccio

avrei due domande. Avendo questo programma diviso in piu file:
la variabile somma ha scope globale, significa che e' vista ogni dove
nel codice compilato.
Il suo valore resta 2, nel tuo esempio, finche' non chiami nuovamente
incrementa() da qualunque funzione.
Come dici tu, la variabile viene distrutta solo all'uscita dal
programma.
L'external che metti tu prima della main dice al compilatore che in
un'altro sorgente c'e' la definizione della funzione incrementa(),
la tua allusione fa solo sapere al compilatore il tipo e la quantita'
di argomenti che usa, per evitare errori.
Il linker si occupera' poi di collegare il tutto.
Spero di essere stato abbastanza chiaro :-))
Ciao
Igor Rossetti

primo messaggio di un principiante.

 external int somma;
Scusate la domanda, ma la parola chiave per indicare un variabile o una
funzione esterna non è extern?
Ciao.
Newsgroup: it.comp.lang.c
Titolo: University of the People UoPeople REVIEW

https://www.uopeople.review
 
 

 
https://www.uopeople.review
 
 
 
The best online university I have come across. Top class faculty.
 
Highly recommended.
 
10/10 marks.

 The best online university I have come across. Top class faculty.
 
Actually, it has no faculty and no professors! 😂😂😂
How could it have "top class faculty"? 🤣 Please stop writing these fake 
posts.
 
See 
https://www.uopeople.reviews
 

The main issue with this fake online university is that it is located in 
Israel, and uses and American PO box is order to claim that it is an 
"American" university. What a joke.

 10/10 marks.
 
Yet another spammer sent by the University of the People. Go away!
⚠️ SCAM ⚠️ UoPeople is a total S.C.A.M. from Israel


Yes, this "university" is a scam from Israel.
They are spamming this group with fake positive reviews written from 
India and Africa. The real review is 
https://www.uopeople.review
 

 India and Africa. The real review is 
https://www.uopeople.review
 
 
These Indian and Arab spammers are a pain in the ass. They are writing 
fake reviews for a fake online university, paid by UoPeople in Israel. 
Here is the truth: 
https://www.uopeople.review
 


I wonder why we are being invaded by these spammers from India and 
Pakistan. Their University of the People (UoPeople) is a SCAM conceived 
by an Israeli dude called Shai Reshef; we are not going to buy their 
useless "degrees". Their fake positive reviews are ridiculous. By the 
way, UoPeople should stop paying spammers to bother us.

 >> India and Africa. The real review is 
https://www.uopeople.review
 
 
yep, some of these spammers/scammers also come from Nigeria. What a joke. See 
https://www.uopeople.review
 

 10/10 marks.
 
Who else has had enough? These spammers from the University of the 
People are really pissing me off. Morons! We are not interested in your 
Israeli "University of the People". It's ridiculous.
By the way, do you want the best review about the University of the 
People? Here you are: www.uopeople.review

 People? Here you are: www.uopeople.review
 
I totally agree. These spammers paid by the University of the People are 
disseminating fake reviews all over Usenet. Enough is enough.

 disseminating fake reviews all over Usenet. Enough is enough.
 
Here's a realistic review, and more importantly it's not paid by the 
University of the People:
https://www.uopeople.review
 
https://www.uopeople.reviews
 
https://www.onlinescams.uk/uopeople-university-of-the-people-reviews
 

 
https://www.onlinescams.uk/uopeople-university-of-the-people-reviews
 
 
Thank you very much!

you're welcome

 you're welcome
 
 
Kindly, use respect for the manifest of the channel and use the Italian
language or look for a more suitable channel.
 
Thank you
Newsgroup: it.comp.lang.c
Titolo: Problema con le raw socket

Sto cercando di creare un piccolo ping con SOCK_RAW e IPPROTO_ICMP, però non
funziona.
Di fatto non mi da nessun messaggio dei errore, però il pacchetto icmp non
arriva a destinazione.....
Cosa c'è che non va?
Questo è il codice:
#include <winsock2.h>
#include <ws2tcpip.h>
#include <stdio.h>
#include <stdlib.h>
typedef struct _icmphdr
{
    BYTE   i_type;
    BYTE   i_code;                 // Tipo di messaggio icmp (8=echo
request)
    USHORT i_cksum;
    USHORT i_id;
    USHORT i_seq;
} IcmpHeader;
USHORT checksum(USHORT *buffer, int size)
{
    unsigned long cksum=0;
     while (size > 1)
    {  cksum += *buffer++;
        size -= sizeof(USHORT);}
    if (size)
    { cksum += *(UCHAR*)buffer;
    }
    cksum = (cksum >> 16) + (cksum & 0xffff);
    cksum += (cksum >>16);
    return (USHORT)(~cksum);
}
int main(){
    WSADATA  wsaData;
    SOCKET  sock;
    char *pack;
    IcmpHeader icmp;
    struct sockaddr_in sin;
   if (WSAStartup(MAKEWORD(2,2), &wsaData) != 0)
    {
 printf("WSAStartup errore!");
    }
   if ((sock = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP)) == SOCKET_ERROR)
    {
        printf("Errore  socket");
    }
    memset(&sin,0,sizeof(sin));
    sin.sin_family = AF_INET;
    sin.sin_port = 0;
    sin.sin_addr.s_addr = inet_addr("127.0.0.1");
    pack=(char*)&icmp;
    memset(&icmp,0,sizeof(icmp));
    icmp.i_type=8;
    icmp.i_code=0;
//    icmp.i_cksum=0;
    icmp.i_id=1;
    icmp.i_seq=1;
    // Calcolo checksum
    icmp.i_cksum = checksum((unsigned short *)&icmp, sizeof(icmp));
    printf("Sending Echo Request to localhost \n");
//Manda il pacchetto icmp
    if (sendto(sock, pack, sizeof(icmp), 0, (SOCKADDR *)&sin, sizeof(sin))
== SOCKET_ERROR)
    {
       printf("sendto() errore: %d\n", WSAGetLastError());
       return -1;
    }
    printf("Messaggio inviato\n");
    closesocket(sock);
    WSACleanup();
    return 0;
}

 #include <ws2tcpip.h>
Dato che fai uso di caratteristiche non standard, dovresti rivolgerti ad 
un newsgroup relativo al tuo sistema, come it.comp.programmare.win32.
Newsgroup: it.comp.lang.c
Titolo: struttura

Salve,
premetto che sono meno di un principiante.
Da una struttura, ad esempio:
 struct OLD_REC{
 char ba[5];
 char ca[5];
 char fi[5];
 char ge[5];
 char mi[5];
 char na[5];
 char pa[5];
 char ro[5];
 char to[5];
 char ve[5];
 };
vorrei creare un file binario, ad esempio: "prova.txt" di  10 caratteri
 composto da due elementi di OLD_REC.
Attualmente, per me è difficilissimo risolvere il problema..
Ringrazio anticipatamente,chi eventualmente volesse aiutarmi.
Saluti
Michele

 ha scritto nel messaggio
news:9cjt8.8710$vF6.2...@news2.tin.it...

Trovi uno spunto dalla risposta di Kronos a Chiara

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

 
http://members.xoom.it/claudio311
Newsgroup: it.comp.lang.c
Titolo: Programmino...

>Uno dei problemi che non sono riuscito a risolvere è ...
Ho ridifinito (limitatamente alla mia persona) la scala dei non-ot in
un gruppo che parla di un linguaggio di programmazione.
Sono in tema in ordine di importanza:
1) I programmi scritti in tale linguaggio
2) I programmi scritti in un altro linguaggio
3) Lo 'speudo codice' o la descrizione di procedure
4) Discussioni e critiche sugli aspetti del particolare linguaggio o
dei particolari programmi.
5) Richieste di aiuto per procedure o programmi.
Che ne pensate?

 Che ne pensate?
Che basta e avanza il manifesto del newsgroup.
Ciao,
Nicola
Newsgroup: it.comp.lang.c
Titolo: editor c

buongiorno
vorrei fare una domanda. esiste un editor c completo?
per completo intendo una cosa simile a eclipse/netbeans per java,
ossia con autocompletamento, con "inserimento" automatico delle
librerie necessarie ecc.
ps: ho provato sia il plugin x netbeans che quello x eclipse, ma non
hanno tali caratteristiche.
grazie

Nel mezzo del cammin di nostra vita, mi ritrovai con anarchix85 che
diceva:

Usi Linux, Windows o Mac?
Per Linux ti consiglio di imparare a utilizzare Vim oppure Emacs, sono un 
po' difficili all'inizio, ma una volta padroneggiati sono potentissimi.
Per Win c'era DevC, altrimenti c'è Visual Studio, che però costa diversi 
soldini.
Per Mac mi pare ci sia CodeBlock (ma conosco poco il Mac :-( )
-- 
python -c 'print "ttoc.liattg@anyattrol".replace("p", "a").replace("tt", 
"m")[::-1]'

 
Per Mac c'è XCode gratuito e fornito con il sistema operativo, ottimo 
anche per il C.

 po' difficili all'inizio, ma una volta padroneggiati sono potentissimi.
utilizzo linux.
comunque emacs, che io sappia, non ha tali potenzialità (vedi
inserimento automatico delle librerie necessarie) e poi volevo
qualcosa di più "bellino" graficamente.

 inserimento automatico delle librerie necessarie) e poi volevo
Allora se usi linux, potresti usare KDevelop (KDE) oppure Anjuta (Gnome).
Non sono sicuro, però che ci siano editor che abbiano l'inserimento 
automatico delle librerie, il C è ancora all'antica:-P


 automatico delle librerie, il C č ancora all'antica:-P
TextMate su OS X lo fa. Ma in effetti bara.
-- 
blog:  
http://www.akropolix.net/rik0/blogs
 | Uccidete i filosofi,
site:  
http://www.akropolix.net/rik0/
      | tenetevi riso e
forum: 
http://www.akropolix.net/forum/
     | bacchette per voi.

 TextMate su OS X lo fa. Ma in effetti bara.
Tra l'altro la vedo abbastanza dura, vista la (non)
 gestione dei namespaces del C
-- 
"Le opinioni dei fanatici prescindono dai fatti"


  gestione dei namespaces del C
Ah beh,immagino che si tenga un file di associazione fra librerie note e
funzioni. Oppure se le parsa e tutto.


grazie a tutti.
cmq ho risolto. ho installato netbeans 6.0 che risolve (abbastanza 
egregiamente) il mio problema..... :-)
lo so.. non è forse la scelta più "C-like", ma per quello che devo fare.... 
va più che bene!! 

 va più che bene!! 
Ognuno è libero di farsi male come crede, dopotutto. :)



Sconsiglio Visual Studio, e' un ottimo IDE, ma devenv, il compilatore
e' C++, non C.
Li Gnomisti potrebbero trovare carino Anjuta.
Newsgroup: it.comp.lang.c
Titolo: [Forse OT]

Cosa significa di preciso GNU ed OPEN GL?
Scusatemi moltissimo se la domanda può risultare OT, ma non sapendo cosa
siano non posso neanche scegliere il ng adatto. Però penso che c'entri col
C, almeno lo spero :-)).
Scusate ancora.
---
Ramses
---
icq:39860665
http://knowledgeparty.cjb.net
http://evilz0ne.cjb.net

Cosa significa di preciso GNU ed OPEN GL?
Gnu is Not Unix (acronimo ricorsivo...)
Open Graphic Library (ma di questo non sono sicuro)
Anto
--
Antonio Cuni, 19 anni, studente
Brainbench C++ Master: 4.6, higher than 98% of all previous test takers.
C Language: 3.32, higher than 79% of all previous test takers.
Guida C/C++ di Programmazione.it: 
http://cpp.programmazione.it

Newsgroup: it.comp.lang.c
Titolo: Faq di Marco Coppo e matumoto non accessibile

Salve a tutti.
Leggendo la faq di it.comp.lang.c a cura di Marco Coppo, avrei voluto 
dare una guardata (si tratta di algoritmo di generazione numeri 
(pseudo) casuali) al:
"per algoritmi migliori si consiglia: 
http://131.113.34.4/matumoto/emt.html
"
solo che il link non funzia.
Qualcuno conosce un qualche mirror della summenzionata pagina o conosce 
altri luoghi dove potrei recuperare quell'articolo-pagina?
Ciao e grazie per eventuali repliche.
marco

 Q: What's the most annoying thing on Usenet?

 oto/>
Grazie mille.
Ciao, marco

 Grazie mille.
Non ho fatto altro che usare Google ^_-
-- 
A. Top posters
Q. What's the most annoying thing on Usenet?

 > oto/>
Dove non funziona il link?
Index of /~gammel/matpack/archive/Random/matsumoto
 Name                    Last modified       Size  Description
---------------------------------------------------------------
 Parent Directory        05-Aug-2002 01:06      -  
 mt19937b-int.c          04-Aug-2002 20:09     3k  
 mt19937b-real.c         04-Aug-2002 20:09     3k  
 tt800.c                 04-Aug-2002 20:09     3k  
C:\>iao Angelo
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Dove non funziona il link?
Parlavo inizialmente di quello presente nella faq, ovvero:
http://131.113.34.4/matumoto/emt.html
che non funzia, anche mettendo la s tra la "t" e la "u" di matumoto.
Ciao, marco
Newsgroup: it.comp.lang.c
Titolo: Posizione e dimensione controlli

In SDK (c puro) per Win32, non riesco a rilevare la posizione e la
dimensione corretta di un controllo (avendone l'handle) in una applicazione
dialogica (avendoli descritti in un .rc).
Ho provato con GetClientRect() e GetWindowRect():
.
.
          case STN_CLICKED:   
            hwndapp=GetDlgItem( hwnd, IDC_STATIC_PICTURE );
            //Boolapp=GetWindowRect(hwndapp,&rect);
            //Boolapp=GetClientRect(hwndapp,&rect);
            MapDialogRect( hwnd, &rect ); // In Pixel
ma poi, prvando a spostare il controllo con una MoveWindow() si nota che
l'acquisizione della posizione e dimensione non sono corrette...
Se qualcuno, per caso, ...
G R A Z I E

...

La posizione di un control é sempre relativa all'area cliente del parente,
per ottenerla e quindi poterla usare con MoveWindow, usando il tuo caso
sopra mensionato:
    case STN_CLICKED:
        // ottiene l'handle del control
        hCtrl = GetDlgItem( hDlg , IDC_STATIC_PICTURE );
        // ottieni coordinate screen (relative al desktop)
        GetWindowRect( hCtrl , &rect );
        // trasforma rect.left e rect.top in relative al Dialog parente
        ScreenToClient( hDlg , (LPPOINT) &rect.left );
        // trasforma rect.right e rect.bottom in relative al Dialog parente
        ScreenToClient( hDlg , (LPPOINT) &rect.right );
        // usa a tua discrezione dell coordinate
        ....
        ....
Saluti, Neil
Newsgroup: it.comp.lang.c
Titolo: Pseudocodice errato?

Salve, sto studiando dal libro della Deitel&Deitel. A pagina 60 ho un
dubbio:
viene mostrato il seguente pseudocodice:
Problema: Determinare la media della classe per l'esame con
inserimento di voti non conosciuto a priori (valore sentinella)
Pseudocodice: 
Inizializzare il totale a zero
Inizializzare il contatore a zero
Prendere in input la prima valutazione
Finché l'utente non ha ancora immesso il valore sentinella
 Aggiungere questa valutazione al totale corrente
 Aggiungere uno al contatore di valutazioni
 Prendere in input la prossima valutazione (o forse il valore
sentinella)
Se il contatore non è uguale a zero
 Impostare la media con il totale diviso per il contatore
 Visualizzare la media
altrimenti
 Visualizzare "Non sono state immesse valutazioni"
Io non riesco a capire come il contatore diventi non uguale a zero,
per caso quando immetto il valore sentinella (ad esempio -1) il
programma vede che il contatore da a 25 per esempio e quindi esegue il
calcolo della media?
Grazie.

 Io non riesco a capire come il contatore diventi non uguale a zero,
Se la prima volta che passi dall'istruzione (2) l'utente immette subito il
valore sentinella, quante volte passi dall'istruzione (3)?
E quindi, quando arrivi all'istruzione (4), quanto vale il contatore?
Ultima domanda: ma che c'entra il linguaggio C con questo complicatissimo
problema di logica?
--
Cingar
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

problema di logica?
soltanto a riempire le pagine del libro...
Praticamente il libro prima sviluppa l'algoritmo  in pseudocodice con
raffinamenti topdown e dopo, in teoria, la scrittura del programma è
quasi "guidata"... si dice sia inutile ragionare in modo pseudo ma a
volte aiuta a non produrre errori!
Voi solitamente scrivete i programmi direttamente in C?

 ha scritto nel messaggio
news:0k3hj01o12r5mp1mn...@4ax.com...

Solitamente io prima di implemntare in C mi faccio uno schizzo su carta di
quello che devo realizzare, ma non andandomi a scervellare per scrivere lo
pseudocodice; piuttosto faccio esempi numerici e/o pratici di quello ch eil
programma dovrà fare. Poi comincio a scrivere il codice in maniera modulare
verificando pian piano il corretto funzionamento dei vari pezzi scritti
(compilazione corretta e risultati corretti). Se il programma è molto
complicato, piuttosto realizzo altri mini programmini per simulare solo una
parte del programma generale, e una volta testata la funzionalà li porto sul
programma generale.
Ciao
Newsgroup: it.comp.lang.c
Titolo: Recuperare dei Dati da un Vecchio Database

Salve a tutti!!
Non so se sono OT..ma ho un grande problema da risolvere..
Dovrei recuperare dei dati importanti da un vecchio database
bibliografico che gira sotto DOS. Il programma credo che si chiami IBM
Assistant e i dati sono memorizzati in files con estensione .FIL
Qualcuno conosce questa tipologia di file? Se solo riuscissi a trovare
qualche documentazione riguardo alla struttura dati implementata in
questi files per poi creare un programmino anche in C per estrapolarne
i Dati.
                           Qualche consiglio?? Non so proprio cosa
fare!!
P.S.: Posso anche spedire i files in questione..

 ha scritto nel messaggio
news:421b61a.04042...@posting.google.com...

In genere i dbms hanno delle procedure di esportazione dei dati in formato
"testuale".
Una volta esportati, possono essere reimportati in un db + recente.
Spero di non aver scoperto l'acqua calda.
Ciao,
Ema

 fare!!
Soluzione semplicissimaa: Assistant implementa delle funzioni di stampa,
che sono in grado di stamparti tutto il contenuto delle tabelle.
Ovviamente la stampa la puoi fare anche su file, ed e' un ottimo modo per
estrarre i dati. Unico problema, se non ricordo male il record ascii in
uscita, ha un lunghezza massima (mi sembra 255). Questo implica un numero
limitato di campi che puoi esportare simultaneamente, ma lo risolvi con
delle esportazioni successive e poi facecndo un merge.
Una volta esportato, si tratta solo di leggere da file di testo.

...

Ringrazio infinitamente per i consigli!..ma avevo dimenticato di dire
una cosa importante, purtroppo sono in possesso soltanto degli archivi
e non del programma (IBM Filing Assistant) in un quanto mi si e'
danneggiato il supporto sul quale era memorizzato e non so proprio
dove trovarlo..

 fare!!


Newsgroup: it.comp.lang.c
Titolo: manuali on line C/C++

Ciao,
volevo chiedervi se sapete indicarmi un sito in cui possa trovare le
nozioni principali e basilari per programmare in C/C++.
Vi prego
aiutatemi,
grazie 1000 dy Marta.
--------------------------------
Inviato via 
http://usenet.iol.it

 ha scritto nel messaggio
news:151Z24Z24Z205Y...@usenet.iol.it...


 nozioni principali e basilari per programmare in C/C++.
Ce ne sono tanti di tutorial in rete, potresti cercare su google. Così me ne
viene in mente solo uno:
http://host.aspide.it/trickyc/
Altrimenti prova a cercare su
www.manuali.net


http://host.aspide.it/trickyc/
Lo sconsiglio vivamente.
--
Andrea Laforgia - walkietalkie(at)
libero.it
#exclude <windows.h>

 ha scritto nel messaggio
news:3b2d828a...@news.libero.it...


 wrote in message
151Z24Z24Z205Y...@usenet.iol.it...


una tua risposta in merito. Grazie
E' pieno di errori, oltre ad essere molto obsoleto.
E' un testo "a la Schildt", per intenderci (ma dare questa
definizione vuol dire vantarlo).

Newsgroup: it.comp.lang.c
Titolo: strcat dove sbaglio??

#include <string.h>
#include <stdio.h>
int main (void) {
    char *uno;
    char *due="ciao";
    char *tre="mondo";
    uno=strcat(due,tre);
    printf("%s",uno);
}
Segmentation fault
Grazie :)

 Grazie :)
Te credo, se non allochi spazio per quelle stringhe...
Bye,
 Emmanuele.
-- 
Emmanuele Bassi         |             [ 
http://digilander.iol.it/ebassi/
 ]
emmanue...@iol.it
  |
GnuPG Key fingerprint = 4DD0 C90D 4070 F071 5738  08BD 8ECC DB8F A432 0FF4

 ha scritto nel messaggio
news:3B1EA50E...@tiscalinet.it...


 Te credo, se non allochi spazio per quelle stringhe...
Era un po' tardi, e sono stato criptico.
Innanzitutto, c'erano due errori nel sorgente.
1. char *strcat (char *dest, const char *src);
strcat ritorna un pointer alla stringa "dest". A questo punto che te ne
fai di dichiarare un "char *uno;", quando la stringa somma delle due e`
"due", nel tuo esempio? Ad ogni modo, e` un'informazione ridondante, ma
non e` propriamente un errore. Se invece intendevi fondere due stringhe
in una terza, e` un errore.
2. se non allochi spazio a sufficienza per la stringa destinazione, sia
in maniera statica, sia in maniera dinamica, non puoi chiederti perche'
in esecuzione ti pianta un bel SIGSEGV con dump del core.
Ecco un esempio per entrambi i metodi:
#v+
#include <stdio.h>
#include <stdlib.h>
void dinamico ()
{
        const char *src = "sorgente";
	/* dato che si passa per malloc(), non puoi asegnare
	 * direttamente la stringa.
	 */
        char *dest;
        /* allochiamo spazio a sufficienza. */
        if (NULL == (dest = malloc (sizeof (char) * 64)))
                exit (-1);
 
        strcpy (dest, "destinazione e ");
        strcat (dest, src);
        printf ("dest: %s\n", dest);
}
void statico ()
{
        const char src[32] = "sorgente";
        char dest[64] = "destinazione e ";
        strcat (dest, src);
        printf ("dest: %s\n", dest);
}
int main ()
{
        printf ("staticamente allocato: \n");
        statico ();
        printf ("dinamicamente allocato: \n");
        dinamico ();
        return 0;
}
#v-


Newsgroup: it.comp.lang.c
Titolo: Watcom c/c++

Salve a tutti, sono da poco approdato al modo del C/C++ ed ho scoperto
che molti sorgenti sparsi qua e la sono fatti per il compilatore
Watcom, che non trovo. Qualcuno sa dirmi dove lo posso trovare? O
qualcuno puo' postarmelo? (se non e' grande).
Grazie.

Ciao Enzo, cosa fumi tu? ;)
Enzo ha scritto:

  Il Watcom e` un prodotto commerciale, non si trova in giro e,
soprattutto, non si posta. Al limite, puoi cercare su Internet il sito
della casa produttrice e vedere se fanno offerte: la Borland, per
esempio, rilascia gratuitamente le vecchie versioni dei suoi prodotti.
	Alla prossima,
		Marco


Watcom e' stato acquisito da Sybase
Newsgroup: it.comp.lang.c
Titolo: Ma cosa sono???

Li posso eliminare, vero???
Certamente.
ciao

 Ciao, Stefano.
Ti sei preso il virus HappyBorland, l'unico modo di eliminarlo e'
aumentare la memoria del tuo PC, ovvore la memoria di default delle
tue shell DOS.
Ciao, Andrea
P.S. HappyBorland e' anche chiamato
FaccioSwapQuandoNonRiescoAStareInMemoria !!!
P.P.S. Ma TMP, TEMP, TMPDIR e TEMPDIR puntano a una direcory valida,
nel tuo autoexec.bat? (per WinNT la cosa e' diversa...)
-- 
      /@\     -----------------+--------------
_    /,--*~~~  Andrea          | arimicci @@
 (  //              Rimicci    |  aritaly. com
 )  :| ------------------------+--------------
 |_ :|  C,C++,cgi,miva,Java,php Developer and
 \'' |  OS/2 Warp Server for E-business admin
  \_/  ---------- OS/2 V5 "Phoenix" ----------

Newsgroup: it.comp.lang.c
Titolo: open O_flag

compilando con dev c++ un
"descrittore=open("pathname",O_RDONLY)" mi dice che il flag non e' stato
dichiarato !
Eppura ho gia' incluso fcntl.h e dentro di esso il flag e' definito !!
Avete idee al riguardo ?
Grazie a tutti e ciao


"Outside of a dog, a book is man's best friend.
Inside of a dog, it's too dark to read."
			-- Groucho Marx --
Newsgroup: it.comp.lang.c
Titolo: Porta parallela

Salve,
vorrei riuscire a programmare da visual C in windows la porta parallela per
ricevere 8 bit di dato.
Mi sembra di aver capito che bisogna programmare la parallela in modo
bi-direzionale ma non so come farlo.
Qualcuno conosce un modo e mi puo` fornire alcuni suggerimenti ?
Molte molte grazie.
Stefano

Ciao, anche se non hai specificato il sistema operativo presumo sia Win32
(Win95 o NT).
In questi ambienti per scrivere da una applicazione user mode su una porta
che e' mappata in RAM e' impossibile a meno di non utilizzare le
funzionalita' di un apposito device driver.
Su 
http://www.sstnet.com/ftp/unsupported/port95nt.exe
 trovi un device driver
generico che ti permette di scrivere e leggere da qualunque porta mappata in
ram. Il software e' free e corredato da esempi sia in C che in VB.
In DOS non e' necessario tutto questo e puoi usare le funzioni
inport/outport o equivalenti.
Per leggere dalla porta parallela devi dapprima verificare che sia possibile
abilitare il funzionamento in modalita' bidirezionale dal punto di vista
hardware (attraverso le impostazioni del BIOS se e' una parallela integrata
nella MB imposta Bi-Dir o EPP, se e' esterna verifica tra le
caratteristiche).
Le parallele sono mappate solitamente a 0x378, 0x278 o 03BC.
A questo indirizzo base corrisponde la porta dove e' presente il dato da
leggere (quando e' bidirizionale) o da scrivere.
unsigned char dato = inport(0x378);
oppure outport(0x378, 0xff).
Quando la porta non e' bidirezionale, il dato che leggi e' l'ultimo che hai
scritto.
Per abilitare il funzionamento bidirezionale, deve settare il bit 5 del
registro di controllo della porta che e' mappato 2 byte dopo l'indirizzo
base (es 0x37A) es: outport (0x37a, 0x20).
Per una descrizione completa dei (2) registri della porta parallela cerca
l'interrupt list di Ralph Brown (il file ports.lst).
In 
ftp://volftp.tin.it/pub/pc/msdos/utility/printing/lpttst12.zip
 trovi un
semplice programma DOS che serve a verificare il funzionamento della tua
porta in modalita' bidirezionale.
Ti saluto.
Marco
Newsgroup: it.comp.lang.c
Titolo: Puntatore a funzione e void *

Un compilatore che sto usando (per microcontrollore 16 bit) non mi
permette di fare la seguente cosa:
  typedef struct {
    ...
    void *ptr;
    ...
  } tag;
  void myfunc();
  tag mytag = { ... (void*)myfunc ... };
In pratica non riesco ad associare ad un puntatore nullo (void*) un
puntatore a funzione. L'errore che mi viene restituito è:
  initialization: constant expression is expected for file scope
variable: `mytag'
Evidentemente lo spazio di indirizzamento dei dati e delle funzioni,
nella mia architettura, sono diversi. Possibile che non esista
soluzione?
Ho risolto così:
  typedef struct {
    ...
    void *ptr_data;
    void (*ptr_func)();
    ...
  } tag;
ma spreco un sacco di spazio inutile.
Oppure si può fare così:
  typedef struct {
    ...
    union {
      void *data;
      void (*func)();
    } ptr;
    ...
  }
Però, in questo caso, non riesco ad pre-inizializzare (non ricordo il
termine esatto) le variabili, cioé non posso fare una cosa del genere:
  tag mytag = { ... {myfunc} ... };
Penso che la pre-inizializzazione di membri di union (che non siano
il primo) si possa  fare solo con compilatori C99... il mio non lo è.


Infatti lo standard dice espressamente che un
tipo void * puň essere convertito a o da un puntatore
ad un tipo incompleto o un oggetto, quindi non ad una funzione.
Il puntatore ad un oggetto o tipo incompleto, non funzione, puň essere
convertito ad un puntatore a void e a sua volta
riconvertito al tipo iniziale ottenendo
lo stesso valore.
Correttamente hai successivamente usato un puntatore a funzione.
Giorgio Silvestri

 Correttamente hai successivamente usato un puntatore a funzione.
In sostanza mi stai dicendo che non c'è soluzione al mio problema,
oltre quella che ho proposto.
E' un vero peccato. Eppure ho provato su PC e assegnare un puntatore
di funzione ad un puntatore void non crea nessun problema. Ho fatto
tutte le prove su PC e poi ho trasferito tutto su compilatore per
il microcontrollore ed ho avuto questa spiacevole sorpresa :(((
La union sarebbe l'ideale, ma che brutto non poterla inizializzare
come voglio!!

 ha scritto nel messaggio
news:G3Tvg.47826$zy5.9...@twister1.libero.it...

In effetti in modo massimamente portabile non mi sembra si possa
fare molto meglio, oggetti e funzioni non sono "commensurabili".
Il fatto che sul PC funzioni non implica che debba funzionare ovunque,
non prevedendolo lo standard.
Tra l'altro stai attento al trasferimento da PC ad ambiente
per microcontrollore.
Tutte le size dei tipi potrebbero essere diverse.
Rendi parametrico il tutto con cose di questo tipo, il C99 fornisce
un piccolo supporto in più in questo senso con i vari int32_t ecc:
#if defined (MICRO_ENV)
    typedef unsigned long u32;
    typedef unsigned char u8;
    /* ecc. */
#endif
#if defined (PC_ENV)
    typedef unsigned int u32;
    typedef unsigned char u8;
    /* ecc. */
#endif
E poi usa u32/u8/... dove hai veramente necessità di sapere
la dimensione dei tipi.
Giorgio Silvestri
Newsgroup: it.comp.lang.c
Titolo: Registrazione eventi windows

Ciao a tutti.
Devo realizzare un'applicazione windows (XP) che registri eventi generati da applicazioni, come 
apertura e chiusura file, start e close, accesso a indirizzi web ecc.
Non saprei che strumento risulta più efficiente, conosco C e C++ ma non .NET, devo realizzare 
l'applicazione in C o C++.
Qualcuno potrebbe consigliarmi qualche libreria o toolkit che metta a disposizione metodi di più 
alto livello rispetto le API di windows, se ci sono?
L'uso di .NET potrebbe risultare talmente vantaggioso per questo problema in termini di tempo da 
prendere in considerazione di imparare a svilupparci?
Se il metodo più semplice è quello di usare le API di windows non c'è nessun problema, accetto 
qualsiasi suggerimento che mi renda produttivo per questo problema, attualmente ho iniziato a 
cercare nelle API di windows ma non mi sembra molto semplice catturare queste informazioni, ho le 
idee piuttosto confuse.
Grazie a chiunque vorrà darmi suggerimenti :-)

 accesso a indirizzi web ecc.
Sotto Windows è possibile sfruttare gli hook globali.
Consulta MSDN alla voce "Windows Hooks".
Spostati comunque su it.comp.programmare.win32, la discussione di 
questi argomenti è OT qui dentro.

 accesso a indirizzi web ecc.
Sotto Windows è possibile sfruttare gli hook globali.



Ok, ti ringrazio per il suggerimento, già spostato :-)
Ora cerco questi hooks :-)

Newsgroup: it.comp.lang.c
Titolo: domanda sulle matrici

supponete di avere una variabile
unsigned char a[4][4];
e' giusto dire che
a[1][2] == *(a+1*4+2)
o invece e'
a[1][2] == *(a+2*4+1)
o e' una cosa che non e' specificata e ogni compilatore puo' fare quello 
che preferisce?

 che preferisce?
sarň scemo, ma non capisco la tua domanda, mi pare tutto segato.
cioč, č vero che in c le matrici sono allocate in memoria 
contiguamente riga dopo riga, ma quello che hai scritto non 
mi pare proprio esatto.
per ottenere quello che dici dovresti fare qualcosa tipo:
unsigned char *p=&a[0][0];
allora:
a[1][2] == *(p+4+2);
ciao.

 a[1][2] == *(a+2*4+1)
foo a[d1][d2];
&a[i][j]  ==  (foo*)a + i*d2 + j
foo a[d1][d2][d3];
&a[i][j][k]  ==  (foo*)a + i*d2*d3 + j*d3 + k
             ==  (foo*)a + (i*d2 + j)*d3 + k
foo a[d1][d2][d3][d4];
&a[i][j][k][l]  ==  (foo*)a + i*d2*d3*d4 + j*d3*d4 + k*d4+l
                ==  (foo*)a + ((i*d2 + j)*d3 +k)*d4 + l
-- 
Horst

 &a[i][j]  ==  (foo*)a + i*d2 + j
ottimo

 wrote:
[CUT]
Come dovrei fare per dichiarare un puntatore ad una matrice allocata
dinamicamente?
se 
int *Matrice;
Matrice = (int *) malloc(sizeof(int)*(16));
Posso accedere a 
Matrice[15]
ma non a
Matrice[3][3]
Come si può accedere nella seconda forma?
Grazie,
-- 
Poochie©

 Come si puň accedere nella seconda forma?
int (*Matrice) [5],
Matrice = malloc (3 * sizeof *Matrice);
Matrice[2][4] = 42;
-- 
Horst
Newsgroup: it.comp.lang.c
Titolo: Accesso al file system

Ciao a tutti!
Vorrei scrivere un programma in C che mi permetta di accedere
fisicamente al disco in lettura. Con questo voglio dire che vorrei avere
la possibilità di leggere direttamente i byte presenti su un'unità disco
senza utilizzare le classiche funzioni dei file.
Il problema è proprio questo: immaginate di avere una macchina in cui
non sia presente un sistema operativo...un programma scritto in C che
faccia uso di fopen oppure di open per aprire un file e dlle classiche
funzioni di lettura non funzionerebbe, giusto? (correggetemi se sbaglio
:-))
Ebbene, tempo fa avevo scritto una cosa simile che utilizzava INT 13h,
l'interrupt del bios, ma penso che ci sia anche un altro modo per avere
accesso in lettura...anche perchè gli interrupt del bios sono a 16 bit
quindi se uno avesse intenzione, ad esempio di scrivere un S.O. non
potrebbe utilizzarli.
Esiste quindi un modo per accedere tramite codice C puro? (mi va bene
anche codice assembler da integrare in procedure scritte in C)
Ciao e grazie
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 anche codice assembler da integrare in procedure scritte in C)
Ni. Ovvero: se non hai un sistema operativo, allora devi accedere 
direttamente all'HW. E il codice è diverso a seconda di quale HW hai. Se 
invece hai un sistema operativo allora NON PUOI accedere direttamente 
all'HW perché il sistema operativo non te lo permette (a meno che non 
sia DOS, ma quello non è un sistema operativo per come lo si intende oggi).
Quindi la risposta è:
1) non è un problema di C, ma di accesso all'HW (e quindi siamo OT).
2) se sulla macchina gira un sistema operativo moderno, allora NON PUOI. 
Punto.
3) se la macchina NON ha un sistema operativo, ti serve un compilatore 
che ti permetta di generare una immagine binaria assoluta e gli 
strumenti per "bruciare" una eprom con quell'immagine. Per il resto la 
risposta dipende strettamente da quale HW hai (e torniamo OT).

 
Se non hai un sistema operativo non hai nemmeno le funzioni fopen ed 
open visto che sono wrappers per le chiamate di sistema.
Ciao, Alberto

L'int 13 funziona solo a livello di DOS [...]
Anche questo non è del tutto vero.  Che vuol dire "a livello di DOS" ?
L'int 13h è un interrupt del BIOS, prescinde dal sistema operativo.

 L'int 13h è un interrupt del BIOS, prescinde dal sistema operativo.
Semplificavo anche in questo caso riferendomi al quasi unico sistema nel 
quale l'int 13 è effettivamente funzionante. Nota che perché l'oint 13 
funzioni bisogna che la CPU sia in "real mode" e non in "protected mode" 
(oppure che stia eseguendo il codice in modalità virtuale). In ogni caso 
quasi nessuno dei sistemi operativi che trovi oggi ti permettono di 
chiamare l'int 13 impunemente.

funzioni bisogna che la CPU sia in "real mode" e non in "protected mode" 
Lo so benissimo.  Sottolineavo il fatt che non c'è nessun legame tra
int 13h e un sistema operativo specifico.
Newsgroup: it.comp.lang.c
Titolo: Ricezione caratteri da tastiera

Salve a tutti,
sto programmando in ANSI C (sotto cygwin, quindi unix/linux),
e vorrei sapere se esiste una funzione che mi indichi se l'utente ha
digitato un carattere.
Sotto Windows ho la funzione _kbhit(), ma è una funzione non-ANSI.
Forse c'è nella libreria NCURSES?!
Ciao.

  Ciao.
ciao ...
-- 
#include <stdio.h>
int main(void){char c[]={10,65,110,116,111,110,105,111,32,98,97,114,98,111,110,
101,32,60,104,105,110,100,101,109,105,116,64,116,105,115,99,97,108,105,110,101,
116,46,105,116,62,10,10,0}; printf("%s",c); return 0;}
Newsgroup: it.comp.lang.c
Titolo: Convertire Unicode

Ciao a tutti!
 
Ho il problema di dover convertire un carattere che mi arriva in Unicode
(2 Bytes) in modo da poterlo aggiungere ad una stringa (std::string, ma mi
va bene anche un semplice char *).
 
E' da due ore che cerco in giro, ma non riesco a capirci niente...
 
Sto traducendo una funzione da Javascript a C e l'originale e':
 
  String.fromCharCode(HexToNum(hex1)*256+HexToNum(hex2))
 
Grazie
Luca Bertoncello
(
luca...@lucabert.de
)
 
-- 
 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it
 
 
 


 
JavaScript, a differenza di C, usa Unicode nativamente.
 
 
Ciao  Manlio

On Dec 15, 1:24 pm, Manlio Perillo <manlio_perill...@SPAMlibero.it>
wrote:

Purtroppo sono molti i programmatori C/C++ abituati con ASCII che
hanno una gran confusione su UTF-8 e Unicode. Io ho trovato questo
http://www.cl.cam.ac.uk/~mgk25/unicode.html
 abbastanza conciso e
illuminante (specialmente su come la cosa impatta sul codice C
preesistente), spero possa essere utile ;-)
Ciao!

 va bene anche un semplice char *).
 
Ciao,
 
non ti conviene cercare una libreria gia' pronta per gestire gli
unicode?
 
Esempio (i primi 2 risultati di google):
 
http://stackoverflow.com/questions/114611/what-is-the-best-unicode-libra
 
ry-for-c
http://stackoverflow.com/questions/313555/light-c-unicode-library
 
 
Ciao Jack
-- 
Yoda of Borg am I! Assimilated shall you be! Futile resistance is, hmm?

 preesistente), spero possa essere utile ;-) Ciao!
 
 
Su it.comp.lang.python (anche qui molti hanno le idee poco chiare) 
suggeriamo
http://www.joelonsoftware.com/articles/Unicode.html
 
 
 
Ciao  Manlio


Vedo, ringrazio e rilancio di 
http://www.joelonsoftware.com/articles/Unicode.html
 -- quando l'ho letto 
la prima volta partivo da zero :)
 
Per quel che riguarda il codice invece mi sembra abbastanza semplice:
	String.fromCharCode(HexToNum(hex1)*256+HexToNum(hex2))
 
"HexToNum(hex1)*256+HexToNum(hex2)" vuol dire che per esempio converti 
[1,2] in 256*1 + 2 = 258, e poi ti vedi che cos'è 258 in unicode;
String.fromCharCode(), invece... beh, goooooogle lo sa di sicuro, ma il 
punto è che la sequenza è:
1. converti il carattere da come è rappresentato (qui: 2 bytes) nel
    corrispondente carattere unicode (un numero grosso a piacere)
2. fromCharCode() --> ti metti quel numero nella rappresentazione
    che usi nel tuo programma; in particolare UTF8 usa dei semplicissimi
    "char *", è semplice, e si trova un sacco di codice già scritto.
    Lo svantaggio è che usa 1..N "char" per rappresentare un "carattere",
    per cui finchè devi copiare stringhe in giro, confrontarle etc
    puoi usare strcmp&co, ma non ad esempio strchr
 
scusate l'attacco di logorrea

 [...]
 
 
Ciao  Manlio


Mea culpa, ho letto "non riesco a capirci niente..." nel messaggio di 
partenza e per non aggiungere alla confusione ho esagerato con lo 
spannometro :)
Newsgroup: it.comp.lang.c
Titolo: Chi mi aiuta?

una frase?,
Stessa risposta.
Anche colorare (o meglio tutto cio' che ha a che fare con le
periferiche a basso livello) non e' supportato in modo standard.
Devi rifarti alla documentazione che accompagna il tuo compilatore.
I compilatori borland/djgpp supportano textcolor() e textbackground().

Be', forse uno standard aiuterebbe....
Parlo delle sequenze escape ANSI, piu' standard di cosi'...
Good Luck!
 - Andrea
-- 
------------------------------------
arimicci @@ aritaly. com

Parlo delle sequenze escape ANSI, piu' standard di cosi'...
Sotto quali sistemi ? 
Non esiste una implementazione standard, perche' nessuna
implementazione puo' essere standard.


Piu' che di implementazione, parlavo di sintassi e semantica.
Per esempio, qualunque client telnet ANSI, quando riceve una sequenza di
escape ansi, la interpreta come scritto nelle specifiche.
E questo vale per qualunque s.o./hardware dove esso e' implementato.
Ovviamente, come hai detto, l'implementazione dipende esattamente dal
s.o. e dall'hardware usati, e non sara' standard. Quello che conta e'
che persone come me possano scrivere un server telnet ansi, sapendo che
non importa quale client ansi si connettera', perche' io so che con una
certa sequenza cancello lo schermo, con un altra sposto il cursore, ecc
ecc.
Scusate se prima non ero stato piu' chiaro.
 - Andrea
P.S. per esempio, in DOS/Win, se si carica il driver ANSI, ANSI.SYS, al
boot, si possono usare le sequenze escape ansi per ottenere, in modo
standard, operazioni come cancellare lo schermo, ecc.
-- 
------------------------------------
arimicci @@ aritaly. com  .~~~.  ))
                (\__/)  .'     )  ))
  Andrea        /o o  \/     .~
      Rimicci  {o_,    \    {
                 / ,  , )    \     .
 * Developer *   `~  '-' \    } ))
C C++ cgi miva  _(    (   )_.'
Java           '---..{____}
OS/2 Warp Server for Ebusiness admin
--------- OS/2 V5 "Phoenix" --------

standard, operazioni come cancellare lo schermo, ecc.
Capisco, pero' mi fai vedere come si fa sotto Unix ? ;)


Basta usare una shell che supporta gli escape ansi... non so
se esiste pero'...
Se non c'e', bisognerebbe inventarla !!!
eheheh ;)
Ciao, - Andrea


 esiste pero'... Se non c'e', bisognerebbe inventarla !!!
  Esiste e si chiama bash. E non e` nemmeno l'unica... ;)
	Alla prossima,
		Marco

  Esiste e si chiama bash. E non e` nemmeno l'unica... ;)
E sotto la piattaforma ALOS che ho inventato io ? ;)
Newsgroup: it.comp.lang.c
Titolo: prodotto tra matrici quadrate usando la ricorsione

Ciao ragazzi,sono uno nuovo del linguaggio C++ e sto adesso  imparando
la ricorsione.Dovrei implementare il prodotto tra matrici quadrate  n*
n usando la ricorsione secondo tale pseudo codice:
Data la matrice A
a11 a12
a21 a22
e la matrice B
b11 b12
b21 b22
if n==1
c11 =a11*b11
else
partziona le matrici A e B in dimensione n/2 tale che C=A*B
c11=a11*b11+ a12*b21
c21=a11*b12+ a12*b22
e via discorrendo.
Naturalmente ciò deve valere per qualsiasi matrice di ordine n
quadrata
Spero che mi aiutate.Grazie mille a tutti e buon natale
Ciao


Probabilmente non ho capito l'algoritmo che vuoi implementare, visto
che così come lo leggo non può funzionare :-/
Ciao!

> Ciao ragazzi,sono uno nuovo del linguaggio C++
sicuro di aver scritto nel newsgroup giusto?

 - Mostra testo citato -
Mi dici cosa non capisci?
L'ordine della matrice é una potenza di 2?
ciao


Cos'e' che non riesci a fare?
N e' una potenza di due?
Pleg

> N e' una potenza di due?
PS: se lo e', sei fortunato :)
Se no, dovrai pensare un pochino di piu' alla strategia di blocking,
magari questo ti da' qualche idea:
http://en.wikipedia.org/wiki/Block_matrix
Pleg

 - Mostra testo citato -
NON RIESCO AD IMPLEMENTARE L'ALGORITMO RICORSIVAMENTE

> NON RIESCO AD IMPLEMENTARE L'ALGORITMO RICORSIVAMENTE
Non urlare.
Cmq, l'hai scritto tu stesso:
c11=a11*b11+ a12*b21
c21=a11*b12+ a12*b22
...
Quindi la funzione prendera' le matrici A e B, dimensione N; dividera'
A e B in 4 sottomatrici di dimensione N/2 (stesso per la matrice C), e
calcola i quattro quadranti C11, C12, C21, C22 colla formula scritta
sopra. Solo che la moltiplicazione delle sotto-matrici chiama la
stessa funzione, ricorsivamente, che dividera' le sottomatrici in 4
quadranti, e cosi' via, fino ad avere una matrice di dimensione 1.
Pleg


Ma io ho bisogno dell'algoritmo in c++.Qualcuno me lo può scrivere?

 Ma io ho bisogno dell'algoritmo in c++.Qualcuno me lo può scrivere?
No.
-- 
Non puoi insegnare qualcosa ad un uomo. You cannot teach a man anything.
Lo puoi solo aiutare   --  Galileo  Galilei  --   You can only help him
a scoprirla dentro di sé.                        discover it in himself.
Vincenzo Mercuri

 Ma io ho bisogno dell'algoritmo in c++.Qualcuno me lo può scrivere?
prendi un pezzo di carta e una matita e comincia a scriverlo li.
poi lo implementi sul pc.
Ciao Jack


wrote:

Certo, qualcuno può, ma dubito che lo farà per te. Potresti cominciare
col postare il tuo codice, evidenziando quello che non ti riesce e i
tuoi dubbi, e senza dubbio una mano ti verrà data. E per carità,
scrivilo in C o cambia NG! :-)
Ciao!
Newsgroup: it.comp.lang.c
Titolo: "HELP PLS"

Sono giorni che mi arrovello su questa funz potreste aiutarmi!!!!
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
typedef struct gio
{
	 char nome [20];
	 char cognome [20];
	 int punti[5][2];
}giocatori;
void inser_Gioc(giocatori *,int *);
void main(void)
{
	 giocatori bow[3],*p;
	 p=bow;
	 int inserimenti=0;
	 inser_Gioc(p,&inserimenti);
}
void inser_Gioc(giocatori *f,int *inserimenti);
{
	 int x=0;
	 char buff[3];
         *inserimenti=atoi(gets(buff));
	 printf("\nQuanti giocatori vuoi ins.");
	 for(x=0;x<*inserimenti;x++,f++)
	  {
		 printf("INSERISCI IL NOME:\t");
		 gets(f->nome);
		 printf("INSERISCI IL COGNOME:\t");
		 gets(f->cognome);
		 f++;
		 getchar();
	 }
}

}
Spero che funzioni e di non aver scritto fregnacce per la fretta.
Saluti
--
Per l'e-mail rimouvere gli underscore e la frase in maiuscole.

Ah, ho dimenticato di farti notare che inser_Gioc() dovrebbe prendere un 
terzo parametro
per limitare il numero degli inserimenti alle dimensioni dell'array.
Un'altra cosa: dopo la prima printf(), nella inser_Gioc, sarebbe opportuno 
mettere una
getchar().
Scusa per le risposte "a rate": maledetta fretta!
