[C] semplici programmi

Messaggioda recidjvo » 06/11/2004, 01:12

Scrivere un programma in C, che dato un array di 5 elementi caricati da tastiera, inverte l'array in se stesso e stampa i numeri invertiti..

es (1,2,3,4,5) ==> (5,4,3,2,1)


Scrivere un programma che caricato un array di 10 elementi da tastiera, mette gli elementi dispari in un vettore e quelli pari in un altro...



il tutto usando come istruzioni di I/o cin e cout.. che sono del C++... ma solo quelle.. per il resto il programma deve essere C.
Grazie mille a chi si cimenterà.
recidjvo
New Member
New Member
 
Messaggio: 11 di 71
Iscritto il: 31/10/2004, 10:08

Messaggioda Nidhogg » 06/11/2004, 15:40

Primo quesito: Listato C

Codice:
/*Scrivere un programma in C, che dato un array di 5 elementi caricati da tastiera,
inverte l'array in se stesso e stampa i numeri invertiti..
es (1,2,3,4,5) ==> (5,4,3,2,1)*/

#include <iostream.h>
#define DIM 5

int vet[DIM];

main(){
       int i;
       cout<<"\n\t\t\t    INVERSIONE DI UN ARRAY\n";
       for(i=0;i<DIM;i++){
                          cout<<"\n Inserisci il "<<i+1<<"° elemento: ";
                          cin>>vet[i];
                         } 

       

   int aux;
   for(i=0;i<(DIM/2);i++)
   { 
    aux=vet[i];
    vet[i]=vet[DIM-1-i];
    vet[DIM-i-1]=aux;
   }

   cout<<"\n L'array invertito è: \n";
   for (i=0;i<DIM;i++){
             cout<<"\n "<<i+1<<"° elemento: "<<vet[i];
                      }

}


Non ho usato funzioni perchè non conosco il grado di conoscenze che hai sul C. Comunque se le hai affrontate è molto facile modificare il sorgente.

Ciao, Ermanno.
Nidhogg
Senior Member
Senior Member
 
Messaggio: 77 di 1491
Iscritto il: 24/02/2004, 18:29
Località: Baronissi (Salerno) - Italia

Messaggioda Nidhogg » 06/11/2004, 16:15

Codice:
/*Scrivere un programma che caricato un array di 10 elementi da tastiera,
 mette gli elementi dispari in un vettore e quelli pari in un altro...*/

#include <iostream.h>
#define DIM 10

void carica(int []);
void visualizza(int[],int );
int pari(int [],int[]);
int dispari(int [],int[]);


void main()
{
   int v1[DIM],v2[DIM],v3[DIM],i,j;
   cout<<"\n\t\t\t
   NUMERI PARI E DISPARI IN UN ARRAY\n";
   carica(v1);
   cout<<"\n VETTORE ->";
   visualizza(v1,DIM);
   i=pari(v1,v2);
   j=dispari(v1,v3);
   cout<<"\n\n NUMERI PARI ->";
   visualizza(v2,i);
   cout<<"\n\n NUMERI DISPARI ->";
   visualizza(v3,j);
}

void carica(int vet[])
{
 int i;
 for(i=0;i<DIM;i++){
                    cout<<"\n Inserisci il "<<i+1<<"° elemento: ";
                    cin>>vet[i];
                   }
}

void visualizza(int vet[],int l)
{
 int i;
 for(i=0;i<l;i++)
    cout<<"  "<<vet[i];

}

int pari(int v1[],int v2[])
{
 int i,k=0;
 for(i=0;i<DIM;i++)
 {
  if(v1[i]%2==0)
   {
    v2[k]=v1[i];
    k++;
   }
 }
 return k;
}

int dispari(int v1[],int v2[])
{
 int i,k=0;
 for(i=0;i<DIM;i++)
 {
  if(v1[i]%2!=0)
   {
    v2[k]=v1[i];
    k++;
   }
 }
 return k;
}

In questo programma le funzioni sono d'obbligo!
Ciao, Ermanno.
Nidhogg
Senior Member
Senior Member
 
Messaggio: 78 di 1491
Iscritto il: 24/02/2004, 18:29
Località: Baronissi (Salerno) - Italia

Messaggioda recidjvo » 07/11/2004, 00:42

il void cosa sta a significare e quando si usa?


ciao
recidjvo
New Member
New Member
 
Messaggio: 14 di 71
Iscritto il: 31/10/2004, 10:08

Messaggioda Nidhogg » 07/11/2004, 01:10

