View Full Version : [C]Ordinamento e stampa di un vettore
InformaticoRC
17-04-2010, 16:10
Salve a tutti!
Traccia programma: Dato un vettore di interi 10 elementi:a)popolarlo interamente b)ordinarlo usando un qualsiasi algoritmo 3)stampare prima il primo elemento poi l'ultimo quindi il secondo e il penultimo ecc...(vettore ordinato:0123456789 stampa richiesta:0918273645).
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX = 100
void sel_sort(int A[],int n);
int leggi_array(int x[]);
void stampa_array(int x[], int n);
void scambia (int x[]);
int leggi_array(int x[])
{
int i;
int n = 10;
for(i = 0; i < n; i++)
{
printf("Inserire un numero nella posizione %d\n", i);
scanf("%d", &x[i]);
}
return n;
}
void stampa_array(int x[], int n)
{
int i;
printf("\n-----------------\n");
for(i = 0; i < n; i++)
{
printf("%d\n", x[i]);
}
}
void sel_sort(int A[], int n)
{
int i, j, p, min;
for (i=0; i<n-1; i++) {
min = A[i];
p = i;
for (j=i+1; j<n; j++){
if (A[j]<min)
{
min = A[j];
p = j;
A[p] = A[i];
A[i] = min;
}
}
}
}
void scambia (int x[], int size)
{
int i;
int j;
printf("\n---------------------\n");
for (i=0; i<=j; i++)
{ printf ("%d\n", x[i]);
printf ("%d\n", x[j]);
j--; }
}
/*
* Funzione principale
*/
int main(void) {
int v[ 100 ];
int n;
n = leggi_array(v);
stampa_array(v, n);
sel_sort(v, n);
stampa_array(v, n);
scambia (v, n) ;
system("PAUSE");
return(1);
}
L'ordinamento che ho usato è il selection sort, così come si può comunque usare il bubble sort o insertion sort..
Oltra alla stampa richiesta dalla traccia ci sono queste 2:
5678901234
void scambia (int x[], int size)
{
int i;
int j;
printf("\n---------------------\n");
for (j=5; j<=9; j++)
{ printf ("%d\n", x[j]);}
for(i=0; i<=4; i++)
{ printf("%d\n", x[i]);}
}
0516273849
void scambia (int x[], int size)
{
int i;
int j=5;
printf("\n---------------------\n");
for (i=0; i<=4; i++)
{ printf ("%d\n", x[i]);
printf("%d\n", x[j]);
j++;}
}
Tra le altre l'unica che mi da errore(di segmentazione) è questa: 9876543210...e cioè stampare il vettore in senso decrescente...voi come la fareste???
lupoxxx87
17-04-2010, 17:27
stampando l'array ordinato dall'ultimo elemento al primo
InformaticoRC
18-04-2010, 11:23
stampando l'array ordinato dall'ultimo elemento al primo
Questo si...ma tradotto in codice sarebbe?
lupoxxx87
18-04-2010, 11:41
non mi pare così difficile, visto che stampi già l'array dal primo all'ultimo elemento....
void stampa_array_al_contrario(int x[], int n)
{
int i;
printf("\n-----------------\n");
for(i = n; i > 0; i--)
{
printf("%d\n", x[i-1]);
}
}
ps: un segmentation fault non è un "errore di segmentazione" ...
InformaticoRC
18-04-2010, 16:41
non mi pare così difficile, visto che stampi già l'array dal primo all'ultimo elemento....
void stampa_array_al_contrario(int x[], int n)
{
int i;
printf("\n-----------------\n");
for(i = n; i > 0; i--)
{
printf("%d\n", x[i-1]);
}
}
ps: un segmentation fault non è un "errore di segmentazione" ...
Ok grazie!!:D difficile non era di certo..ma a me una volta che lo mandavo in esecuzione non si fermava mai e continuava a stamparmi 0 all'infinito e il messaggio che mi usciva diceva proprio errore di segmentazione.
lupoxxx87
18-04-2010, 17:46
Ok grazie!!:D difficile non era di certo..ma a me una volta che lo mandavo in esecuzione non si fermava mai e continuava a stamparmi 0 all'infinito e il messaggio che mi usciva diceva proprio errore di segmentazione.
si vede che sbagliavi con gli indici e andavi a leggere in zone non corrispondenti all'array.
||ElChE||88
18-04-2010, 17:53
ps: un segmentation fault non è un "errore di segmentazione" ...
No, è un autobus rosa volante... :rolleyes:
http://it.wikipedia.org/wiki/Errore_di_segmentazione
lupoxxx87
18-04-2010, 18:14
No, è un autobus rosa volante... :rolleyes:
http://it.wikipedia.org/wiki/Errore_di_segmentazione
anche tu sei convinto che wikipedia sia la fonte della sapienza universale ?
allora prova a scoprire la differenza tra
• errore
• fault
• failure
poi vediamo cosa ne pensi
||ElChE||88
18-04-2010, 19:24
anche tu sei convinto che wikipedia sia la fonte della sapienza universale ?
allora prova a scoprire la differenza tra
• errore
• fault
• failure
poi vediamo cosa ne pensi
Segmentation fault = errore che indica la violazione della segmentazione.
Errore di segmentazione è più che appropriato come traduzione (che poi è tradotto così in una marea di altre lingue, francese, russo, svedese, portoghese...).
PS: Avete un po' rotto il cazzo con la scusa del "wikipedia blah blah". Non sarà la fonte della sapienza universale, ma non vuol dire mica che è tutto sbagliato.
PS2: La tua conoscenza dell'inglese mi sembra un po' approssimativa. Prova ad aprire un dizionario alla f e un nuovo mondo si aprira davanti a te.
lupoxxx87
18-04-2010, 19:34
Segmentation fault = errore che indica la violazione della segmentazione.
Errore di segmentazione è più che appropriato come traduzione (che poi è tradotto così in una marea di altre lingue, francese, russo, svedese, portoghese...).
PS: Avete un po' rotto il cazzo con la scusa del "wikipedia blah blah". Non sarà la fonte della sapienza universale, ma non vuol dire mica che è tutto sbagliato.
PS2: La tua conoscenza dell'inglese mi sembra un po' approssimativa. Prova ad aprire un dizionario alla f e un nuovo mondo si aprira davanti a te.
se sapessi la differenza tra error e fault ti lamenteresti anche tu dell'errata traduzione in "errore di segmentazione"
in effetti hai ragione....a lavorare a dublino la mia conoscenza dell'inglese dev'essere proprio approssimativa....no?
beh di sicuro lo è la tua in ingegneria del software visto che alla mia richiesta di guardare le differenze tra errore e fault non hai risposto ma hai evitato di ammettere la tua ignoranza in questione
EDIT____dall'oxford-paravia:
fault
UK: [[fɔ:lt]]
1. difetto
2. mancanza
3. manchevolezza
4. guasto
5. vizio
6. fallo
7. pecca
8. faglia
9. torto
10. colpa
caspita..adesso mando una mail a sti qui e gli dico che hanno una conoscenza dell'inglese un po' approssimativa
||ElChE||88
18-04-2010, 20:08
se sapessi la differenza tra error e fault ti lamenteresti anche tu dell'errata traduzione in "errore di segmentazione"
Non sempre le cose vanno tradotte alla lettera, l'importante è che il concetto sia lo stesso.
La traduzione è corretta, che ti piaccia o no.
in effetti hai ragione....a lavorare a dublino la mia conoscenza dell'inglese dev'essere proprio approssimativa....no?
beh di sicuro lo è la tua in ingegneria del software visto che alla mia richiesta di guardare le differenze tra errore e fault non hai risposto ma hai evitato di ammettere la tua ignoranza in questione
in effetti hai ragione....a studiare in irlanda la mia conoscenza dell'inglese e dell'ingegneria del software (ma che cazzo centra ora?) dev'essere proprio approssimativa....no?
caspita..adesso mando una mail a sti qui e gli dico che hanno una conoscenza dell'inglese un po' approssimativa
caspita, adesso mando una mail a tutta la russia, la francia e il portogallo (poi basta, altrimenti mi prendono per spammer) e gli dico che hanno una conoscenza dell'inglese un po' approssimativa
lupoxxx87
18-04-2010, 21:30
Non sempre le cose vanno tradotte alla lettera, l'importante è che il concetto sia lo stesso.
La traduzione è corretta, che ti piaccia o no.
in effetti hai ragione....a studiare in irlanda la mia conoscenza dell'inglese e dell'ingegneria del software (ma che cazzo centra ora?) dev'essere proprio approssimativa....no?
beh se sei in irlanda possiamo vederci per una birra, così ti posso spiegare di persona che un errore, un fault e una failure, cose che si analizzano a fondo durante un processo di ingengeria del software, sono concetti diversi.
e che se hanno scritto "segmentation fault" nella stesura dei compilatori C, è perchè quello che lo causa è un fault e non un errore.
comunque continuo a pensare che se devi condire le tue risposte di parole scurrili e continui ad evitare la mia domanda iniziale, vuol dire che non hai molto chiara la situazione di un programma quando giunge a una situazione di "fault"
wingman87
18-04-2010, 21:48
Bisogna mantenere una certa flessibilità quando si legge un testo in inglese.
Segmentation fault è un'"etichetta" che indica due cose: un difetto, e quindi un fault, ma al tempo stesso un errore, che si verifica nel momento in cui ci accorgiamo della presenza del difetto perché il programma "va in segmentation fault".
||ElChE||88
18-04-2010, 21:51
beh se sei in irlanda possiamo vederci per una birra, così ti posso spiegare di persona che un errore, un fault e una failure, cose che si analizzano a fondo durante un processo di ingengeria del software, sono concetti diversi.
Guarda che un "errore" può anche essere usato come concetto astratto.
Un page fault è un errore? No.
Un GPF è un errore? Possibile, ma non è detto.
Un segmentation fault è un errore? Si, è un errore nell'accesso alla memoria.
Rimango della mia opinione che
Non sempre le cose vanno tradotte alla lettera, l'importante è che il concetto sia lo stesso.
Per favore, cercate di non azzuffarvi ;)
DanieleC88
18-04-2010, 23:49
Quanta sterilità.
lupoxxx87
19-04-2010, 00:37
Per favore, cercate di non azzuffarvi ;)
no probl ;) io la sto prendendo con molta serenità...
Non sempre le cose vanno tradotte alla lettera, l'importante è che il concetto sia lo stesso.
La traduzione è corretta, che ti piaccia o no.
sto solo cercando di fargli capire che certe cose, tra cui le nozioni tecniche, non rispondono a questa regola che lui continua a sostenere.
che poi per lui un "segmentation fault" sia un errore tanto quanto lo sia un "code404", perchè non riesce ad aprirsi mentalmente e capire che errors (errori), fault (falle) e failure (fallimenti) sono concetti differenti tra di loro, non è affare mio.
||ElChE||88
19-04-2010, 01:01
che poi per lui un "segmentation fault" sia un errore tanto quanto lo sia un "code404", perchè non riesce ad aprirsi mentalmente e capire che errors (errori), fault (falle) e failure (fallimenti) sono concetti differenti tra di loro, non è affare mio.
Sarà un po' difficile convincermi se non riesci nemmeno a tradurre il termine correttamente.
falla -> leak (pure nel dizionario che hai citato prima).
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.