Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
vivo X300 Pro rappresenta un'evoluzione misurata della serie fotografica del produttore cinese, con un sistema di fotocamere migliorato, chipset Dimensity 9500 di ultima generazione e l'arrivo dell'interfaccia OriginOS 6 anche sui modelli internazionali. La scelta di limitare la batteria a 5.440mAh nel mercato europeo, rispetto ai 6.510mAh disponibili altrove, fa storcere un po' il naso
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
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


Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria Recensione vivo X300 Pro: è ancora lui il...
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
Xbox Cloud Gaming arriva su Amazon Fire ...
Un blackout a San Francisco manda in til...
Windows 11 è diventato più...
Apple cambia strategia a causa della cri...
007 First Light: uscita rimandata di due...
Samsung Galaxy A37 e A57: il comparto fo...
DAZN lancia la sua offerta di Natale: My...
Gigabyte fa marcia indietro? Sparito il ...
Alcuni rivenditori giapponesi bloccano l...
Le feste non placano Amazon, anzi: aggio...
Roborock Q10 S5+ a un super prezzo: robo...
Formula sceglie WINDTRE BUSINESS per gar...
EXPO 1.20: AMD migliora il supporto all'...
MacBook Pro con chip M4, 24GB di RAM e 1...
Lefant M330 da 6.000Pa a 139€ o ECOVACS ...
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: 21:57.


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