|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
[C] Scambio di sottointervalli
Ciao.
Devo scrivere un programma che dato un vettore t[0,...,n-1] di interi di dimensione n ed una posizione 0<=m<=n-1, devo considerarlo diviso in due sotto intervalli t[0,...,m-1][m,...,n-1]. Mi deve restituire il vettore t con questi due sottointervalli intercambiati. Cioè il vettore t in output deve essere t[m,...,n|0,...m-1]. Esempio Input : t: =[1,2,3,4,5,6,7,8] e m:= 4 Output deve essere =[5,6,7,8,1,2,3,4] Il codice l'ho scritto però ho notato che non stampa la parte "dopo lo scambio": Codice:
#include <stdio.h>
#include <stdlib.h>
int *interscambio(int [], int, int);
int main(void){
int i,n,m, *risultato;
printf("Inserisci la lunghezza del vettore: ");
scanf("%d", &n);
int *t=(int*) malloc(sizeof(int)*n);
for(i=0; i<n; ++i)
scanf("%d", &t[i]);
printf("Inserisci il punto in cui interscambiare: ");
scanf("%d", &m);
printf("Prima dello scambio: \n");
for(i=0; i<n; ++i)
printf("%d", t[i]);
risultato=interscambio(t,n,m);
printf("\nDopo lo scambio: \n%s");
for(i=0; i<n; ++i)
printf("%d", risultato[i]);
return 0;
}
int *interscambio(int t[], int n, int m){
int *aux=(int *) malloc(sizeof(int)*n);
int i,k=0;
for(i=m; i<n; ++i)
aux[k++]=t[i];
for(i=0; i<m; ++i)
aux[k++]=t[i];
return aux;
}
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Ciao, a parte il fatto che il tuo programma non è C ma C++, io l'ho provato e ti posso dire che stampa i dati dopo lo scambio.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
Come in C++??
![]() Veramente è in ANSI C. E poi lo compilo tramite gcc e mi riesce a stampare fino a "Prima dello scambio". |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Codice:
scanf("%d", &n);
int *t=(int*) malloc(sizeof(int)*n);
Io l'ho provato con gcc su linux. Ho dovuto chiamarlo prova.cpp perché altrimenti se lo chiami prova.c il compilatore ti dice: prova.c: In function `main': prova.c:13: parse error before `int' prova.c:16: `t' undeclared (first use in this function) prova.c:16: (Each undeclared identifier is reported only once prova.c:16: for each function it appears in.)
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
Non mi dire che è questo il problema
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
Ho provato a togliere la dichiarazione della variabile dopo lo scanf, ma non cambia niente.
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Fammi sapere ... a me funziona (in linux).
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
|
Alcune estensioni del C (supportate da GCC) supportano la dichiarazione dopo la prima istruzione nel blocco corrente.
Ciao
__________________
GPU Compiler Engineer |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
Il compilatore in ogni caso non mi dava errori né prima né adesso che ho cambiato la dichiarazione delle variabili. Come estensione uso sempre .c. E uso Codeblocks come IDE (il quale usa gcc per compilare) sotto Windows.
|
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Io ho provato il sorgente con il gcc 2.91.66 (molto vecchio Personalmente uso (e consiglio di usare) sempre i parametri -ansi e -pedantic del gcc, in modo da assicurarsi che operi secondo lo standard. Ciao.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) Ultima modifica di andbin : 16-11-2005 alle 21:30. |
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Villanova di Guidonia (RM)
Messaggi: 1079
|
Ho caoito grazie. Più che altro mi interessava che il programma funzionasse.
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:45.




















