Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Nuova Dacia Spring, del modello precedente resta solo il nome: più grande, più efficiente e ora prodotta in Europa
Nuova Dacia Spring, del modello precedente resta solo il nome: più grande, più efficiente e ora prodotta in Europa
La seconda generazione della citycar elettrica di Dacia passa alla piattaforma RGEV small di Renault Group, cresce di 15 cm in lunghezza e 18 cm in larghezza, adotta un motore da 80 CV e una batteria LFP da 27,5 kWh per 250 km WLTP. Prezzi da 17.900 euro, produzione a Novo Mesto in Slovenia.
BOOX Picco: l'ebook reader minuscolo è una genialata, e si può attaccare allo smartphone
BOOX Picco: l'ebook reader minuscolo è una genialata, e si può attaccare allo smartphone
BOOX ha portato sul mercato Picco, un e-reader da 3,97 pollici che pesa 58 grammi e si aggancia al retro dello smartphone con un anello magnetico. Lo abbiamo usato con Pixel 11 Pro XL e iPhone 18 Pro per capire se un formato così ridotto regga la prova della lettura quotidiana
AMD EPYC Venice: dentro Zen 6, i SoC a 256 core e la sfida al costo della memoria
AMD EPYC Venice: dentro Zen 6, i SoC a 256 core e la sfida al costo della memoria
A Las Vegas AMD ha svelato i dettagli architetturali delle CPU EPYC di sesta generazione, note con il nome in codice Venice. Nuovi core Zen 6 e Zen 6c costruiti a 2 nanometri, fino a 256 core per socket, 16 canali di memoria, interfaccia PCI Express 6.0 e un'intera famiglia di proposte che va da Venice SP7 a Verano. Senza dimenticare la memoria, oggi la voce di costo più pesante in un server: AMD risponde con CXL 3.1 e con la tecnologia software MEXT, che porta la memoria flash dentro la gerarchia della DRAM.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 28-05-2008, 12:26   #1
cecce88
Junior Member
 
Iscritto dal: Jun 2007
Messaggi: 24
[C] Programma in C simile all'ATOI

Questo programma dovrebbe svolgere una funzione simile all'ATOI, quindi prende un stringa di numeri e la trasforma in intero! Il fatto è che non accetta la stringa, mi da errore come se leggesse dei caratteri! Sapete aiutarmi?

#include<stdio.h>
int potenza(int);

int main()
{ char s[101],c;
int i=0,in=0,j,p,aux,end;

/*Inserimento stringa*/
printf("Inserisci stringa: ");
while((c=getchar()!='\n')||(i<100))
{ if ((c>=48)&&(c<=57)||(c==' '))
{ s[i]=c;
i++;
}
else
{ printf("Inserito carattere errato!! esci");
return 0;
}
}
s[i]='\0';
end=i;

/* eliminazione spazi vuoti */
for(i=0;i<end;i++)
{ if(s[i]==' ')
{ for(j=i;j<end;j++)
s[j]=s[j+1];
}
}

/*trasformazione intero*/
for(i=0;i<end;i++,end--)
{ aux=s[i];
s[i]=end;
s[end]=aux;
}

for(i=0;i<end;i++)
{ p=potenza(i);
in=in+((s[i]-48)*p);
}

printf("\n L'intero è: %d", in);
return 0;
}

int potenza(int x)
{ int y,pot=1;
if(x==0) return pot;
for(y=1;y<=x;y++)
pot=pot*10;
}
cecce88 è offline   Rispondi citando il messaggio o parte di esso
Old 28-05-2008, 12:33   #2
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Sicuramente questo è sbagliato:
Codice:
for(i=0;i<end;i++,end--)
 { aux=s[i];
 s[i]=end;
 s[end]=aux;
 }
Presumo vuoi invertire le cifre, ma questo codice è scorretto.
Ad es. questo credo è quello che vuoi fare:
Codice:
for(i=0;i<end/2;i++) {
  aux=s[i];
  s[i]=s[end-i-1];
  s[end-i-1]=aux;
}
Poi, perché leggi gli spazi se poi devi saltarli? Ignorali direttamente in fase di lettura, no?
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12

Ultima modifica di ilsensine : 28-05-2008 alle 12:36.
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 28-05-2008, 12:37   #3
cecce88
Junior Member
 
