Esercizio in C

Giovy9090

Nuovo Utente
7
0
Buongiorno a tutti, sono nuovo del sito, e sto cercando di imparare da solo il linguaggio c++. I programmi che uso sono cc+builder e visual studio. Sto cercando di capire l'utilizzo della matrice, ma non riesco a trovare abbastanza info per farmelo capire su internet.

Vorrei creare un programma che inserisca una matrice[2][2], e nella terza colonna vada il resto della divisione di ogni coppia, e nella quarta colonna vada il numero a elevato al numero b (le coppie della matrice).

Ma non riesco a capire dopo aver inserito i for per creare la matrice e poter inserire i numeri, come far funzionare le altre richieste.
Potreste aiutarmi soprattutto spiegandomi, nel possibile, i passaggi?
Grazie 1000.
Ciao.
 
Ultima modifica:

Giovy9090

Nuovo Utente
7
0
Ciao,

Prova a postare il codice, così vediamo cosa non va bene.

PS: per una panoramica veloce sugli array in c: http://www.acm.uiuc.edu/webmonkeys/book/c_guide/1.2.html#arrays

sono riuscito solo a fare la matrice [2][2], ma non riesco a capire come far trasportare il prodotto in una terza colonna e fare elevare il primo al secondo di ogni coppia in una quarta colonna. Potete aiutarmi ? *_*

int mat[2][2],resto,elevato,i,j,n;
for(i=0;i<2;i++)
{

for(j=0;j<2;j++)
{
printf(
"inserisci\t");
scanf (
"%d",&mat[j]);
}
}
 

for(i=0;i<2;i++)
{
printf(
"\n");
for(j=0;j<2;j++)
{
printf(
"%d\t",mat[j]);
}
}
getch();
}
 
Ultima modifica da un moderatore:
D

deleted_98961

Ospite
sono riuscito solo a fare la matrice [2][2], ma non riesco a capire come far trasportare il prodotto in una terza colonna e fare elevare il primo al secondo di ogni coppia in una quarta colonna. Potete aiutarmi ? *_*

int mat[2][2],resto,elevato,i,j,n;
for(i=0;i<2;i++)
{

for(j=0;j<2;j++)
{
printf(
"inserisci\t");
scanf (
"%d",&mat[j]);
}
}
 

for(i=0;i<2;i++)
{
printf(
"\n");
for(j=0;j<2;j++)
{
printf(
"%d\t",mat[j]);
}
}
getch();
}
una matrice 2x2 è composto da 2 colonne e 2 righe, perchè parli di terza colonna o quarta? al massimo devi creare una matrice 4x4 oppure 2x4 (2 righe 4 colonne)

Se non riesci ancora ad astrarre, essendo all'inizio, disegnati questa matrice;
comunque mettiamo sia corretta quella 2x4 con dei valori casuali allora le operazioni saranno:


m[2][4]

//valori inseriti dall'utente tramite il tuo codice:
m[0][0]=1
m[0][1]=2
m[1][0]=3
m[1][1]=4


il resto delle coppie:
m[0][2] = m[0][0] mod m[0][1]
m[1][2] = m[1][0] mod m[1][1]


elevamento a potenza:
m[0][3] = m[0][0]^m[0][1]
m[1][3] = m[1][0]^m[1][1]



a trasformarlo in codice lo lascio a te :)
 
Ultima modifica da un moderatore:

Giovy9090

Nuovo Utente
7
0
Grazie 1000 per avermi risposto :)

Questo è il programma


int mat[2][4],i,j;
for(i=0;i<2;i++)
{
for(j=0;j<4;j++)
{
printf(
"inserisci\t");
scanf (
"%d",&mat[j]);

mat[0][2] = mat[0][0] % mat[0][1];
mat[1][2] = mat[1][0] % mat[1][1];
mat[0][3] = mat[0][0] ^ mat[0][1];
mat[1][3] = mat[1][0] ^ mat[1][1];

}
}
 
for(i=0;i<2;i++)
{
printf(
"\n");
for(j=0;j<4;j++)
{
printf("%d\t",mat[0][2],mat[1][2],mat[0][3],mat[1][3];
}
}
getch();
}



