|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Dec 2005
Messaggi: 344
|
[c++]Errore che non mi so spiegare
Salve a tutti premetto che sono un niubbo di c++ vengo da java e devo fare un progettino in c++.
in pratica devo ordinare un'array di strighe con il metodo merge sort. posto il codice: Codice:
#include "MergeSort.h"
#include <iostream>
using namespace std;
vector <string> MergeSort::ordina(vector <string> s, int i){
vector <string>::iterator ct;
ct=s.begin();
string appoggio [s.size()];
int h=0;
while(ct!=s.end()){
appoggio[h]=*ct;
h++;
ct++;
}
int left=0;
int right=(int)(s.size());
mergesort(appoggio,left,right);
ct=s.begin();
return s;
};
void MergeSort::mergesort(string s [], int left, int right){
if (left<right) {
int center = (left+right)/2;
mergesort(s, left, center);
mergesort(s, center+1, right);
merge(s, left, center, right);
}
//cout << "merda" << endl;
};
void MergeSort::merge(string s[], int left, int center, int right) {
vector <string>b;
int x=left;
int j=center+1;
int z=0;
while((x<=center)&&(j<=right)){
if(s[x].compare(s[j])<0){
//cout << b[z] << center << endl;
b.push_back(s[x]);
x++;
z++;
}
else {
//b[z]=s[j];
b.push_back(s[j]);
j++;
z++;
}
}//while 1
while(x<=center){
//b[z]=s[x];
b.push_back(s[x]);
x++;
z++;
}//while 2
while(j<=right){
//b[z]=s[j];
b.push_back(s[j]);
j++;
z++;
}//while 3
z=left;
vector <string> :: iterator it;
it=b.begin();
while (z<=right){
s[z]=*it;
//cout << s[z] << right <<endl;
z++;
it++;
}
};
il programma crasha dopo aver comunque ordinato ma non so perchè crasha... Siete la mia ultima spiaggia aiutooooooo!!!
__________________
Desktop: E4400,Gigabyte p35 Ds3, EN8800gt 512mb,2*1gb DDR2 Kingston, LC Power 550W Silent, Maxtor 80gb SATA. NoteBook: Inspiron 6400 cpu t5500, 80 Gb SATA 5400rpm,x1400 256mb, 1gb ddr2, display 1440*900 TrueLife. Ultima modifica di Velkan : 15-11-2008 alle 01:29. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Se il codice non lo posti tra i tag CODE ben formattato sarà difficile che qualcuno abbia voglia di mettersi a gurdarlo
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Dec 2005
Messaggi: 344
|
ti ringrazio per il consiglio ma on sono pratico di "postaggi" di codice XD
e poi credo che uno che di c++ ne capisce al primo colpo d'occhio se ne accorgerà qui ci dev'essere qualche bestialità abnorme secondo me...!
__________________
Desktop: E4400,Gigabyte p35 Ds3, EN8800gt 512mb,2*1gb DDR2 Kingston, LC Power 550W Silent, Maxtor 80gb SATA. NoteBook: Inspiron 6400 cpu t5500, 80 Gb SATA 5400rpm,x1400 256mb, 1gb ddr2, display 1440*900 TrueLife. |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Mar 2006
Città: Bergamo
Messaggi: 2499
|
edita il primo post e mettilo nel tag code come ha detto banryu79, così non si capisce dove inizia una funzione e dove ne inizia un altra...
__________________
ho concluso con: kvegeta, doctordb, Leland Gaunt.
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Dec 2005
Messaggi: 344
|
modificato spero vada bene ora...scusate ma è la prima volta che posto codice su un forum!
__________________
Desktop: E4400,Gigabyte p35 Ds3, EN8800gt 512mb,2*1gb DDR2 Kingston, LC Power 550W Silent, Maxtor 80gb SATA. NoteBook: Inspiron 6400 cpu t5500, 80 Gb SATA 5400rpm,x1400 256mb, 1gb ddr2, display 1440*900 TrueLife. |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Feb 2006
Messaggi: 1304
|
Ma quindi, quand'è che crasha esattamente? E quando crasha cosa dice?
Prova a mettere qualche breakpoint in giro e vedi a che punto dell'esecuzione si blocca... se si blocca dopo che hai eseguito ::mergesort() credo che l'errore sia nel resto del programma, dato che dopo c'è solo return s;
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Dec 2005
Messaggi: 344
|
allora lo vedete quel cout commentato che io ho elegantemente chiamato merda nel metodo mergesort? (scusate scleri da insuccesso
Quello me lo stampa correttamente, cioè per un'array di dimensione 3 lo stampa 5 volte, la cosa che succede è che crasha immediatamente dopo perchè se nel metodo ordina metto una cout subito dopo la chiamata di mergesort lui non la stampa! L'errore che mi da non è nessuno mi compare la finestra di windows con il famoso inviare? non inviare? e mi si impalla tutto....io ho pensato ad un ciclo infinito ma....nn ne vedo!
__________________
Desktop: E4400,Gigabyte p35 Ds3, EN8800gt 512mb,2*1gb DDR2 Kingston, LC Power 550W Silent, Maxtor 80gb SATA. NoteBook: Inspiron 6400 cpu t5500, 80 Gb SATA 5400rpm,x1400 256mb, 1gb ddr2, display 1440*900 TrueLife. |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Feb 2006
Messaggi: 1304
|
Hmm con che lo stai scrivendo?
Tipo, su VC++ ci sono i breakpoints da mettere a mano, e se c'è un crash ti da la riga esatta dove è accaduto, ed i valori delle variabili in gioco. Debuggare a forza di cout non è proprio validissimo |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Probabile puntatore andato a donne di facili costumi...
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Dec 2005
Messaggi: 344
|
sto sviluppando con code::blocks eh sti puntatori infatti mi sa che rompono un po purtroppo vengo da java e so abituato ad eccezioni e robe del genere che ti rendono la vita piu facile...ho uppato tutto il progetto in code blocks se qualcuno vuole vedere con i suoi occhi...
ComplementidiPOO.rar
__________________
Desktop: E4400,Gigabyte p35 Ds3, EN8800gt 512mb,2*1gb DDR2 Kingston, LC Power 550W Silent, Maxtor 80gb SATA. NoteBook: Inspiron 6400 cpu t5500, 80 Gb SATA 5400rpm,x1400 256mb, 1gb ddr2, display 1440*900 TrueLife. |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Feb 2006
Città: Provincia di BA!
Messaggi: 439
|
ho provato ad eseguirlo:
la prima volta è crashato all'istante, poi ho tolto l'ultimo "invio" dal file di testo che ho creato come esempio e l'ha eseguito senza problemi...che non riesca a gestire la stringa vuota??
__________________
~ Notebook: Dell Studio 1537 - Intel Core 2 Duo T6400 @ 2,00 GHz ~ ~ Cel: Nokia 5230 ~ Console: Nintendo Wii "La menopausa è quando i cacciatori ubriachi sparano alla cicogna che porta i bebè..."
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Dec 2005
Messaggi: 344
|
provo subito, anche se gli altri metodi di ordinamento non mi danno questo errore
__________________
Desktop: E4400,Gigabyte p35 Ds3, EN8800gt 512mb,2*1gb DDR2 Kingston, LC Power 550W Silent, Maxtor 80gb SATA. NoteBook: Inspiron 6400 cpu t5500, 80 Gb SATA 5400rpm,x1400 256mb, 1gb ddr2, display 1440*900 TrueLife. |
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Dec 2005
Messaggi: 344
|
ho aggiunto qualche stringa in piu e va...tutto questo non ha senso!!!
__________________
Desktop: E4400,Gigabyte p35 Ds3, EN8800gt 512mb,2*1gb DDR2 Kingston, LC Power 550W Silent, Maxtor 80gb SATA. NoteBook: Inspiron 6400 cpu t5500, 80 Gb SATA 5400rpm,x1400 256mb, 1gb ddr2, display 1440*900 TrueLife. |
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Feb 2006
Città: Provincia di BA!
Messaggi: 439
|
un momento: c'è un comportamento strano!! ho provato ad eseguirlo di nuovo ma mi va di nuovo in crash..
cmq io ho eseguito il main, quindi ottengo i risultati con tutti gli ordinamenti (giusto??) forse c'è qualcosa nella gestione del file? mi dà un errore di tipo "segmentation fault" facendoil debug
__________________
~ Notebook: Dell Studio 1537 - Intel Core 2 Duo T6400 @ 2,00 GHz ~ ~ Cel: Nokia 5230 ~ Console: Nintendo Wii "La menopausa è quando i cacciatori ubriachi sparano alla cicogna che porta i bebè..."
|
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Dec 2005
Messaggi: 344
|
no allora nel main sono commentati gli utilizzi degli altri algoritmi e si c'è qualcosa che non va perchè in effetti se provo a fare una stampa del vettore ordinato mi crasha, a questo punto devo aver fatto davvero casini coi puntatori perchè è come se in java desse una nullpointer exception per intenderci
__________________
Desktop: E4400,Gigabyte p35 Ds3, EN8800gt 512mb,2*1gb DDR2 Kingston, LC Power 550W Silent, Maxtor 80gb SATA. NoteBook: Inspiron 6400 cpu t5500, 80 Gb SATA 5400rpm,x1400 256mb, 1gb ddr2, display 1440*900 TrueLife. |
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Feb 2006
Città: Provincia di BA!
Messaggi: 439
|
sì ho visto adesso i commenti del main...cmq è molto strano il comportamento perchè crasha quasi a caso.. a volte sì a volte no..dipende da quello che hai fatto prima, o forse da come si è liberata la memoria...
__________________
~ Notebook: Dell Studio 1537 - Intel Core 2 Duo T6400 @ 2,00 GHz ~ ~ Cel: Nokia 5230 ~ Console: Nintendo Wii "La menopausa è quando i cacciatori ubriachi sparano alla cicogna che porta i bebè..."
|
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: Dec 2005
Messaggi: 344
|
mamma che casino guarda è che purtroppo devo usare o sto merge sort o quick sort o heap sort...e fra tutti il merge mi sembrava il piu abordabile ma mi sta facendo impazzire
__________________
Desktop: E4400,Gigabyte p35 Ds3, EN8800gt 512mb,2*1gb DDR2 Kingston, LC Power 550W Silent, Maxtor 80gb SATA. NoteBook: Inspiron 6400 cpu t5500, 80 Gb SATA 5400rpm,x1400 256mb, 1gb ddr2, display 1440*900 TrueLife. |
|
|
|
|
|
#18 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Sicuramente uno dei problemi è che se anche funzionasse non ordinerebbe niente, a mergesort passi appoggio, non s.
|
|
|
|
|
|
#19 |
|
Senior Member
Iscritto dal: Dec 2005
Messaggi: 344
|
si questo lo so è stata una delle tante prove che ho fatto per capirci qualcosa...cioè gia mi bastava non farlo crashare poi ci avrei lavorato su XD
__________________
Desktop: E4400,Gigabyte p35 Ds3, EN8800gt 512mb,2*1gb DDR2 Kingston, LC Power 550W Silent, Maxtor 80gb SATA. NoteBook: Inspiron 6400 cpu t5500, 80 Gb SATA 5400rpm,x1400 256mb, 1gb ddr2, display 1440*900 TrueLife. |
|
|
|
|
|
#20 |
|
Senior Member
Iscritto dal: Dec 2005
Messaggi: 344
|
credo sia il metodo compare che lo fa crashare...dite è possibile?
__________________
Desktop: E4400,Gigabyte p35 Ds3, EN8800gt 512mb,2*1gb DDR2 Kingston, LC Power 550W Silent, Maxtor 80gb SATA. NoteBook: Inspiron 6400 cpu t5500, 80 Gb SATA 5400rpm,x1400 256mb, 1gb ddr2, display 1440*900 TrueLife. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:06.











ho concluso con: kvegeta, doctordb, Leland Gaunt.









