[RISOLTO]: Matrice di Caratteri

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
winbusters
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1020
Iscrizione: lunedì 15 gennaio 2007, 19:20
Località: Bari

[RISOLTO]: Matrice di Caratteri

Messaggio da winbusters »

Ciao a tutti vorrei sapere ho questo programma da fare:
Scrivere un programma C in grado di:
        – Caricare da tastiera una matrice di caratteri con N righe ed M colonne
        – Stampare a video la matrice inserita
        – Stampare a video l’elemento minimo di ogni riga della matrice

solo che non ho idea di come dichiarare ed acquisire le lettere in questa matrice..cioè ho solo delle idee

si può dichiarare così

Codice: Seleziona tutto

char matrice[n][m];
e poi per acquisire
vabbè inanzitutto prendo in input n e m(e vabbè che ci vuole!! ;D)
e poi con due cicli

Codice: Seleziona tutto

for(i=0;i<n;i++)
 {
      for(j=0;j<m;j++)
         {
                printf("Inserire una lettera\n")
                scanf("%c",vettore[n] [m]);
           }
 }
ho letto su un libro che ho trovato in rete con le matrici si può anche evitare di fare doppio ciclo e farne uno solo

Codice: Seleziona tutto

for(i=0;i<n*m;i++)
stanco di tentavi inutili mi rivolgo a voi  ::)
Ultima modifica di winbusters il lunedì 11 giugno 2007, 17:28, modificato 1 volta in totale.
Avatar utente
difesaparcosempione
Rampante Reduce
Rampante Reduce
Messaggi: 6031
Iscrizione: giovedì 27 luglio 2006, 19:06
Località: Torino
Contatti:

Re: Problema con una matrice

Messaggio da difesaparcosempione »

Non ti preoccupare eri partito bene !!
Va benissimo per iniziare quello che hai detto, continua per la strada dei 2 for annidati ...

ciao
8)
Avatar utente
winbusters
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1020
Iscrizione: lunedì 15 gennaio 2007, 19:20
Località: Bari

Re: Problema con una matrice

Messaggio da winbusters »

Codice: Seleziona tutto

#include <stdio.h>

