Pagina 1 di 2
[RISOLTO]: Matrice di Caratteri
Inviato: venerdì 8 giugno 2007, 17:21
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ì
e poi per acquisire
vabbè inanzitutto prendo in input n e m(e vabbè che ci vuole!!

)
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
stanco di tentavi inutili mi rivolgo a voi ::)
Re: Problema con una matrice
Inviato: venerdì 8 giugno 2007, 17:26
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

Re: Problema con una matrice
Inviato: venerdì 8 giugno 2007, 17:52
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
Re: Problema con una matrice
Inviato: venerdì 8 giugno 2007, 17:59
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

Re: Problema con una matrice
Inviato: venerdì 8 giugno 2007, 18:03
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)
Re: Problema con una matrice
Inviato: venerdì 8 giugno 2007, 18:11
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]?
Re: Problema con una matrice
Inviato: venerdì 8 giugno 2007, 18:17
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
Re: Problema con una matrice
Inviato: venerdì 8 giugno 2007, 18:23
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à
Re: Problema con una matrice
Inviato: venerdì 8 giugno 2007, 18:55
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?
Re: Problema con una matrice
Inviato: venerdì 8 giugno 2007, 19:12
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à
Re: Problema con una matrice
Inviato: venerdì 8 giugno 2007, 19:55
da 7cys7
Inserisci:
dopo lo scanf...
Vedrai che funge.

Re: Problema con una matrice
Inviato: venerdì 8 giugno 2007, 20:22
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;
}
Re: Problema con una matrice
Inviato: venerdì 8 giugno 2007, 20:26
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)
Re: Problema con una matrice
Inviato: venerdì 8 giugno 2007, 20:42
da winbusters
ma scusa le scanf perchè non funzionano da sole?
Re: Problema con una matrice
Inviato: venerdì 8 giugno 2007, 20:46
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
Re: Problema con una matrice
Inviato: venerdì 8 giugno 2007, 21:01
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.
::) :-\

Re: Problema con una matrice
Inviato: venerdì 8 giugno 2007, 21:13
da winbusters
hey spero di non esser sembrato scortese..se si scusami non volevo

sai quel codice mi ha fatto impazzire per una mattinata
Re: Problema con una matrice
Inviato: venerdì 8 giugno 2007, 21:51
da thelo
guarda che da me il codice funziona alla perfezione
Re: Problema con una matrice
Inviato: venerdì 8 giugno 2007, 22:49
da winbusters
lo so e infatti ho ringraziato! (good) però vorrei sapere perchè si usa getchar..non basta scanf?
Re: Problema con una matrice
Inviato: sabato 9 giugno 2007, 0:52
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