Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Ecovacs DEEBOT T90 PRO OMNI: ora il rullo di lavaggio è ampio
Ecovacs DEEBOT T90 PRO OMNI: ora il rullo di lavaggio è ampio
DEEBOT T90 PRO OMNI abbina un sistema di aspirazione basato su tecnologia BLAST ad un rullo di lavaggio dei pavimenti dalla larghezza elevata, capace di trattare al meglio le superfici di casa minimizzando i tempi di lavoro. Un robot completo che riesce anche ad essere sottile e garantire automazione ed efficienza nelle operazioni di pulizia di casa
Recensione Samsung Galaxy S26 Ultra: finalmente qualcosa di nuovo
Recensione Samsung Galaxy S26 Ultra: finalmente qualcosa di nuovo
Per diversi giorni il Galaxy S26 Ultra di Samsung è stato il nostro compagno di vita. Oltre alle conferme del colosso coreano come la qualità del display e una suite AI senza rivali, arriva il Privacy Display, un unicum nel mondo smartphone. Ci sono ancora alcuni gap che non sono riusciti a colmare lato batteria e fotocamera, seppur con alcuni miglioramenti.
Diablo II Resurrected: il nuovo DLC Reign of the Warlock
Diablo II Resurrected: il nuovo DLC Reign of the Warlock
Abbiamo provato per voi il nuovo DLC lanciato a sorpresa da Blizzard per Diablo II: Resurrected e quella che segue è una disamina dei nuovi contenuti che abbiamo avuto modo di sperimentare nel corso delle nostre sessioni di gioco, con particolare riguardo per la nuova classe dello Stregone
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 09-04-2007, 18:04   #1
Sh4k3!
Member
 
L'Avatar di Sh4k3!
 
Iscritto dal: Jan 2006
Messaggi: 91
[C++] Piccolo aiuto

Ciau a tutti e auguri

Il prof. di informatica per le vacanze pasquali ci ha dato quest'esercizio:

Dato un vettore di N stringhe, costruire una funzione che dopo aver inserito N stringhe permetta di ottenere una stringa costituita da tutti i caratteri numerici e alfabetici minuscoli di tutte le stringhe.

Ho scritto il programma usando Borland C++ v3.1 senza grossi problemi, eccolo:

Codice:
#include <conio.h>
#include <iostream.h>
#include <stdio.h>
#include <string.h>
#define n_max_car 20
#define n_max 20

void ins (int N, char vet_stringhe[n_max][n_max_car]);
void costr_strin (char vet_stringhe[n_max][n_max_car], int N, char stringa[n_max_car]);
void visua (char stringa[n_max_car]);

void main ()
 {
  char vet_stringhe_1[n_max][n_max_car], stringa_1[n_max_car];
  int N_1;
  ins (N_1,vet_stringhe_1);
  costr_strin(vet_stringhe_1,N_1,stringa_1);
  visua(stringa_1);
 }

void ins (int N, char vet_stringhe[n_max][n_max_car]);
{
 clrscr();
 int I;
 do
  {
	cout<<"Inserisci il numero massimo di stringhe ";
	cin>>N;
  }
 while (!((N>=2)&&(N<=n_max)));
 for (I=0;I<N;I++)
  {
	cout<<"Inserisci la "<<I+1<<"^ stringa del vettore ";
	gets(vet_stringhe[i]);
  }
}

void costr_strin (char vet_stringhe[n_max][n_max_car], int N, char stringa[n_max_car]);
{
 int I,J,K;
 K=0;
 for(I=0;I<N;I++)
  {
	for(J=0;J<strlen(vet_stringhe[i]);J++)
	 {
	  if ( ((vet_stringhe[i][J]>='1')&&(vet_stringhe[i][J]<='9')) ||
	  ((vet_stringhe[i][J]>='a')&&(vet_stringhe[i][J]<='z')) )
		{
		 stringa[K]=vet_stringhe[i][J];
		 K++;
		}
	 }
  }
 stringa[K]='\0';
}

void visua (char stringa[n_max_car]);
{
 cout<<"La stringa formata dai caratteri numerici e dai caratteri minuscoli del vettore e' "<<stringa<<endl;
 while (!kbhit());
}
come avrete notato è scritto proprio "terra terra" , però errori di sintassi non ce ne sono, l'unico problema è che quando lo mando in esecuzione si blocca sulla funzione
Codice:
if ( ((vet_stringhe[i][J]>='1')&&(vet_stringhe[i][J]<='9')) || ((vet_stringhe[i][J]>='a')&&(vet_stringhe[i][J]<='z')) )
e l'unica soluzione è quella di arrestare il programma.