Quello che mi esce nel debug del programma è questo:

inserisci: 1
inserisci: 2
inserisci: 3
inserisci: 4
inserisci: 5
inserisci: 6
inserisci: 7
inserisci: 8
inserisci: 9

ed esce:

1----2----1
2----5----2
5----8----9

ma non mi sembra esegua le richieste :(
 
Ultima modifica:
D

deleted_98961

Ospite
Questo è il programma


int mat[2][4],i,j;
for(i=0;i<2;i++)
{

for(j=0;j<4;j++)
{
printf(
"inserisci\t");

scanf ("%d",&mat[j]);


mat[0][2] = mat[0][0] % mat[0][1];
mat[1][2] = mat[1][0] % mat[1][1];
mat[0][3] = mat[0][0] ^ mat[0][1];
mat[1][3] = mat[1][0] ^ mat[1][1];


}
}
 

for(i=0;i<2;i++)
{
printf("\n");

for(j=0;j<4;j++)
{
printf("%d\t",mat[0][2],mat[1][2],mat[0][3],mat[1][3];
}
}
getch();
}
con "trasformarlo in codice" non intendevo copiare pari pari ciò che avevo scritto. Infatti quello era un unfolding (scrittura srotolata) delle operazioni.
Il codice di per sè deve generalizzare lunghe operazioni in poche righe, perciò quello che hai fatto va bene per pochi conti, ma immagina di avere matrici 100x100 ti scrivi i singoli casi?
certo è un esercizio semplice, e generalizzare è quasi inutile, ma per quel poco che si può fare...


l'operatore che ho scritto ^ per le potenze in C ha un altro significato (è l'operatore bit-wise dello XOR), te lo ho messo solo perchè pensavo che la scrittura matematica ti fosse più familiare...

In C si utilizza la funzione:

Codice:
double pow(double a, double b)
disponibile nella libreria math.h


Perciò:

Codice:
#include <stdio.h>
#include <math.>

...

int N = 2
int M = 4

[FONT=Consolas][SIZE=2][COLOR=#0000ff]int[FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2][COLOR=#000000] mat[N][M];

[/COLOR]//il codice deve tenere in considerazione che l'inserimento dei dati è valido solo per la matriche 2x2 (le coppie) 
//il resto della matrice la inizializzerai in un secondo momento (ti chiedo: perchè?)

[/SIZE][/FONT][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]for[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][FONT=Consolas][SIZE=2](int i=0;i<N;i++){
    [/SIZE][/FONT][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]for[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][FONT=Consolas][SIZE=2](int j=0;j<2;j++){
        printf([/SIZE][/FONT][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]"inserisci\t"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][FONT=Consolas][SIZE=2]);
        scanf ([/SIZE][/FONT][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]"%d"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][FONT=Consolas][SIZE=2],&mat[i][j]);

    }//nota che si calcola fuori dal ciclo annidato
    mat[i][2]=mat[i][0]%mat[i][1];
    [/SIZE][/FONT][/SIZE][/FONT][/COLOR][COLOR=#0000ff][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]mat[i][3]=pow(mat[i][0],mat[i][1][/SIZE][/FONT][/SIZE][/FONT][/COLOR][/SIZE][/FONT]); //cast implicito
[FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]
}
[/SIZE][/FONT][/SIZE][/FONT][/COLOR][/SIZE][/FONT]

la stampa dell'array la lascio a te controllarla (ma mi pare essere corretta...)
 
Ultima modifica da un moderatore:

Giovy9090

Nuovo Utente
7
0
Grazie ancora per aiutarmi, io quando inizio a non capire una cosa vado in confusione.... comunque questo è il mio codice completo per visual studio