Iscritto dal: Jun 2007
Messaggi: 24
il problema non me lo da lì!! Ma nel primo for alla IF..io ho messo il controllo c>=48 e <=57 (in ASCII da 0 a 9)!! Solamente che quando vado in esecuzione e metti dei numeri questo mi da errore come se avessi inserito de caratteri!!
cecce88 è offline   Rispondi citando il messaggio o parte di esso
Old 28-05-2008, 12:40   #4
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Il problema è qui:
Codice:
(c=getchar()!='\n')
infatti il mio compilatore mi segnala correttamente un warning.
Hai idea di cosa possa esserci di sbagliato?
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 28-05-2008, 12:54   #5
cecce88
Junior Member
 
Iscritto dal: Jun 2007
Messaggi: 24
while((c!='\n')||(i<100))
{ c=getchar();
if ((c>=48)&&(c<=57))
{ s[i]=c;
i++;
}
else
if (c!='\n')
{ printf("Inserito carattere errato!! esci");
return 0;
}
}

Ho corretto in questo modo! Solamente che se dopo l'inserimento dei caratteri di l'INVIO dovrebbe uscir dal ciclo (c!='\n')!!! Invece non lo fa! Devo inserire tutti a 100 i caratteri!
cecce88 è offline   Rispondi citando il messaggio o parte di esso
Old 28-05-2008, 15:04   #6
gepeppe
Senior Member
 
L'Avatar di gepeppe
 
Iscritto dal: Jun 2005
Città: Napoli
Messaggi: 2599
Quote:
Originariamente inviato da cecce88 Guarda i messaggi
Codice:
         while((c!='\n')||(i<100))
        {     
                 c=getchar();
                if ((c>=48)&&(c<=57))
                        {       s[i]=c;
                                i++;
                        }
                else
                        if (c!='\n')
                        {       printf("Inserito carattere errato!! esci");
                                return 0;
                        }
        }
Ho corretto in questo modo! Solamente che se dopo l'inserimento dei caratteri di l'INVIO dovrebbe uscir dal ciclo (c!='\n')!!! Invece non lo fa! Devo inserire tutti a 100 i caratteri!
cosi già si capisce di più. Cmq ci vuole l'and e non l'or, perchè deve continuare il ciclo while mentre c è diverso dall'invio ed i < 100. Appena una delle due condizione risulta non verificata, esce dal ciclo.
__________________
Hp pavilion dv6-1250el [cpu: P8700 - ati radeon hd 4650 1 gb - 4 gb ram - hd 320 7200 rpm!] Garmin Official Thread
gepeppe è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Nuova Dacia Spring, del modello precedente resta solo il nome: più grande, più efficiente e ora prodotta in Europa Nuova Dacia Spring, del modello precedente resta...
BOOX Picco: l'ebook reader minuscolo è una genialata, e si può attaccare allo smartphone BOOX Picco: l'ebook reader minuscolo è un...
AMD EPYC Venice: dentro Zen 6, i SoC a 256 core e la sfida al costo della memoria AMD EPYC Venice: dentro Zen 6, i SoC a 256 core ...
HONOR Pad X9 Max recensione, schermo ultra large a meno di 400 euro HONOR Pad X9 Max recensione, schermo ultra large...
Lenovo ThinkPad X1 Carbon Gen 14: il business ultraleggero si rinnova dall’interno Lenovo ThinkPad X1 Carbon Gen 14: il business ul...
Jensen Huang avrebbe nascosto ai vertici...
Le prime cuffie over-ear di Vivo arrivan...
GPU, CPU e fotoni: il piano di AMD per p...
La soluzione di Google per i nuovi occhi...
Il futuro di XBOX passa per l'intelligen...
Amazon, le 13 offerte da non perdere ogg...
Svendita TV su MediaWorld: OLED LG e Sam...
AMD si ricorda dei gamer, ma il messaggi...
Fate in fretta: su Mediaworld c'è...
Ho usato ArtCraft per trasformare un mio...
SSD e hard disk su AliExpress: 4TB a sol...
Due Mac agli antipodi in forte sconto su...
Quick Spectral Super Resolution (QSSR): ...
AMD Ryzen, prezzi interessanti su AliExp...
Zenbook S è un MacBook Air che co...
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:53.


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