Torna indietro   Hardware Upgrade Forum > Software > Programmazione

GIGABYTE GAMING A16, Raptor Lake e RTX 5060 Laptop insieme per giocare al giusto prezzo
GIGABYTE GAMING A16, Raptor Lake e RTX 5060 Laptop insieme per giocare al giusto prezzo
Il Gigabyte Gaming A16 offre un buon equilibrio tra prestazioni e prezzo: con Core i7-13620H e RTX 5060 Laptop garantisce gaming fluido in Full HD/1440p e supporto DLSS 4. Display 165 Hz reattivo, buona autonomia e raffreddamento efficace; peccano però le USB e la qualità cromatica del pannello. Prezzo: circa 1200€.
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
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


GIGABYTE GAMING A16, Raptor Lake e RTX 5060 Laptop insieme per giocare al giusto prezzo GIGABYTE GAMING A16, Raptor Lake e RTX 5060 Lapt...
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,...
Start Cup Puglia 2025: il 16 ottobre la ...
Incentivi auto elettriche, falsa partenz...
Silence crea anche in Francia una rete d...
La realtà mista al servizio degli...
Nothing ha un altro smartphone in progra...
Decisione storica ad Amburgo: i cittadin...
Questo è il nuovo motore elettric...
HUAWEI WATCH GT 6: lo smartwatch 'infini...
Fotografia con AI: ecco Caira, la macchi...
PlayStation 6 vs Xbox Magnus: il rumor s...
DJI Osmo Action 4 a soli 208€ su Amazon:...
Irion, la data governance diventa strate...
EHang VT35: debutta in Cina il nuovo aer...
Cooler Master MasterLiquid Atmos II 360:...
Trapela in rete la roadmap dei nuovi gio...
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: 19:54.


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