Codice:
[FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]# include[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2][COLOR=#000000] [/COLOR][/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]"stdafx.h"
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]# include[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2][COLOR=#000000] [/COLOR][/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]<stdio.h>
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]# include[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2][COLOR=#000000] [/COLOR][/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]<conio.h>
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]# include[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2][COLOR=#000000] [/COLOR][/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]<math.h>
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]# include[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2][COLOR=#000000] [/COLOR][/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]<limits.h>
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] 
 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2][COLOR=#000000] _tmain([/COLOR][/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2][COLOR=#000000] argc, _TCHAR* argv[])[/COLOR]
{
 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2][COLOR=#000000] mat[2][4],i,j;[/COLOR]
[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]for[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2][COLOR=#000000]([/COLOR][/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2][COLOR=#000000] i=0;i<4;i++)[/COLOR]
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]for[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]([/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] j=0;j<4;j++)
{
printf([/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]"inserisci\t"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]);
scanf ([/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]"%d"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2],&mat[i][j]);
}
mat[i][2]=mat[i][0]%mat[i][1];
mat[i][3]=pow(mat[i][0],mat[i][1]); 
}
 
[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]for[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2][COLOR=#000000](i=0;i<4;i++)[/COLOR]
{
printf([/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]"\n"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]);
[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]for[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2][COLOR=#000000](j=0;j<4;j++)[/COLOR]
{
printf([/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]"%d\t"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2],mat[i][2],mat[i][3]);
}
}
getch();
}

ho sbagliato ancora qualcosa?? :(
[/SIZE][/FONT][/SIZE][/FONT]
 
D

deleted_98961

Ospite
Codice:
[FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]# include[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]"stdafx.h"
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]# include[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]<stdio.h>
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]# include[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]<conio.h>
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]# include[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]<math.h>
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]# include[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]<limits.h>
[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT]

troppi header. Sì programmare in ambiente VS e Windows porta ad utilizzare funzioni e librerie che si adattano maggiormente, ma sono inutili per far funzionare il programma di per sè.
Sapresti dirmi quali sono quelli che vengono effettivamente utilizzati dal tuo programma e quali sono quelli "di contorno"?
 

