Newsgroup: it.comp.lang.c++
Titolo: S.o.s. 2 problemi

Ciao a tutti, per motivi didattici mi sono avvicinato da poco alla
programmazione in c++,ora mi sono bloccato su 2 problemi e non riesco ad
andare + avanti con lo studio.C'č qualcuno che potrebbe aiutarmi ? A buon
rendere .
1°problema.
devo scrivere un programma che dato un generico vettore numerico in
ingresso, elimini dal vettore tutti gli elementi nulli ,lo "compatta" e
stampa a video il vettore risultante .
Ad esempio se il vettore č 5,7,9,0,0,2,0,8 di 8 elementi, il vettore
compattato č 5,7,9,2,8 di 5 elementi.
2°problema
devo costruire il triangolo di Tartaglia fino ad una potenza n stabilita
dall'  utente.

Osservazione: dal mio punto di vista un vettore di interi
non ha mai elementi nulli, in quanto lo zero è esso stesso
un intero valido, ma qui siamo vicini agli ideali
filosofici, quindi lasciamo perdere.
I° problema: Prova così:
<PRE>
#include &lt;stdio.h&gt;
// int Comprimi(int *Vect, int VectSize)
// Prende in input un vettore di interi e il numero dei suoi
// elementi
// Ritorna il nuovo nummero di elementi
int Comprimi(int *Vect, int VectSize)
{
  int ScanVect, NextFreePos = 0;
  for (ScanVect = 0; ScanVect < VectSize; ScanVect++)
  {
    if (Vect[ScanVect] != 0)
    {
      Vect[NextFreePos] = Vect[ScanVect];
      NextFreePos++;
    }
  }
  return NextFreePos;
}
int main(int, char **)
{
  int VectSize, NewSize;
  char Input[100];
  int Scan;
  char *Vector;
  printf("&92;nQuanti numeri vuoi inserire?");
  gets(input);
  sscanf(input, "%i", &VectSize);
  Vector = new char[VectSize];
  for (Scan = 0; Scan < VectSize; Scan++)
  {
    printf("&92;nElemento n.%i, inserire il numero:", Scan);
    gets(input);
    sscanf(input, "%i", Vector + Scan);
  }
  NewSize = Comprimi(Vector, VectSize);
  for (Scan = 0; Scan < NewSize; Scan++)
    printf("&92;nElemento n.%i contiene", Vector[Scan]);
  delete []Vector;
  return 0;
}
</PRE>
II° problema: non mi ricordo + cosa sia il triangolo di
Tartaglia!
* Sent from AltaVista 
http://www.altavista.com
 Where you can also find related Web Pages, Images, Audios, Videos, News, and Shopping.  Smart is Beautiful

 dall'  utente.
(Noto anche come "Triangolo di Pascal" nel resto del mondo,
giusto in caso tu voglia divertirti a cercare le migliaia di riferimenti
ad esso che puoi trovare in rete).
La prima riga e` il numero "1"; la seconda, il vettore [1, 1].
Ogni generica riga si trae dalla precedente ponendo "1" all'inizio
e alla fine e, per gli elementi intermedi, sommando due elementi
adiacenti della riga precedente.
Se tieni dunque la "generica riga" in uno std::vector<int>, il
calcolo della "prossima riga" a partire dalla "precedente" non
dovrebbe risultarti difficile; puoi usare un ciclo for, oppure
std::transform (sempre da #include <algorithm>).  Dopo di
che, emetti la riga cosi` calcolata, e, se hai ancora righe da
emettere, poni la "riga precedente" ad essa (la funzione
membro swap di std::vector ti fara` comodo... e anche la
funzione-membro clear!-).
Alex

 // int Comprimi(int *Vect, int VectSize)
Non è che l'amico, utilizzando correttamente la terminologia C++,
intendeva come vettore lo std::vector? Il tuo esempio utilizza, invece,
gli array.
EMG