View Full Version : [C] Problema con programma tabelline
Salve sono nuovo del forum e anche un novello del C, sto facendo un esercizio in cui è richiesto di stamapre a video la tabellina di un numero.
ES.
01234
11234
22468
336912
4481216
Questo è quello che sono riuscito a fare da solo, (cioè ben poco).
#include <stdio.h>
main()
{
int i, j, m = 0, n = 1, s;
for (i= 0; i < 5; i++)
{
for(j = 0; j < 5; j++)
{
s = m * n;
printf("%d", s);
m++;
if(m == 5)
{
m = 1;
n = 1;
}
}
printf("\n");
}
system("PAUSE");
return;
}
Per favore potete darmi qualche spunto???
P.s sono 2 giorni che ci ragiono su
wingman87
21-03-2008, 13:11
Dovresti commentare un po' il codice, così si può capire se l'errore sta nel ragionamento o solo nel codice.
Così ad occhio posso dirti che stai usando m e n quando potresti molto più semplicemente sfruttare gli indici dei cicli i e j. Inoltre n non lo modifichi mai.
PS:ad ogni modo la tabellina dello 0 è sempre 0
/*In questo caso voglio la tabellina del 4, la stampa deve essere così
0 1 2 3 4
1 1 2 3 4
2 2 4 6 8
3 3 6 9 12
4 4 8 12 15
*/
#include <stdio.h>
main()
{
int i, j, m = 0, n = 1, s; /*Uso 'i' e 'j' per i cicli, 'm' e 'n' sono i numeri da moltiplicare e 's' è la somma*/
/*Uso i due cicli, il primo per scrivere 5 volte sulla riga, il secondo per scrivere le 5 righe*/
for (i= 0; i < 5; i++)
{
for(j = 0; j < 5; j++)
{
s = m * n;
printf("%d", s);
m++;
if(m == 5)
{
m = 1; /*Il problema lo incontro già alla seconda riga della stampa
perchè se fate caso in ogni riga tranne che nella prima i primi due numeri sono uguali
per questo ho pensato ad un 'if' che mi controlla se sto per iniziare una nuova riga*/
n = 1;
}
}
printf("\n");
}
system("PAUSE");
return;
}
Salve sono nuovo del forum e anche un novello del C, sto facendo un esercizio in cui è richiesto di stamapre a video la tabellina di un numero.
ES.
01234
11234
22468
336912
4481216
Questo è quello che sono riuscito a fare da solo, (cioè ben poco).
#include <stdio.h>
main()
{
int i, j, m = 0, n = 1, s;
for (i= 0; i < 5; i++)
{
for(j = 0; j < 5; j++)
{
s = m * n;
printf("%d", s);
m++;
if(m == 5)
{
m = 1;
n = 1;
}
}
printf("\n");
}
system("PAUSE");
return;
}
Per favore potete darmi qualche spunto???
P.s sono 2 giorni che ci ragiono su
La prima cosa che ho notato.
così tu fai
0*1
poi
1*1
poi
2*1
ecc.
quando cambi n?
E' questo che non riesco a fare, poi il mio problema se leggi il mio ultimo post sta nel fatto che a ogni riga i primi due numeri sono uguali e se li metto in un ciclo e incremento si incremento anche la prima volta e non vengono mai uguali.
F@lkland§
21-03-2008, 13:46
mah non riesco a capire il tuo ragionamento....io avrei fatto semplicemente uno switch sul numero da calcolare la tabellina e per ogni case un ciclo for per fare le moltiplicazioni...
Per fare quell'output è sufficiente usare solamente gli indici 'i' e 'j' e nient'altro.
#include <stdio.h>
main()
{
int i, j, m = 1, n = 1, s; /*Uso 'i' e 'j' per i cicli, 'm' e 'n' sono i numeri da moltiplicare e 's' è la somma*/ /*non dovevi fare il prodotto?*/
for (i= 0; i < 5; i++)
{
for(j = 0; j < 5; j++)
{
s = m * n;
printf("%d_", s); // con _ almeno separi i numeri
m++;
/*
if(m == 5)
{
m = 1; /*Il problema lo incontro già alla seconda riga della stampa
perchè se fate caso in ogni riga tranne che nella prima i primi due numeri sono uguali
per questo ho pensato ad un 'if' che mi controlla se sto per iniziare una nuova riga*/
n = 1;
}
*/ questo non ti serve, se stampi anche j vedrai che quando m assume 5 esce dal ciclo quindi non entrerà mai in questo for.
}
printf("\n");
m=1; /*così ricominci*/
n++; /*così passa alla "tebellina successiva"*/
}
system("PAUSE"); /*non dovresti usare chiamate al sistema, rendono il codice non portabile*/
return;
}
usa il tag code, e non php
questo dovrebbe aiutarti
forse ti puo' aiutare questo:
#include <stdio.h>
int main()
{
int n_MAXtocalc=10; /*numero sino a cui eseguire la tabellina*/
int tot_tocalc=10; /*numero sino a cui eseguire la tabellina*/
int result=0;
int i=0;
int j=0;
printf("\n\n--Welcome nel programma per calcolo Tabellina:\n\n\n");
for(j=0;j<=n_MAXtocalc;j++)
{
printf("\n----------------------------------------------------");
printf("\nTabellina in base:%d\n",j);
for(i=0;i<=tot_tocalc;i++)
{
result=i*j;
printf("Base:%d, Moltiplicatore:%d,Risultato:%d\n",j,i,result);
}
printf("\n----------------------------------------------------");
}
return 0;
}
non sarebbe male nemmeno:
#include <stdio.h>
int main ()
{
int r;
int c;
for (r = 1; r <= 10; r++)
{
for (c = 1; c <= 10; c++)
{
printf("%3d ", r * c );
}
printf("\n");
}
return 0;
}
un semplice ciclo annidato a volte ti risolve la vita :read:
non sarebbe male nemmeno:
#include <stdio.h>
int main ()
{
int r;
int c;
for (r = 1; r <= 10; r++)
{
for (c = 1; c <= 10; c++)
{
printf("%3d ", r * c );
}
printf("\n");
}
return 0;
}
un semplice ciclo annidato a volte ti risolve la vita :read:
che è il gemello di cui sopra;)
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.