Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Tavola pitagorica

Linguaggi e sistemi

Moderatori: Foto UtentePaolino, Foto Utentefairyvilje

0
voti

[1] Tavola pitagorica

Messaggioda Foto Utenteangrigio » 9 ago 2014, 18:09

Ho un problema da proporre alla vostra attenzione:
devo generare una tabella pitagorica che visualizzi il seguente contenuto:

X 1 2 3 4 5
1 1 2 3 4 5
2 2 4 6 8 10
3 3 6 9 12 15
4 4 8 12 16 20
5 5 10 15 20 25

Ho costruito un programma in linguaggio c per risolvere il problema ma non ho ottenuto grandi risultati
Codice: Seleziona tutto
#include<stdio.h>
int main()
{
   int a,b;
   for (a = 1 ; a <= 5 ;  a = a + 1)
      printf("%-3d",a);
      printf("\n");
      for (a = 1 ; a <= 5 ;  a = a + 1)
      for (b = 1 ; b <= 5 ;  b = b + 1)
   
   printf("%-3d %-3d ", a*1, a*b );
   
    printf("\n");
   
      
   return 0;
}

Ho bisogno di suggerimenti per correggere il codice e generare la tabella pitagorica
Avatar utente
Foto Utenteangrigio
18 2 7
Frequentatore
Frequentatore
 
Messaggi: 181
Iscritto il: 8 set 2008, 15:44

0
voti

[2] Re: TAVOLA PITAGORICA

Messaggioda Foto Utentesimo85 » 9 ago 2014, 18:41

Avatar utente
Foto Utentesimo85
30,9k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9927
Iscritto il: 30 ago 2010, 4:59

0
voti

[3] Re: TAVOLA PITAGORICA

Messaggioda Foto Utenteangrigio » 9 ago 2014, 18:55

L'esercizio deve essere risolto usando cicli di for o elementi di selezione if.
Le istruzioni per generare vettori o puntatori non le ho ancora fatte.
Avatar utente
Foto Utenteangrigio
18 2 7
Frequentatore
Frequentatore
 
Messaggi: 181
Iscritto il: 8 set 2008, 15:44

2
voti

[4] Re: TAVOLA PITAGORICA

Messaggioda Foto Utentesimo85 » 9 ago 2014, 19:23

Bene.

Allora ragiona su questo ciclo for annidato:

Codice: Seleziona tutto
#include <stdio.h>

int main(void)
{
  int ir = 0, ic = 0;

  for(ir = 1; ir < 6; ir++)
  {
    for(ic = 1; ic < 6; ic++)
      printf("%2d\t", ir * ic);
   
    printf("\n");
  }

  return 0;
}


Compila ed esegui.
Ragionaci sopra, prova a moficarlo.

Se ti trovi in difficoltà ne parliamo assieme.

Il programma lo puoi anche scrivere cosi:

Codice: Seleziona tutto
#include <stdio.h>

int main(void)
{
  int ir = 0, ic = 0;

  for(ir = 0; ir < 5; ir++)
  {
    for(ic = 0; ic < 5; ic++)
      printf("%2d\t", (ir + 1) * (ic + 1));
   
    printf("\n");
  }

  return 0;
}
Avatar utente
Foto Utentesimo85
30,9k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9927
Iscritto il: 30 ago 2010, 4:59

0
voti

[5] Re: TAVOLA PITAGORICA

Messaggioda Foto Utenteangrigio » 9 ago 2014, 20:42

Ho modificato il codice cosi':

Codice: Seleziona tutto
#include <stdio.h>

int main(void)
{
  int ir = 0, ic = 0;
  printf("X\n");

  for(ir = 1; ir < 6; ir++)
  { 
     printf("%2d\t", ir);
     for(ic = 1; ic < 6; ic++)
     printf("%2d\t", ic);
     printf("%2d\t", ir * ic);
     printf("\n");
  }
 
  return 0 ;
}



l'output di uscita e':
X
1 1 2 3 4 5 6
2 1 2 3 4 5 12
3 1 2 3 4 5 18
4 1 2 3 4 5 24
5 1 2 3 4 5 30