Codice:
[FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2][COLOR=#000000] _tmain([/COLOR][/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2][COLOR=#000000] argc, _TCHAR* argv[])[/COLOR]
{
 
[/SIZE][/FONT][/SIZE][/FONT]
anche questo è un main proprio di VS (mi sembra di ricordare che deriva dalla creazione automatica di un progetto) attento che se lo esporti in un altro ambiente non funzione. Cerca di adattarti, va bene sei all'inizio, ma già da ora sappi cosa è "standard" e cosa no.
Il main nei nuovi standard può essere scritto come:

Codice:
int main(void)
int main(int argc, int **argv)
gli altri non sono accettati, nel senso non sono portabili.


Codice:
[FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2][COLOR=#000000] mat[2][4],i,j;[/COLOR]
[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]for[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2][COLOR=#000000]([/COLOR][/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2][COLOR=#000000] i=0;i<4;i++)[/COLOR]
{
[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]for[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]([/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] j=0;j<4;j++)
{[/SIZE][/FONT][/SIZE][/FONT]


perchè il primo for lo fai arrivare a 4??? ci sarà un bel seg-fault per overflow. Abbiamo dichiarato una matrice 2x4 NON 4x4. ATTENTO per questo io ho dichiarato separatamente la grandezza dell'array in due interi N e M.
Il secondo for cicla solo sulle prime coppie, lo hai descritto te il problema...
Non ha senso chiedere di inserire dati all'utente nella terza/quarta colonna, perchè li inserirai con i calcoli della potenza e del modulo.

corretto:
Codice:
[FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]for[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2][COLOR=#000000]([/COLOR][/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2][COLOR=#000000] i=0;i<2;i++)[/COLOR]{
        [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]for[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]([/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] j=0;j<2;j++)[/SIZE][/FONT][/SIZE][/FONT]{
[FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]           printf([/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]"inserisci\t"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]);
            scanf ([/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]"%d"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2],&mat[i][j]);
        }
        mat[i][2]=mat[i][0]%mat[i][1];
        mat[i][3]=pow(mat[i][0],mat[i][1]); 
}

 
[/SIZE][/FONT][/SIZE][/FONT]



Codice:
[FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2][COLOR=#000000]FOR(i=0;i<4;i++)[/COLOR]
{
printf([/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]"\n"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]);
[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]for[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2][COLOR=#000000](j=0;j<4;j++)[/COLOR]
{
printf([/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]"%d\t"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2],mat[i][2],mat[i][3]);
}
}
getch();
}
[/SIZE][/FONT][/SIZE][/FONT]

qua non so cosa vuoi stampare... tutto l'array o solo i risultati delle operazioni?
 
Ultima modifica da un moderatore:

Giovy9090

Nuovo Utente
7
0
grazie anche di avermi detto questo, perchè non lo sapevo :)
int _tmain(int argc, _TCHAR* argv[]){
anche questo è un main proprio di VS (mi sembra di ricordare che deriva dalla creazione automatica di un progetto) attento che se lo esporti in un altro ambiente non funzione. Cerca di adattarti, va bene sei all'inizio, ma già da ora sappi cosa è "standard" e cosa no.

int main(void)int main(int argc, int **argv)
l main nei nuovi standard può essere scritto come:


gli altri non sono accettati, nel senso non sono portabili


comunque vorrei stampare tutto l'array (matrice e risultati operazioni)
 
D

deleted_98961

Ospite
allora mi pare proprio che il tuo codice non funzioni per il tuo scopo, oltre che per gli errori di seg-fault non compilerebbe nemmeno per questo:

printf("%d\t",mat[2],mat[3]);

si aspetta di stampare un solo valore intero, non due. Poi stamperebbe la terza e quarta colonne e basta...
Perciò:
Codice:
[FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2][COLOR=#000000]for(i=0;i<2;i++)[/COLOR]{
         [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]printf([/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]"\n"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]);[/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]   
         [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]for([/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2][COLOR=#000000]j=0;j<4;j++)[/COLOR]{
         printf([/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]"%d\t"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2],mat[i][j]);     
     } 
} [/SIZE][/FONT][/SIZE][/FONT]
 

Giovy9090

Nuovo Utente
7
0
Grazie di tutto ****, il programma corretto per cui dovrebbe esser questo:

Codice:
[FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][FONT=Consolas][SIZE=2][COLOR=#000000] main([/COLOR][/SIZE][/FONT][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]void[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][FONT=Consolas][SIZE=2][COLOR=#000000])[/COLOR]
[/SIZE][/FONT][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][FONT=Consolas][SIZE=2][COLOR=#000000] main([/COLOR][/SIZE][/FONT][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][FONT=Consolas][SIZE=2][COLOR=#000000] argc, [/COLOR][/SIZE][/FONT][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][FONT=Consolas][SIZE=2][COLOR=#000000] **argv)[/COLOR]
 
[/SIZE][/FONT][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][FONT=Consolas][SIZE=2][COLOR=#000000] mat[2][4],i,j;
[/COLOR]
[/SIZE][/FONT][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]for[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][FONT=Consolas][SIZE=2][COLOR=#000000](i=0;i<2;i++)
{[/COLOR]
[/SIZE][/FONT][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]for[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][FONT=Consolas][SIZE=2](j=0;j<2;j++)
{
printf([/SIZE][/FONT][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]"inserisci\t"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][FONT=Consolas][SIZE=2]);
scanf ([/SIZE][/FONT][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]"%d"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][FONT=Consolas][SIZE=2],&mat[i][j]);
}
mat[i][2]=mat[i][0]%mat[i][1];
mat[i][3]=pow(mat[i][0],mat[i][1]);
}
[/SIZE][/FONT][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]for[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][FONT=Consolas][SIZE=2][COLOR=#000000](i=0;i<2;i++)[/COLOR]
{
printf([/SIZE][/FONT][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]"\n"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][FONT=Consolas][SIZE=2]);
[/SIZE][/FONT][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]for[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][FONT=Consolas][SIZE=2](j=0;j<4;j++)
{
printf([/SIZE][/FONT][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]"%d\t"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][FONT=Consolas][SIZE=2],mat[i][j]);
}
getch();
}
[/SIZE][/FONT][/SIZE][/FONT]

ma non capisco nel debug perchè quando inserisco i valori:

inserisci: 1
inserisci: 2
inserisci: 3
inserisci: 4
inserisci: 5
inserisci: 6
inserisci: 7
inserisci: 8
inserisci: 9


mi stampa questo:

1----2----1
2----5----2
5----8----9
 
Ultima modifica da un moderatore:
D

deleted_98961

Ospite
Grazie di tutto, il programma corretto per cui dovrebbe esser questo:

Codice:
[FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][FONT=Consolas][SIZE=2][COLOR=#000000] main([/COLOR][/SIZE][/FONT][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]void[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][FONT=Consolas][SIZE=2][COLOR=#000000])[/COLOR]
[/SIZE][/FONT][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][FONT=Consolas][SIZE=2][COLOR=#000000] main([/COLOR][/SIZE][/FONT][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][FONT=Consolas][SIZE=2][COLOR=#000000] argc, [/COLOR][/SIZE][/FONT][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][FONT=Consolas][SIZE=2][COLOR=#000000] **argv)[/COLOR]
 
[/SIZE][/FONT][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]int[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][FONT=Consolas][SIZE=2][COLOR=#000000] mat[2][4],i,j;
[/COLOR]
[/SIZE][/FONT][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]for[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][FONT=Consolas][SIZE=2][COLOR=#000000](i=0;i<2;i++)
{[/COLOR]
[/SIZE][/FONT][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]for[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][FONT=Consolas][SIZE=2](j=0;j<2;j++)
{
printf([/SIZE][/FONT][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]"inserisci\t"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][FONT=Consolas][SIZE=2]);
scanf ([/SIZE][/FONT][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]"%d"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][FONT=Consolas][SIZE=2],&mat[i][j]);
}
mat[i][2]=mat[i][0]%mat[i][1];
mat[i][3]=pow(mat[i][0],mat[i][1]);
}
[/SIZE][/FONT][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]for[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][FONT=Consolas][SIZE=2][COLOR=#000000](i=0;i<2;i++)[/COLOR]
{
printf([/SIZE][/FONT][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]"\n"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][FONT=Consolas][SIZE=2]);
[/SIZE][/FONT][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]for[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][FONT=Consolas][SIZE=2](j=0;j<4;j++)
{
printf([/SIZE][/FONT][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]"%d\t"[/COLOR][/SIZE][/FONT][/COLOR][/SIZE][/FONT][/COLOR][FONT=Consolas][SIZE=2],mat[i][j]);
}
getch();
}
[/SIZE][/FONT][/SIZE][/FONT]
Il codice per il problema è corretto, indentato risulta:


Codice:
int mat[2][4],i,j;

for(i=0;i<2;i++){
    for(j=0;j<2;j++){
        printf("inserisci\t");
        scanf ("%d",&mat[i][j]);
    }
    mat[i][2]=mat[i][0]%mat[i][1];
    mat[i][3]=pow(mat[i][0],mat[i][1]);
}

for(i=0;i<2;i++){
    printf("\n");
    for(j=0;j<4;j++){
        printf("%d\t",mat[i][j]);
    }
}

il tuo errore? che cosa sono quei due main??
Io ho suggerito di SOSTITUIRE il
Codice:
int _tmain
proprio di Visual Studio con un più generale:
int main(void)
OPPURE

int main(int argc, int **argv)


Io non programmando in VS non utilizzo nemmeno le funzioni getch() della libreria conio.h, perciò il mio codice completo risulterebbe questo:

Codice:
#include <stdio.h>
#include <math.h>


int main(void){

int mat[2][4];

for(int i=0;i<2;i++){
    for(int j=0;j<2;j++){
        printf("inserisci\t");
        scanf ("%d",&mat[i][j]);
    }
    mat[i][2]=mat[i][0]%mat[i][1];
    mat[i][3]=pow(mat[i][0],mat[i][1]);
}

for(int i=0;i<2;i++){
    printf("\n");
    for(int j=0;j<4;j++){
        printf("%d\t",mat[i][j]);
    }
}

return 0;
}

riguardalo :)
 
Ultima modifica da un moderatore:

Entra

oppure Accedi utilizzando

Hot: E3 2021, chi ti è piaciuto di più?

  • Ubisoft

    Voti: 29 22.1%
  • Gearbox

    Voti: 2 1.5%
  • Xbox & Bethesda

    Voti: 85 64.9%
  • Square Enix

    Voti: 10 7.6%
  • Capcom

    Voti: 6 4.6%
  • Nintendo

    Voti: 18 13.7%
  • Altro (Specificare)

    Voti: 11 8.4%

Discussioni Simili