Nel linguaggio C la maggior parte di quello che si usa è costituito da funzioni. Per poter simulare le procedure che non ritornano alcun valore è stato introdotto il tipo void. Il tipo void o tipo indefinito è utilizzato dal C tutte le volte che il valore di ritorno di una funzione non deve essere preso in considerazione. In pratica nel linguaggio C le procedure sono funzioni che restituiscono un void.

Ciao, Ermanno.
Nidhogg
Senior Member
Senior Member
 
Messaggio: 79 di 1491
Iscritto il: 24/02/2004, 18:29
Località: Baronissi (Salerno) - Italia

Messaggioda dazuco » 07/11/2004, 16:20

Il void oltre che a significare quello che giustamente ha detto leonardo ha anche un altro potente significato.
Se usiamo void * indichiamo che possiamo accettare un puntatore di qialsiasi natura (char*, int*, double* ...).
dazuco
Junior Member
Junior Member
 
Messaggio: 136 di 196
Iscritto il: 10/08/2003, 11:58
Località: Italy

Messaggioda tony » 07/11/2004, 16:26

peccato, leonardo.
le convenzione di compressione degli spazi attiva in questo forum ha vanificato il tuo lavoro di render leggibile il tuo prgm con le usuali indentazioni:
Codice:
void carica(int vet[])
int pari(int v1[],int v2[])
{
 int i,k=0;
 for(i=0;i<DIM;i++)
 {
  if(v1[i]%2==0)
   {
    v2[k]=v1[i];
    k++;
   }
 }
 return k;
}

ma c'è un rimedio.
se vuoi ottenere l'effetto desiderato, procedi così:

1- apri in correzione (con la terza icona da destra) il tuo stesso messaggio, lo troverai intatto come l'avevi battuto
2- inserisci il comando ['code'] <b>scritto senza gli apici</b> prima del testo di cui vuoi preservare la formattazione
3- inserisci il comando ['/code'] <b>scritto senza gli apici</b> alla fine di quel testo
4- chiudi inviando la correzione

tony

p.s. il termine code mi fa proprio pensare che sia nato per preservare l'incolonnamento di codice di programma
tony
Average Member
Average Member
 
Messaggio: 486 di 873
Iscritto il: 10/11/2005, 23:47
Località: milano

Messaggioda Nidhogg » 07/11/2004, 17:19

Infatti hai ragione tony. Le indentazioni nei sorgenti sono fondamentali per la leggibilità di un listato ma anche per la visibilità delle vari parti che compongono il corpo del programma. Purtroppo, anche conoscendo il comando quote, dovevo scappare e quindi ho postato il messaggio con velocità senza pensare. Grazie della segnalazione.

CIao, Ermanno.
Nidhogg
Senior Member
Senior Member
 
Messaggio: 80 di 1491
Iscritto il: 24/02/2004, 18:29
Località: Baronissi (Salerno) - Italia

Messaggioda recidjvo » 12/11/2004, 16:41

vi lascio un due tre quesiti da svolgere... possibilmente ampiamente commentati.


Scrivere un programma che legge due matrici da un file txt, le somma, e scrive la matrice somma in un altro file txt...il tutto da farsi esclusivamente con le funzioni (senza fare tutto nel main per intenderci). Io uso un C '' elementare''... per scrivere nei file uso file.open(miofile.txt, ios:out)... queste istruzioni del C++... uso cin, cout come già detto.. e queste istruzioni su file del C++...

possibilmente nella maniera + semplice possibile...
grazie a chi perderà un pò di tempo per queste mie sciagurate domande
recidjvo
New Member
New Member
 
Messaggio: 22 di 71
Iscritto il: 31/10/2004, 10:08

Messaggioda recidjvo » 13/11/2004, 22:10

QUESTA è LA SINTASSI che uso per leggere un array da file



LETTURA ARRAY DA FILE



#include <iostream.h>
#include <stdlib.h>
#include <fstream.h>
int main()
{ int array1[10];
int i=0;
fstream miofile;
miofile.open("miofile.txt", ios::in);
while ( miofile >> array1[i] ){
cout << array1[i] <<endl;
i++; }

system("PAUSE");
return 0;
}



ora il programma di cui al post precedente dovrei impostarlo con le funzioni.. riducendo il + possibile il main.. chiamando funzioni esterne...
vi prego datemi una mano.. ho poco tempo
ciao
recidjvo
New Member
New Member
 
Messaggio: 24 di 71
Iscritto il: 31/10/2004, 10:08

Prossimo

Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite