|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Bannato
Iscritto dal: Sep 2007
Messaggi: 22
|
[C++] 2 esercizi di fondamenti Array di stringhe e battaglia navale
Salve a tutti sono un novellino,
devo fare un esercizio per fondamenti di informatica IN C++, anzi gli esercizi sono 2. Testo: -si tratta un tradimento tra 2 persone il marito deve controllare una lista di email(1 centinaio)- Scrivere un programma che dato in imput l'elenco delle mail ,(che per semplicità si puo' implementare come array di stringhe) conti quante sono le mail in cui e' contenuta una tra le seguenti parole: amore tesoro ecc. dunque Il primo esercizio richiede un array di stringhe(array di array di caratteri, quindi una matrice SUPPONGO) simula di ricevere una lista di 100 email quindi la dim colonna si sa ed e' statica, ma la lunghezza di ogni mail e' indefinita. Gia' qui credo di essere in alto mare, credo di dover creare una matrice il cui indice di riga sara' il numero della mail e su ogni colonna e' contenuto un singolo carattere, dunque ad es. email n°1: lista[0][0-------x] dove x e' la dim massima. dovrei dichiarare per ogni riga un'array dinamico di char* in modo tale da incrementare la dimensione man mano che finisce? preciso che l'email per comodita' venga inserita' da input senza scansioni su file ecc. _______________________________________ l'altro esercizio e' la battaglia navale. si gioca con 2 giocatori. dunque si hanno 4 matrici 2 per ognuno.(A1,B1,A2,B2) la Matrice di tipo A sarebbe la griglia dove sono posizionate le navi, all'inizio del gioco ogni giocatore posiziona le navi sulla griglia in verticale o in orizzontale, il problema e' che ci sono navi diversa dimensione ad. es da 4 caselle da 3 da 2 e da 1 La funzione distribuisci navi sulla griglia si da' scontato che sia gia' implementata. Ora inizia la seconda parte, a turno ogni giocatore da le cordinate x,y per sparare sulle navi avversarie e si deve rispondere colpito se la nave avversaria e' stata colpita ma ci sono ancora altre caselle a galla, COLPITA E AFFONDATA quando non sono rimasti pezzi a galla(dunque ho l'ultimo pezzo) e ACQUA quando non prendo nulla, dunque questa griglia(B) di ogni giocatore dovra' contenere i tentativi andati a buon fine e non. Supponevo di creare 4 matrici di interi. Sulle matrici di tipo A(dove ci sono le navi) quando vengono distribuite le navi scrivo in ogni casella il numero di pezzi che ha una nave ad es nella matrice c'e' un pezzo: [0 0 0 4 4 4 4 0 0 0] se prendo si e' in presenza di una nave verifico i numero se e' 4 allora dovro' controllare per un massimo di 4 posizioni a nord sud est ovest, ma rischiero' di trovare altre navi so gia' che è sbagliata come idea, ma continuo ugualmente ad esporla, una volta che colpisco questa nave da 4 decremento il numero su ogni casella quando tale numero sara 1 vuol dire che e' l'ultimo pezzo e sara' colpita e affondata. Potrei anche fare solamente una matrice di 0 e 1 e -1 dove le 1 sono le navi e man man diventano -1 e controllo semplicemente se accanto alle cordinate ci sono -1 o 1 Ma su questo sono molto confuso, se le navi fossero state di dimensione 1 sarebbe stata una cavolata, ma se ad es. supponiamo di colpire una nave al centro qual'e' la condizione che dovrei applicare per vedere se la nave e' finita? dovrei fare una serie di funzioni verifica nave 4 nave 3 nave 2 ecc? Scusate se sono stato niubbo ma sono all'inizio. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
Edit: sorry, ho cannato xD
Ultima modifica di ndakota : 20-07-2010 alle 19:08. |
|
|
|
|
|
#3 | ||
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
Quote:
Codice:
string Messages[100]; Quote:
anzi, in questo sarebbe stato piu semplice leggere 100 files piuttosto che un unico stream di input, perché con lo stream unico devi inventarti una convenzione per separare le emails. a tal proposito ti do un consiglio: scegli un carattere di separazione delle emails che assumi non contenuto in alcuna mail, per esempio la tabulazione verticale (codice ASCII 11, cioé 0x0B), e per leggere ciascuna mail usa semplicemente la funzione globale getline specificando quel carattere come separatore. in questo modo la lettura delle email si riduce ad un ciclo for banale con una sola istruzione dentro. |
||
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
mi correggo, probabilmente per la realizzazione di quel programma non é necessario istanziare un bel niente, semplicemente leggi le email una ad una dallo standard input e le processi man mano che le leggi.
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
ecco, per esempio, il seguente programma C++ legge un numero infinito di emails e segnala quelle incriminate: per ogni mail che legge stampa sullo standard output uno 0 se la mail non é incriminata e stampa un 1 se lo é.
Codice:
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
class EFound {};
int main() {
cin.exceptions(ios::eofbit | ios::badbit | ios::failbit);
try {
const int cWords = 2;
const string aWords[cWords] = {
"amore",
"tesoro",
// ...
};
while (true) {
string strEmail;
getline(cin, strEmail, '\x0B');
try {
for_each(aWords, aWords + cWords, [strEmail] (const string &rstrWord) {
if (search(strEmail.begin(), strEmail.end(), rstrWord.begin(), rstrWord.end()) != strEmail.end()) {
cout << true << endl;
throw EFound();
}
});
} catch (const EFound&) {
continue;
}
cout << false << endl;
}
} catch (const ios::failure&) {
return 0;
}
}
__________________
3D Volley Demo (Facebook) | Reversi (Facebook) | Blockout (Facebook) | Puzzle15 (Facebook) Ultima modifica di fero86 : 20-07-2010 alle 22:06. Motivo: naming convention nel codice |
|
|
|
|
|
#6 |
|
Bannato
Iscritto dal: Sep 2007
Messaggi: 22
|
lo sapevo che string era molto piu' semplice da utilizzare e avrei risolto tutto, ma STRING NON SI PUo' usare, e' un corso di fondamenti di informatica, la classe string non la facciamo nel corso
dovresti utilizzatre quanto di piu' basilare sai ..try catch e trhow ecc sono esclusi(nn so nemmeno cosa siano) forse l'unica soluz. e' utilizzare char* dinamico ma non ho la limitazione della dimensione? |
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Se è C++ per lo meno la libreria standard uno deve poterla usare, altrimenti è il caso di parlare di C. Se non studiate la classe string che cavolo fate in quel corso di C++? |
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Forse i suoi professori pensano che il C++ sia un "C con le classi" e basta...
@webeye: se non conosci a priori la lunghezza massima delle singole stringhe, vedo un char* come unica soluzione "corretta".
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#9 |
|
Bannato
Iscritto dal: Sep 2007
Messaggi: 22
|
allora, avendo seguito un corso che spiegava dall' hellowrld alle matrici e for con indici di ogni genere, facciamo esercizi come quelli scritti sopra ma limitandoci ad usare strighe puntatori, interi ecc. usiamo strtok strcmp ecc. perche' ce le hanno spiegato, ma all'esame si suppone che gli esercizi che ci vengono dati si possano risolvere con la roba che abbiamo fatto durante il corso, non ci viene dunque spiegata la sintassi da usare per quella determinata classe, non sapevo della sua esistenza fino a quando non ho visto quel problema...
@l'altro intelligente che ha risposto, al mio corso spiegano questo, poi le altre cose saranno di competenza dei corsi successivi, non posso fare le liste o usare vector ad un esame di fondamenti senno' ti cacciano a calci in c*lo |
|
|
|
|
|
#10 |
|
Bannato
Iscritto dal: Sep 2007
Messaggi: 22
|
avete soluzioni per il secondo?
|
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Quote:
Bada bene che qui l'aiuto non ti è dovuto: anzi, in questo forum è quasi vietato, per cui vedi di abbassare i toni, alla prossima sarà un moderatore a decidere cosa fare.
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
|
imho è un corso di c
comunque più che il numero di pezzi della nave ti conviene assegnare un id a ogni nave e metterci quello nella matrice così che se due navi sono "in fila", abbiano id diverso tipo 1 1 1 1 2 2 2 0 0 0... in questo modo fare il controllo è easy |
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Voi al corso state studiando il C. |
|
|
|
|
|
|
#14 |
|
Bannato
Iscritto dal: Sep 2007
Messaggi: 22
|
è inutile che ci scaldiamo, se facciamo new e delete anziche' malloc free credo sia c++, il libro che seguiamo e' Deitel&deitel
comunque per citare: Forse i suoi professori pensano che il C++ sia un "C con le classi" e basta. ti ho risposto cosi' perche' non sai nemmeno quello che dici, se vai all'universita' saprai che ogni corso ha un programma e conosco anche il corso di ingegneria e al primo esame di informatica non si usa quella sintassi, quindi non ti precipitare con commenti "facili" potrebbero scambiarti per stolto |
|
|
|
|
|
#15 | |
|
Bannato
Iscritto dal: Sep 2007
Messaggi: 22
|
Quote:
|
|
|
|
|
|
|
#16 | |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Quote:
Io so benissimo di cosa parlo, sei tu che evidentemente non cogli il senso del discorso: anzi, fai pure il "simpatico". Io intendevo molto più semplicemente dire che se il programma vi impone di scrivere codice C++, allora dovete poter utilizzare gli strumenti che il C++ vi offre: se invece non usate NIENTE di ciò che avete a disposizione... mi dispiace, ma non è C++, quindi o i tuoi professori non hanno bene in mente la differenza tra i due linguaggi o c'è qualcosa che non va. Sei ufficialmente nella mia ignore list, e ti segnalerò anche ad un moderatore: magari per questa volta sei pure fortunato e te la cavi, ma con questa testa non andrai molto avanti nelle tue cose. ciao
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
webeye: cerca di avere più rispetto per le persone che, se sono qui, sono qui per cercare di aiutarti. Quindi ritieni ammonito.
Seconda cosa: non si svolgono esercizi per intero, quindi se vuoi una soluzione, posta prima un tuo tentativo di soluzione e ti faremo riflettere su questo. |
|
|
|
|
|
#18 |
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
a caval donato non si guarda in bocca.
|
|
|
|
|
|
#19 | |
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
Quote:
inoltre, forti della nostra esperienza, giunti a questo punto possiamo tranquillamente dire che la stragrande maggioranza dei professori non é assolutamente al passo con le tecnologie (non c'entra niente col C++ ma giusto ieri vedevo per caso la pagina di un corso di Informatica Grafica dove si tratta ancora OpenGL 1.5!!!
__________________
3D Volley Demo (Facebook) | Reversi (Facebook) | Blockout (Facebook) | Puzzle15 (Facebook) Ultima modifica di fero86 : 21-07-2010 alle 13:28. |
|
|
|
|
|
|
#20 | |
|
Bannato
Iscritto dal: Sep 2007
Messaggi: 22
|
Quote:
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 02:26.




