Aiutatemi a capire dov'è il problema

Grazie e ancora auguri
Sh4k3! è offline   Rispondi citando il messaggio o parte di esso
Old 09-04-2007, 20:02   #2
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
strano.. come fa a non darti errore il punto e virgola nella definizione della funzione? e poi in certe funzioni hai dichiarato I ma usavi i.. insomma a me dava un sacco di errori, ho messo a posto tutto ma spara fuori due cout senza farti inserire niente.. sicuramente bisogna svuotare il buffer. ho provato a usare la fflush ma non cambia nulla..
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 09-04-2007, 20:52   #3
Sh4k3!
Member
 
L'Avatar di Sh4k3!
 
Iscritto dal: Jan 2006
Messaggi: 91
lol infatti ci sono alcuni errori perchè l'ho provato a scuola e poi l'ho ricopiato in dev-c++ senza neanche controllare eventuali errori di copia .

Comunque anche correggendolo si blocca sempre su quella stringa, e poi non ho la minima idea di come sia il buffer, e la stessa cosa vale per il fflush .

PS nel compilatore le i sono tutte maiuscole
Sh4k3! è offline   Rispondi citando il messaggio o parte di esso
Old 09-04-2007, 21:02   #4
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
Quote:
Originariamente inviato da Sh4k3! Guarda i messaggi
lol infatti ci sono alcuni errori perchè l'ho provato a scuola e poi l'ho ricopiato in dev-c++ senza neanche controllare eventuali errori di copia .

Comunque anche correggendolo si blocca sempre su quella stringa, e poi non ho la minima idea di come sia il buffer, e la stessa cosa vale per il fflush .

PS nel compilatore le i sono tutte maiuscole

no ce n'era una minuscola e quindi dava errore.. comunque ho risolto con un fflush(stdin) dopo che inserisci il numero di stringhe solo che non va ancora lol.. la stringa non prende mai i caratteri maiuscoli.. boooooooooo..
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 09-04-2007, 21:08   #5
Sh4k3!
Member
 
L'Avatar di Sh4k3!
 
Iscritto dal: Jan 2006
Messaggi: 91
infatti deve prendere solo quelli numerici a minuscoli
Sh4k3! è offline   Rispondi citando il messaggio o parte di esso
Old 09-04-2007, 21:18   #6
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
Quote:
Originariamente inviato da Sh4k3! Guarda i messaggi
infatti deve prendere solo quelli numerici a minuscoli

ok ma non prende neanche quelli.. non prende proprio niente.. mi sono arreso.. eheheh
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 09-04-2007, 21:22   #7
Sh4k3!
Member
 
L'Avatar di Sh4k3!
 
Iscritto dal: Jan 2006
Messaggi: 91
si è arreso anche il prof lol, che compilatore hai usato?
Sh4k3! è offline   Rispondi citando il messaggio o parte di esso
Old 10-04-2007, 02:56   #8
sottovento
Senior Member
 
L'Avatar di sottovento
 
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
Quote:
Originariamente inviato da Sh4k3! Guarda i messaggi
Codice:
void ins (int N, char vet_stringhe[n_max][n_max_car]);
...

void main ()
 {
  char vet_stringhe_1[n_max][n_max_car], stringa_1[n_max_car];
  int N_1;
  ins (N_1,vet_stringhe_1);
  costr_strin(vet_stringhe_1,N_1,stringa_1);
  visua(stringa_1);
 }

void ins (int N, char vet_stringhe[n_max][n_max_car]);
{
 clrscr();
 int I;
 do
  {
	cout<<"Inserisci il numero massimo di stringhe ";
	cin>>N;
  }
 while (!((N>=2)&&(N<=n_max)));
 for (I=0;I<N;I++)
  {
	cout<<"Inserisci la "<<I+1<<"^ stringa del vettore ";
	gets(vet_stringhe[i]);
  }
}
...
Penso che fosse tua intenzione assegnare il valore alla variabile N_1 all'interno della funzione ins().
Purtroppo, siccome il passaggio dei parametri e' per valore, non assegni nulla. Al termine dell'esecuzione di ins() hai ancora in N_1 il valore precedente.
Il valore precedente e': INDETERMINATO. Non hai assegnato alcun valore.
__________________
In God we trust; all others bring data
sottovento è offline   Rispondi citando il messaggio o parte di esso
Old 10-04-2007, 11:48   #9
Sh4k3!
Member
 
L'Avatar di Sh4k3!
 
