Torna indietro   Hardware Upgrade Forum > Software > Programmazione

iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile
iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile
C'è tanta sostanza nel nuovo smartphone della Mela dedicato ai creator digitali. Nuovo telaio in alluminio, sistema di raffreddamento vapor chamber e tre fotocamere da 48 megapixel: non è un semplice smartphone, ma uno studio di produzione digitale on-the-go
Intel Panther Lake: i processori per i notebook del 2026
Intel Panther Lake: i processori per i notebook del 2026
Panther Lake è il nome in codice della prossima generazione di processori Intel Core Ultra, che vedremo al debutto da inizio 2026 nei notebook e nei sistemi desktop più compatti. Nuovi core, nuove GPU e soprattutto una struttura a tile che vede per la prima volta l'utilizzo della tecnologia produttiva Intel 18A: tanta potenza in più, ma senza perdere in efficienza
Intel Xeon 6+: è tempo di Clearwater Forest
Intel Xeon 6+: è tempo di Clearwater Forest
Intel ha annunciato la prossima generazione di processori Xeon dotati di E-Core, quelli per la massima efficienza energetica e densità di elaborazione. Grazie al processo produttivo Intel 18A, i core passano a un massimo di 288 per ogni socket, con aumento della potenza di calcolo e dell'efficienza complessiva.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 09-04-2007, 17: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, 19: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, 19: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, 20: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, 20: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, 20: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, 20: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, 01: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, 10: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, 13: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, 13: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, 20: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


iPhone 17 Pro: più di uno smartphone. È uno studio di produzione in formato tascabile iPhone 17 Pro: più di uno smartphone. &Eg...
Intel Panther Lake: i processori per i notebook del 2026 Intel Panther Lake: i processori per i notebook ...
Intel Xeon 6+: è tempo di Clearwater Forest Intel Xeon 6+: è tempo di Clearwater Fore...
4K a 160Hz o Full HD a 320Hz? Titan Army P2712V, a un prezzo molto basso 4K a 160Hz o Full HD a 320Hz? Titan Army P2712V,...
Recensione Google Pixel Watch 4: basta sollevarlo e si ha Gemini sempre al polso Recensione Google Pixel Watch 4: basta sollevarl...
Samsung è sempre più prota...
ChatGPT ha pregiudizi politici? Ecco cos...
Un solo iPhone rubato ha portato alla sc...
Xiaomi 17 Ultra sta arrivando: ecco come...
Il Motorola Edge 70 non ha più se...
Alcuni Galaxy S26 utilizzeranno il chip ...
Amazon, ecco i super sconti del weekend:...
Scovare un bug di sicurezza sui disposit...
Offerta Amazon su NordVPN: proteggi 10 d...
ECOVACS DEEBOT X8 PRO OMNI in offerta su...
Scope elettriche Tineco in offerta su Am...
Offerta Amazon sui robot EUREKA J15 Ultr...
Chrome disattiverà automaticament...
Tornano tutti e 4 i colori disponibili p...
Super sconto su iPhone 16: Amazon abbass...
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: 01:12.


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