Non so dove sto sbagliando...
Avatar utente
Foto Utenteangrigio
18 2 7
Frequentatore
Frequentatore
 
Messaggi: 181
Iscritto il: 8 set 2008, 15:44

0
voti

[6] Re: TAVOLA PITAGORICA

Messaggioda Foto Utentesimo85 » 9 ago 2014, 22:55

Devi stampare la X all' interno del ciclo for annidato.

Come vedi, nelle due linee (orizzontale e verticale) colorare ci sono 6 caratteri, da X a 5.

X 1 2 3 4 5
1 1 2 3 4 5
2 2 4 6 8 10
3 3 6 9 12 15
4 4 8 12 16 20
5 5 10 15 20 25

E la X la stampi quando ir = ...
Avatar utente
Foto Utentesimo85
30,9k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9927
Iscritto il: 30 ago 2010, 4:59

0
voti

[7] Re: TAVOLA PITAGORICA

Messaggioda Foto Utenteangrigio » 10 ago 2014, 11:16

Dovrebbe stampare una sequenza in orizzontale dei primi 5 numeri .
Avatar utente
Foto Utenteangrigio
18 2 7
Frequentatore
Frequentatore
 
Messaggi: 181
Iscritto il: 8 set 2008, 15:44

0
voti

[8] Re: TAVOLA PITAGORICA

Messaggioda Foto Utenteangrigio » 10 ago 2014, 11:25

Quando ir va da 1 a 5
Avatar utente
Foto Utenteangrigio
18 2 7
Frequentatore
Frequentatore
 
Messaggi: 181
Iscritto il: 8 set 2008, 15:44

1
voti

[9] Re: TAVOLA PITAGORICA

Messaggioda Foto Utentesimo85 » 10 ago 2014, 13:53

angrigio ha scritto:Dovrebbe stampare una sequenza in orizzontale dei primi 5 numeri .

angrigio ha scritto:Quando ir va da 1 a 5


Non ho capito bene quale delle due è la risposta a quando stampare la X.
Forse ti confondono un po' i for annidati.

Se è cosi, con lo scopo di farti capire meglio, cosa deduci osservando ed anche eseguendo questo codice ?

Codice: Seleziona tutto
#include <stdio.h>

int main(void)
{
   int ir = 0, ic = 0;

   for(ir = 0; ir < 6; ir++)
   {
      printf("ir ");
      
      for(ic = 1; ic < 6; ic++)
         printf("ic ");

      printf("\n");
   }

   return 0;
}


Come vedi è molto facile sostituire gli argomenti della printf perché vengano stampati i numeri..
Prima hai detto che devi usare gli if-else, e non ti sbagliavi. :-)
Avatar utente
Foto Utentesimo85
30,9k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9927
Iscritto il: 30 ago 2010, 4:59

0
voti

[10] Re: TAVOLA PITAGORICA

Messaggioda Foto Utenteangrigio » 10 ago 2014, 14:20

Ho testato il progamma ,l'output è:
ir ic ic ic ic ic
ir ic ic ic ic ic
ir ic ic ic ic ic
ir ic ic ic ic ic
ir ic ic ic ic ic
ir ic ic ic ic ic
Mi stampa la colonna ir poi la riga ic e successivamente tutte le righe ic.
Ho poi modificato il testo del programma:

Codice: Seleziona tutto
#include <stdio.h>

int main(void)
{
   int ir = 0, ic = 0;

   for(ir = 1; ir < 6; ir++)
   {
      printf("%d ",ir);
     
      for(ic = 1; ic < 6; ic++)
         printf("%d ",ic*ir);

      printf("\n");
   }

   return 0;
}

La stampa dell'esercizio e' praticamente risolta.
Grazie mille.
Avrei bisogno di capire meglio i cicli di for annidati
Avatar utente
Foto Utenteangrigio
18 2 7
Frequentatore
Frequentatore
 
Messaggi: 181
Iscritto il: 8 set 2008, 15:44

Prossimo

Torna a PC e informatica

Chi c’è in linea

Visitano il forum: Nessuno e 7 ospiti