|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Nov 2003
Città: ROMA
Messaggi: 1245
|
Ordinare un array tramite puntatori in C
ragazzi io sono arrivato a qst punto..ordina qlk numero poi a volte da tutti 0 non riesco a capire dove sbaglio mi sapete aiutare?
---------------------------------------------------------------------------------- #include <stdio.h> #include <conio.h> #include <stdlib.h> void main() { int vet[100],*pv,*ps,i,n,c,max,temp; pv=&vet[0]; ps=&vet[1]; clrscr(); printf("Inserire il numero di elementi da generare: "); scanf("%d",&n); max=n; randomize(); for(i=0;i<=n-1;i++) vet[i]=random(100); printf("\n\nPremere un tasto per visualizzare i numeri generati\n\n"); getch(); for(i=0;i<=n-1;i++) printf("%d ",vet[i]); printf("\n\nPremere invio per visualizzare i numeri ordinati\n\n"); for(c=0;c<=n-1;c++,pv++) for(i=0;i<=max-1;i++,ps++,max--) if(*pv>*ps) { temp=*pv; *pv=*ps; *ps=temp; } for(i=0;i<=n-1;i++) printf("%d ",vet[i]); } ----------------------------------------------------------------------------------- grazie a tutti ![]()
__________________
CPU: Ryzen 3900X - MB: Asus Crosshair VIII Hero - 4X8GB 32GB DDR4 3600mhz Corsair Vengeance RGB - VGA: Asus RTX 2080ti |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Aug 2003
Città: Rimini
Messaggi: 422
|
#include <stdio.h>
#include <conio.h> #include <stdlib.h> #include <time.h> void main() { int vet[300],*pv,*ps,*temp3,i,n,c,max,temp; pv=&vet[0]; ps=&vet[1]; // clrscr(); printf("Inserire il numero di elementi da generare: "); scanf("%d",&n); max=n; srand( (unsigned) time ( NULL ) ); for(i=0;i<=n-1;i++) vet[i]=rand(); printf("\n\nPremere un tasto per visualizzare i numeri generati\n\n"); getch(); for(i=0;i<=n-1;i++) printf("%d ",vet[i]); printf("\n\nPremere invio per visualizzare i numeri ordinati\n\n"); temp=0; temp3=pv; for(c=0;c<=n-1;c++){ pv=temp3; temp3++; ps=pv+1; for(i=0;i<=(max-2-c);i++,ps++){ if(*pv>*ps) { temp=*pv; *pv=*ps; *ps=temp; } } } for(i=0;i<=n-1;i++) printf("%d ",vet[i]); } |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Nov 2003
Città: ROMA
Messaggi: 1245
|
up mi serve per domani vi prego!!
__________________
CPU: Ryzen 3900X - MB: Asus Crosshair VIII Hero - 4X8GB 32GB DDR4 3600mhz Corsair Vengeance RGB - VGA: Asus RTX 2080ti |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Aug 2003
Città: Rimini
Messaggi: 422
|
Avevi fatto 1 po do confusione con i puntatori.
Scusa una cosa. Come facevano as andarti le istruzioni randomize, random, clrscr, che se non ricordo male non sono di Pascal? |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Re: Ordinare un array tramite puntatori in C
Codice:
#include <stdio.h> #include <conio.h> #include <stdlib.h> void main() { int vet[100],*pv,*ps,i,n,c,max,temp; clrscr(); printf("Inserire il numero di elementi da generare: "); scanf("%d",&n); max=n; randomize(); for(i=0; i<n; i++) vet[i]=random(100); printf("\n\nPremere un tasto per visualizzare i numeri generati\n\n"); getch(); for(i=0; i<n; i++) printf("%d ",vet[i]); printf("\n\nPremere invio per visualizzare i numeri ordinati\n\n"); pv = &vet[1]; for(c=1; c<n; c++,pv++) { ps = &vet[0]; for(i=0; i<n-1; i++,ps++) if(*pv<*ps) { temp=*pv; *pv=*ps; *ps=temp; } } for(i=0; i<n; i++) printf("%d ",vet[i]); } ![]() |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Nov 2003
Città: ROMA
Messaggi: 1245
|
cm no sono tutte funzioni della libreria conio.h
__________________
CPU: Ryzen 3900X - MB: Asus Crosshair VIII Hero - 4X8GB 32GB DDR4 3600mhz Corsair Vengeance RGB - VGA: Asus RTX 2080ti |
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Nov 2003
Città: ROMA
Messaggi: 1245
|
Re: Re: Ordinare un array tramite puntatori in C
Quote:
ma è questo quello giusto?
__________________
CPU: Ryzen 3900X - MB: Asus Crosshair VIII Hero - 4X8GB 32GB DDR4 3600mhz Corsair Vengeance RGB - VGA: Asus RTX 2080ti |
|
![]() |
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
![]() |
|
![]() |
![]() |
![]() |
#9 | |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Re: Re: Re: Ordinare un array tramite puntatori in C
Quote:
|
|
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Nov 2003
Città: ROMA
Messaggi: 1245
|
cionci mi spiegheresti cosa ho sbajato? quel caxxo de prof nn è bono a spiuega e tutte le volte me devo imparà da solo
__________________
CPU: Ryzen 3900X - MB: Asus Crosshair VIII Hero - 4X8GB 32GB DDR4 3600mhz Corsair Vengeance RGB - VGA: Asus RTX 2080ti |
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Principalmente il fatto che dovevi reinizializzare il puntatore ps ogni volta che terminavi il ciclo + interno...
Poi diminuivi quel max...come mai ? |
![]() |
![]() |
![]() |
#12 | |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
|
|
![]() |
![]() |
![]() |
#13 |
Senior Member
Iscritto dal: Nov 2003
Città: ROMA
Messaggi: 1245
|
max lo decrementavo xche il numero di confronti diminuiva ogni volta che pv aumentava...cmq nn ho capito bene quella cosa che devo reinizializzare il ps..ma nn funziona tipo un indice? oppure quello qnd i ridiventa 0 lui va fuori dall array?
__________________
CPU: Ryzen 3900X - MB: Asus Crosshair VIII Hero - 4X8GB 32GB DDR4 3600mhz Corsair Vengeance RGB - VGA: Asus RTX 2080ti |
![]() |
![]() |
![]() |
#14 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Hai ragione...il numero dei confronti diminuisce...non ci avevo pensato...
Dopo che è finito il ciclo interno ps punta a vet[n-2]...quando si rientra nel ciclo interno viene incrementato e punta a vet[n-1]...poi a vet[n] ed a questo punto sei fuori dal vettore... |
![]() |
![]() |
![]() |
#15 | |
Senior Member
Iscritto dal: Nov 2003
Città: ROMA
Messaggi: 1245
|
Quote:
e si nn ci avevo pensato..che casino però sti puntatori!!!
__________________
CPU: Ryzen 3900X - MB: Asus Crosshair VIII Hero - 4X8GB 32GB DDR4 3600mhz Corsair Vengeance RGB - VGA: Asus RTX 2080ti |
|
![]() |
![]() |
![]() |
#16 |
Senior Member
Iscritto dal: Nov 2003
Città: ROMA
Messaggi: 1245
|
cionci ma un link a un manuale per imparare la parte dedicata alle connessioni internet con il c...e all utilizzo della rete? ce l hai pls?
__________________
CPU: Ryzen 3900X - MB: Asus Crosshair VIII Hero - 4X8GB 32GB DDR4 3600mhz Corsair Vengeance RGB - VGA: Asus RTX 2080ti |
![]() |
![]() |
![]() |
#17 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Cerca su google socket tutorial... Mi sembra di aver postato qualche link anche qui...cerca socket con il motore di ricerca...
Comunque l'unico modo per diminuire il numero di cicli è questo: Codice:
pv = &vet[1]; for(c=1; c<n; c++,pv++) { ps = &vet[0]; for(i=0; i<c; i++,ps++) if(*pv>*ps) { temp=*pv; *pv=*ps; *ps=temp; } } |
![]() |
![]() |
![]() |
#18 |
Senior Member
Iscritto dal: Aug 2003
Città: Rimini
Messaggi: 422
|
Il mio funziona.
Problemi: 1- Max non va decrementato nel ciclo interno, ma in quello esterno. 2- I puntatori alla fine di una scansione devono essere riinizzializzati (a differenza degli array), perche rimanevano in coda, e quindi al secondo giro andavi al leggere in posizioni dell'array spagliate. Il codice e postato in testa.(Prima risposta) |
![]() |
![]() |
![]() |
#19 |
Senior Member
Iscritto dal: Nov 2003
Città: ROMA
Messaggi: 1245
|
grazie Ragazzi siete i MEJOOOOOOOO!!! spero di diventare bravo cm a VOI
__________________
CPU: Ryzen 3900X - MB: Asus Crosshair VIII Hero - 4X8GB 32GB DDR4 3600mhz Corsair Vengeance RGB - VGA: Asus RTX 2080ti |
![]() |
![]() |
![]() |
#20 |
Senior Member
Iscritto dal: Aug 2003
Città: Rimini
Messaggi: 422
|
Mi ha fatto piacere aiutarti.
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:51.