Esercizio su vettori array [c++]

di il
13 risposte

Esercizio su vettori array [c++]

Salve,
un esercizio richiede che, in un parcheggio di 20 file e 100 posti, venga individuato un posto libero. E ogni volta che esce una macchina, liberare il posto. Svolgere con matrici.

Ho provato a fare questo, ma mi blocco al for..
/*Un parcheggio con 20 file e 100 posti, si vuole fare un programma che dica il posto libero. (Ingresso vicino allo 00). Ogni volta che esce una macchina, liberare il posto (fare matrici) */
#include <iostream>
#include <time.h>
#include <stdlib.h>
using namespace std;

int main ()
{
	
	int matrice[100][20];
	
	for (int f=0; f<20; f++)
	{
		for (int r=0; r<100; r++)
		{
			if (????)
			{
				
				cout<<"Posto libero ";
				break;
			}
				else
				{
			  
					cout<<"Occupato ";
					break;
				}
	}	}
	return 0;
	
}

13 Risposte

  • Re: Esercizio su vettori array [c++]

    Cosa significa questo

    if ([r] %2==0)

    ?
  • Re: Esercizio su vettori array [c++]

    oregon ha scritto:


    Cosa significa questo

    if ([r] %2==0)

    ?
    Non so come stabilire se un posto è pieno o vuoto, e quindi pensavo di farlo con la formula 'se è pari è libero, se è dispari è occupato' ma non va bene
  • Re: Esercizio su vettori array [c++]

    E perché mai i posti dispari dovrebbero essere occupati e i posti pari liberi ??

    Semmai imponi che il valore dell'elemento è 1 se il posto è occupato e 0 se è libero.
  • Re: Esercizio su vettori array [c++]

    oregon ha scritto:


    E perché mai i posti dispari dovrebbero essere occupati e i posti pari liberi ??

    Semmai imponi che il valore dell'elemento è 1 se il posto è occupato e 0 se è libero.
    Ho provato con la funzione rand, ad avere solo 0 e 1, ma mi dava erroe
  • Re: Esercizio su vettori array [c++]

    E questo cosa c'entra? Comunque di che errore parli?
  • Re: Esercizio su vettori array [c++]

    oregon ha scritto:


    E questo cosa c'entra? Comunque di che errore parli?
    Quando avviavo mi dava tutta una pila di libero e occupato
  • Re: Esercizio su vettori array [c++]

    Puoi mostrare il codice e spiegarti?
  • Re: Esercizio su vettori array [c++]

    oregon ha scritto:


    Puoi mostrare il codice e spiegarti?
    /*Un parcheggio con 20 file e 100 posti, si vuole fare un programma che dica il posto libero. (Ingresso vicino allo 00). Ogni volta che esce una macchina, liberare il posto (fare matrici) */
    #include <iostream>
    #include <time.h>
    #include <stdlib.h>
    using namespace std;
    
    int main ()
    {
    	int colonne=rand()%1;
    	int righe=rand()%1;
    	int matrice[righe][colonne];
    	
    	for (int f=0; f<20; f++)
    	{
    		for (int r=0; r<100; r++)
    		{
    			if (righe[r]==0)
    			{
    				
    				cout<<"Posto libero ";
    				break;
    			}
    				else
    				{
    			  
    					cout<<"Occupato ";
    					break;
    				}
    	}	}
    	return 0;
    	
    }
  • Re: Esercizio su vettori array [c++]

    Ma queste righe
    
       int colonne=rand()%1;
       int righe=rand()%1;
       int matrice[righe][colonne];
    
    che c'entrano??

    Le DIMENSIONI dell'array sono costanti e quindi

    int matrice[20][100];

    ... devi scegliere il valore di ogni elemento e quindi, con un doppio ciclo, devi sceglere il valore random con


    matrice[r][c] = rand() % 2;
  • Re: Esercizio su vettori array [c++]

    oregon ha scritto:


    Ma queste righe
    
       int colonne=rand()%1;
       int righe=rand()%1;
       int matrice[righe][colonne];
    
    che c'entrano??

    Le DIMENSIONI dell'array sono costanti e quindi

    int matrice[20][100];

    ... devi scegliere il valore di ogni elemento e quindi, con un doppio ciclo, devi sceglere il valore random con


    matrice[r][c] = rand() % 2;
    non capisco cosa intendi con: ... devi scegliere il valore di ogni elemento e quindi, con un doppio ciclo, devi sceglere il valore random con
  • Re: Esercizio su vettori array [c++]

    Intendo che per assegnare ogni valore random ad ogni elemento dell'array devi eseguire i due cicli, righe e colonne, assegnando alla matrice il valore ottenuto da rand()%2 ...

    Mi sembra estremamente semplice ... d'accordo non avere chiaro un procedimento o un programma ma evidentemente ti mancano completamente le basi ...
  • Re: Esercizio su vettori array [c++]

    oregon ha scritto:


    Intendo che per assegnare ogni valore random ad ogni elemento dell'array devi eseguire i due cicli, righe e colonne, assegnando alla matrice il valore ottenuto da rand()%2 ...

    Mi sembra estremamente semplice ... d'accordo non avere chiaro un procedimento o un programma ma evidentemente ti mancano completamente le basi ...
    intendi così?
    /*Un parcheggio con 20 file e 100 posti, si vuole fare un programma che dica il posto libero. (Ingresso vicino allo 00). Ogni volta che esce una macchina, liberare il posto (fare matrici) */
    #include <iostream>
    #include <time.h>
    #include <stdlib.h>
    using namespace std;
    
    int main ()
    {
    	
    	int matrice[20][100];
    	bool libero=false;
    	
    	
    	for (int f=0; f<20; f++)
    	{
    		
    		for (int r=0; r<100; r++)
    		{
    			
    			matrice[r][f] = rand() % 2;
    			
    			
    			if (matrice[r][f]==0)
    				{
    					libero=true;
    					break;
    				}
    		}		
    	}
    	
    	if (libero==true)
    		cout<<"Libero "<<endl;
    	else
    		cout<<"Occupato "<<endl;
    	return 0;
    	
    }
  • Re: Esercizio su vettori array [c++]

    Ciao,
    dovresti provare a pensare un po di più al codice che scrivi e cercare di capire se ciò che realizzi ha veramente un senso, comunque ho scritto al volo il codice per te:
    
    /*Un parcheggio con 20 file e 100 posti, si vuole fare un programma che dica il posto libero. (Ingresso vicino allo 00). Ogni volta che esce una macchina, liberare il posto (fare matrici) */
    
    #include <iostream>
    #include <time.h>
    #include <stdlib.h>
    using namespace std;
    
    const int FILA = 20;
    const int POSTO = 100;
    
    void carica_matrice(bool matrice[FILA][POSTO])
    {
    	for(int i = 0; i < FILA; i++)
    	{
    		for(int j = 0; j < POSTO; j++)
    		{
    			matrice[i][j] = rand() % 2;
    		}
    	}
    }
    
    bool libera_posto(bool matrice[FILA][POSTO])
    {
    	for(int i = 0; i < FILA; i++)
    	{
    		for(int j = 0; j < POSTO; j++)
    		{
    			if(matrice[i][j] == 1)
                            {
                                    matrice[i][j] == 0;
    				return true;
                             }
    		}
    	}
    
    	return false;
    }
    
    void trova_posto(bool matrice[FILA][POSTO])
    {
    	for(int i = 0; i < FILA; i++)
    	{
    		for(int j = 0; j < POSTO; j++)
    		{
    			if(matrice[i][j] == 0)
    			{
    				cout<<"il posto "<<j+1<<" della fila "<<i+1<<" e' libero"<<endl;
    				return;
    			}
    		}
    	}
    }
    int main ()
    {
       srand(time(NULL));
       bool matrice[FILA][POSTO];
       unsigned short posti_liberi = 0;
       unsigned short d;
    
       carica_matrice(matrice);
    
       while(1)
       {
    	   cout<<"cosa vuoi fare?"<<endl;
    	   cout<<"1)libera posto"<<endl;
    	   cout<<"2)trova posto"<<endl;
    	   cout<<"3)esci dal programma"<<endl<<endl;;
    	   cin>>d;
    	   switch(d)
    	   {
    	   case 1:
    		   if(libera_posto(matrice))
    			   cout<<"posto liberato con successo"<<endl;
    		   else
    			   cout<<"i posti sono gia' tutti liberi"<<endl;
    		   break;
    	   case 2:
    		   trova_posto(matrice);
    		   break;
    	   case 3:
    		   exit(1);
    	   default:
    		   cout<<"inserisci un valore valido";
    	   }
       }
    }
    
    non l'ho provato quindi potrebbe esserci qualche errore
Devi accedere o registrarti per scrivere nel forum
13 risposte