int main()
{
	int n=0;
	int m=0;
	char vettore[n][m];
	int i;
	int j;
	
	   printf("*****MATRICE DI CARATTERI******\n");
	   printf("Inserire il numero di:\nRIGHE:\n\n ");
	   scanf("%d",&n);
	   printf("Inserire il numero di:\nCOLONNE:\n\n ");
	   scanf("%d",&m);

	for(i=0;i<n;i++)
     {
       for(j=0;j<m;j++)
         {
             printf("Inserire una lettera\n");
             scanf("%c",&vettore[n] [m]);
         }
     }
    
non funziona :( è strano quando eseguo il programma mi sdoppia inserire una lettera e me ne fa inserire la metà

Codice: Seleziona tutto

*****MATRICE DI CARATTERI******
Inserire il numero di:
RIGHE:

 3
Inserire il numero di:
COLONNE:

 2
Inserire una lettera
Inserire una lettera
a
Inserire una lettera
Inserire una lettera
b
Inserire una lettera
Inserire una lettera
c
Avatar utente
difesaparcosempione
Rampante Reduce
Rampante Reduce
Messaggi: 6031
Iscrizione: giovedì 27 luglio 2006, 19:06
Località: Torino
Contatti:

Re: Problema con una matrice

Messaggio da difesaparcosempione »

soliti problemi che si incontrano usando, alle prime armi, la scanf ..
ti consiglio una ricerca per scanf in questa sezione e vedrai...

ciao
;D
Avatar utente
thelo
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 269
Iscrizione: lunedì 8 gennaio 2007, 17:16

Re: Problema con una matrice

Messaggio da thelo »

in realtà c'è un errore di allocazione di memoria
tu allochi un array di dimensioni nulle...e poi inizializzi le variabili m e n
invece devi dichiarare:

Codice: Seleziona tutto

char *vettore;
m = x;
n = y;
vettore = (char *)calloc(m*n, sizeof(char));
prova così...
probabilmente la scanf leggeva più di un carattere per volta

Saluti
(b2b)
Navigammo su fragili vascelli
per affrontar del mondo la burrasca
ed avevamo gli occhi troppo belli...
7cys7
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 390
Iscrizione: mercoledì 31 gennaio 2007, 12:16

Re: Problema con una matrice

Messaggio da 7cys7 »

ubuntu6 ha scritto:

Codice: Seleziona tutto

#include <stdio.h>

int main()
{
	int n=0;
	int m=0;
	char vettore[n][m];
	int i;
	int j;
	
	   printf("*****MATRICE DI CARATTERI******\n");
	   printf("Inserire il numero di:\nRIGHE:\n\n ");
	   scanf("%d",&n);
	   printf("Inserire il numero di:\nCOLONNE:\n\n ");
	   scanf("%d",&m);

	for(i=0;i<n;i++)
     {
       for(j=0;j<m;j++)
         {
             printf("Inserire una lettera\n");
             scanf("%c",&vettore[n] [m]);
         }
     }
    
non funziona :( è strano quando eseguo il programma mi sdoppia inserire una lettera e me ne fa inserire la metà
Mi sembra ci sia un errore anche qui:

Codice: Seleziona tutto

scanf("%c",&vettore[n] [m]);// non dovrebbe essere &vettore[i][j]?
Ultima modifica di 7cys7 il venerdì 8 giugno 2007, 18:12, modificato 1 volta in totale.
Avatar utente
winbusters
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1020
Iscrizione: lunedì 15 gennaio 2007, 19:20
Località: Bari

Re: Problema con una matrice

Messaggio da winbusters »

thelo ha scritto: in realtà c'è un errore di allocazione di memoria
tu allochi un array di dimensioni nulle...e poi inizializzi le variabili m e n
invece devi dichiarare:

Codice: Seleziona tutto

char *vettore;
m = x;
n = y;
vettore = (char *)calloc(m*n, sizeof(char));
prova così...
probabilmente la scanf leggeva più di un carattere per volta

Saluti
(b2b)
mi spieghi vettore=...non capisco cosa fa di preciso
Ultima modifica di winbusters il venerdì 8 giugno 2007, 18:21, modificato 1 volta in totale.
Avatar utente
winbusters
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1020
Iscrizione: lunedì 15 gennaio 2007, 19:20
Località: Bari

Re: Problema con una matrice

Messaggio da winbusters »

cmq il problema che continuo insesorabilmente ad incontrare è quello che prende solo metà dei valori!!!se ne metto più di uno me ne chiede uno in meno quindi stiamo là
Avatar utente
thelo
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 269
Iscrizione: lunedì 8 gennaio 2007, 17:16

Re: Problema con una matrice

Messaggio da thelo »

la funzione calloc alloca dinamicamente un vettore(in questo caso la dimensione è m * n e il tipo è char) e ne restituisce un puntatore.
hai corretto anche l'errore citato da 7cys7?
Navigammo su fragili vascelli
per affrontar del mondo la burrasca
ed avevamo gli occhi troppo belli...
Avatar utente
winbusters
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1020
Iscrizione: lunedì 15 gennaio 2007, 19:20
Località: Bari

Re: Problema con una matrice

Messaggio da winbusters »

si anche quello era sbagliato  >:( uff sta matrice..

ma permane quell'errore che mi ha spinto ad aprire il post....
provare per credere  :(
ubuntu6 ha scritto: cmq il problema che continuo insesorabilmente ad incontrare è quello che prende solo metà dei valori!!!se ne metto più di uno me ne chiede uno in meno quindi stiamo là

7cys7
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 390
Iscrizione: mercoledì 31 gennaio 2007, 12:16

Re: Problema con una matrice

Messaggio da 7cys7 »

Inserisci:

Codice: Seleziona tutto

getchar();
dopo lo scanf...
Vedrai che funge.
;)
Avatar utente
winbusters
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1020
Iscrizione: lunedì 15 gennaio 2007, 19:20
Località: Bari

Re: Problema con una matrice

Messaggio da winbusters »

apparentemente è risolto..ma in realtà no..cioè non acquisisce nulla boh!riposto il codice

Codice: Seleziona tutto

#include <stdio.h>
#define MAXSIZE 20
int main()
{
	char vettore[MAXSIZE][MAXSIZE];
	int n=0;
	int m=0;
	int i;
	int j;
	
	
	   printf("*****MATRICE DI CARATTERI******\n");
	   printf("Inserire il numero di:\nRIGHE:\n\n ");
	   scanf("%d",&n);
	   printf("Inserire il numero di:\nCOLONNE:\n\n ");
	   scanf("%d",&m);
    
    
	for(i=0;i<n;i++)
     
       for(j=0;j<m;j++)
         {
             printf("Inserire una lettera\n");
             scanf("%c",&vettore[i][j]);
             getchar();
         }
     
    
    for(i=0;i<n;i++)
     {
     	printf("\n");
     	
       for(j=0;j<m;j++)
         {
             printf("%c", vettore[i][j]);
             
         }
     }  






return 0;
}
7cys7
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 390
Iscrizione: mercoledì 31 gennaio 2007, 12:16

Re: Problema con una matrice

Messaggio da 7cys7 »

Codice: Seleziona tutto

#include <stdio.h>

int main()
{
	int n=0;
	int m=0;
	int i;
	int j;
	printf("*****MATRICE DI CARATTERI******\n");
        printf("Inserire il numero di: RIGHE: ");
   	scanf("%d",&n);
	getchar();
	printf("Inserire il numero di: COLONNE: ");	
	scanf("%d",&m);
	getchar();
	char vettore[n][m];
	for(i=0;i<n;i++){
		for(j=0;j<m;j++)
		{	printf("Inserisci il carattere: ");									
		       	scanf("%c",&vettore[i][j]);
			getchar();
		}
	}
	for(i=0;i<n;i++){
		printf("\n");
		for(j=0;j<m;j++)
		{
			printf("%c ", vettore[i][j]); 
		}
	}
	printf("\n");
return 0;
}
Per questi problemi conviene fare un giro su un qualsiasi motore di ricerca.
(b2b)
Avatar utente
winbusters
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1020
Iscrizione: lunedì 15 gennaio 2007, 19:20
Località: Bari

Re: Problema con una matrice

Messaggio da winbusters »

ma scusa le scanf perchè non funzionano da sole?
Avatar utente
winbusters
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1020
Iscrizione: lunedì 15 gennaio 2007, 19:20
Località: Bari

Re: Problema con una matrice

Messaggio da winbusters »

7cys7 ha scritto:
Per questi problemi conviene fare un giro su un qualsiasi motore di ricerca.
(b2b)
cmq questo forum si chiama programmazione?
non ho trovato nulla in rete..voglio una soluzione immediata perchè non postare qui invece di impazzire?

cmq grazie mille  (good)

ma spiegami perchè non funzionano da sole le scanf
7cys7
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 390
Iscrizione: mercoledì 31 gennaio 2007, 12:16

Re: Problema con una matrice

Messaggio da 7cys7 »

Non per far polemica, ma sarebbe meglio se fossi meno esigente (voglio) e più propositivo (vorrei)...
Comunque, se non pulisci il buffer, ogni volta che premi invio per acquisire un carattere il \n rimane e verrà letto dopo.
Magari mi sbaglio, vediamo se qualcuno mi smentisce.
::)  :-\  :(
Avatar utente
winbusters
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1020
Iscrizione: lunedì 15 gennaio 2007, 19:20
Località: Bari

Re: Problema con una matrice

Messaggio da winbusters »

hey spero di non esser sembrato scortese..se si scusami non volevo  ;)
sai quel codice mi ha fatto impazzire per una mattinata
Avatar utente
thelo
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 269
Iscrizione: lunedì 8 gennaio 2007, 17:16

Re: Problema con una matrice

Messaggio da thelo »

guarda che da me il codice funziona alla perfezione
Navigammo su fragili vascelli
per affrontar del mondo la burrasca
ed avevamo gli occhi troppo belli...
Avatar utente
winbusters
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1020
Iscrizione: lunedì 15 gennaio 2007, 19:20
Località: Bari

Re: Problema con una matrice

Messaggio da winbusters »

lo so e infatti ho ringraziato!  (good) però vorrei sapere perchè si usa getchar..non basta scanf?
Avatar utente
thelo
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 269
Iscrizione: lunedì 8 gennaio 2007, 17:16

Re: Problema con una matrice

Messaggio da thelo »

hai ragione  :-\ per sbaglio ho compilato il codice con le getchar...
sai che hanno fatto impazzire anche me?
ricordo il prof di programmazione che alle prime lezioni spiegava questo tipo di problemi...ma non ricordo bene.
Ho provato a scrivere scanf("%c\n")
e funziona quasi bene...nel senso che stampa la tabella con lo sfasamento di un numero...
prova e vedi
Navigammo su fragili vascelli
per affrontar del mondo la burrasca
ed avevamo gli occhi troppo belli...
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 3 ospiti