Iscritto dal: Jan 2006
Messaggi: 91
Se ho capito bene quello che intendi N_1 è il prototipo, il valore va assegnato ad N, che rappresenta il numero di stringhe.
Sh4k3! è offline   Rispondi citando il messaggio o parte di esso
Old 10-04-2007, 14:01   #10
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
Quote:
Originariamente inviato da Sh4k3! Guarda i messaggi
Se ho capito bene quello che intendi N_1 è il prototipo, il valore va assegnato ad N, che rappresenta il numero di stringhe.

ho usato il devcpp.. comunque intende che hai usato un passagio di varibili per valore (cioè che crea una copia e usa quella) e che quindi poi nel main e nelle altre funzioni n_1 avrà il valore che aveva prima.. se invece vuoi proprio modificare il valore di n_1 devi passarglielo per riferimento cioè &n_1.
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 10-04-2007, 14:09   #11
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
Codice PHP:
#include <conio.h>
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#define k 20

using namespace std;

void ins (int &Nchar vet_stringhe[k][k]);
void costr_strin (char vet_stringhe[k][k], int &Nchar stringa[k]);
void visua (char stringa[k]);

int main ()
 {
  
char vet_stringhe_1[k][k], stringa_1[k];
  
int N_1;
  
  
ins (N_1,vet_stringhe_1);
  
costr_strin(vet_stringhe_1,N_1,stringa_1);
  
visua(stringa_1);
  
  
getch();
  return 
0;
 }

void ins (int &Nchar vet_stringhe[k][k])
{
system("cls");
 
int i;
 
 do
  {
    
cout<<"Inserisci il numero massimo di stringhe ";
    
cin>>N;
    
fflush(stdin);
  }
 while (!((
N>=2)&&(N<=k)));
 for (
i=0;i<N;i++)
  {
    
cout<<"Inserisci la "<<i+1<<"^ stringa del vettore ";
    
gets(vet_stringhe[i]);
  }
}

void costr_strin (char vet_stringhe[k][k], int &Nchar stringa[k])
{
 
int i,J,f;
 
f=0;
 
 for(
i=0;i<N;i++)
  {
    for(
J=0;J<strlen(vet_stringhe[i]);J++)
     {
      if (
islower(vet_stringhe[i][J])) {stringa[f]=vet_stringhe[i][J];
                                           
f++;}
     }
  }
  
stringa[f+1]='\0';
}

void visua (char stringa[k])
{
 
cout<<"La stringa formata dai caratteri numerici e dai caratteri minuscoli del vettore";
 
cout<<" e' "<<stringa<<endl;

così sembra funzionare.. prova un po'..
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 11-04-2007, 21:56   #12
Sh4k3!
Member
 
L'Avatar di Sh4k3!
 
Iscritto dal: Jan 2006
Messaggi: 91
Salve...scusatemi se mi faccio vivo solo ora , grazie al vostro aiuto ho trovato l'errore: non avevo messo &N nella prima funzione.

Grazie
Sh4k3! è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Ecovacs DEEBOT T90 PRO OMNI: ora il rullo di lavaggio è ampio Ecovacs DEEBOT T90 PRO OMNI: ora il rullo di lav...
Recensione Samsung Galaxy S26 Ultra: finalmente qualcosa di nuovo Recensione Samsung Galaxy S26 Ultra: finalmente ...
Diablo II Resurrected: il nuovo DLC Reign of the Warlock Diablo II Resurrected: il nuovo DLC Reign of the...
Deep Tech Revolution: così Area Science Park apre i laboratori alle startup Deep Tech Revolution: così Area Science P...
HP OMEN MAX 16 con RTX 5080: potenza da desktop replacement a prezzo competitivo HP OMEN MAX 16 con RTX 5080: potenza da desktop ...
Ultime ore per le Offerte di Primavera: ...
Bitcoin, 20 milioni di BTC minati: l'ind...
Microsoft ridimensiona Copilot su Window...
Ultime ore per le Offerte di Primavera: ...
FRITZ!Box 6825 4G: il router LTE che fun...
Abbiamo scoperto la gamma Ego Power+ 202...
Il telescopio spaziale James Webb ha per...
Sony WH-1000XM5 in forte sconto: le cuff...
In Europa i videogiochi con loot box avr...
Ultimo giorno di Offerte di Primavera: e...
La crisi delle memorie potrebbe continua...
Questo TV QLED 4K da 50'' è torna...
Microsoft porta l'assistente AI Gaming C...
ROG Xbox Ally: sta per arrivare il suppo...
Ultimo giorno di Offerte di Primavera: u...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 12:10.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v