Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70 porta il concetto di smartphone ultrasottile su un terreno più concreto e accessibile: abbina uno spessore sotto i 6 mm a una batteria di capacità relativamente elevata, un display pOLED da 6,7 pollici e un comparto fotografico triplo da 50 MP. Non punta ai record di potenza, ma si configura come alternativa più pragmatica rispetto ai modelli sottili più costosi di Samsung e Apple
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026
Sono molte le novità che ASUS ha scelto di presentare al CES 2026 di Las Vegas, partendo da una gamma di soluzioni NUC con varie opzioni di processore passando sino agli schermi gaming con tecnologia OLED. Il tutto senza dimenticare le periferiche di input della gamma ROG e le soluzioni legate alla connettività domestica
Le novità ASUS per il 2026 nel settore dei PC desktop
Le novità ASUS per il 2026 nel settore dei PC desktop
Molte le novità anticipate da ASUS per il 2026 al CES di Las Vegas: da schede madri per processori AMD Ryzen top di gamma a chassis e ventole, passando per i kit di raffreddamento all in one integrati sino a una nuova scheda video GeForce RTX 5090. In sottofondo il tema dell'intelligenza artificiale con una workstation molto potente per installazioni non in datacenter
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 18-06-2008, 19:20   #1
88MIKI88
Member
 
L'Avatar di 88MIKI88
 
Iscritto dal: Dec 2007
Città: .......
Messaggi: 188
[C]-Domande da principiante

Visto ke ho appena iniziato a programmare in C posterò i miei eventuali dubbi su qst topic.


E' giusto secondo voi qst programma??

#include <stdio.h>
main ()
{
int sb,cn,ct,c;
sb=0; /* contatore spazi bianchi */
cn=0; /* contatore spazi newline*/
ct=0; /* contatore caratteri tabulazioni */
while ((c=getchar()) !=EOF)
if(c == ' ')
++sb;
printf("%d\n", sb);
if(c== '\n')
++cn;
printf("%d\n", cn);
if(c== '\t')
++ct;
printf("%d\n", ct);

}


Il primo printf funzia alla perfezione gli altri 2 danno sempre valore 0 in qualunque caso....c'è qualcuno ke sa aiutarmi??
88MIKI88 è offline   Rispondi citando il messaggio o parte di esso
Old 18-06-2008, 20:29   #2
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
mancano le graffe del while.. esegue solo il primo if
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 18-06-2008, 20:37   #3
88MIKI88
Member
 
L'Avatar di 88MIKI88
 
Iscritto dal: Dec 2007
Città: .......
Messaggi: 188
Avevo provato a metterle xò mettendole quando scrivo qualcosa e do l'invio escono fuori una serie di numeri uno sotto l'altro.


Secondo voi x scrivere il seguente programma come dovrei agire??

Scrivere un programma i cui dati in uscita replichino i dati in ingresso sostituendo xò una stringa di 1 o più spazi bianchi con uno spazio singolo....
88MIKI88 è offline   Rispondi citando il messaggio o parte di esso
Old 18-06-2008, 20:45   #4
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
no mettile ma dentro le graffe lascia solo gli incrementi dei counter.. le stampe mettile fuori ovviamente..
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2008, 00:32   #5
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2782
Intanto usa il tag code, così mantieni l'indentazione anche qui sul forum. Fatto questo mettere le graffe è semplice, basta che ce ne sia una aperta prima di un rientro ed una chiusa alla fine dello stesso rientro (sempre se l'hai indentato correttamente). Le graffe sono superflue solo quando il blocco indentato è di una sola istruzione.

Seconda cosa, per poter replicare ciò che leggi da tastiera sei sulla giusta strada, c'è però un problema, nelle printf "%d" indica che vuoi stampare un intero, per questo ottieni dei numeri, se vuoi vedere i caratteri ascii corrispondenti devi usare "%c"
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 20-06-2008, 22:51   #6
88MIKI88
Member
 
L'Avatar di 88MIKI88
 
Iscritto dal: Dec 2007
Città: .......
Messaggi: 188
C'è qualcuno in grado di darmi un input a qst problema:

Scrivere un programma i cui dati in uscita replichino i dati in ingresso sostituendo xò una stringa di 1 o più spazi bianchi con uno spazio singolo....

Praticamente se trovo 2 spazi bianchi vicini devo eliminarne 1 e stamparne solo 1.
88MIKI88 è offline   Rispondi citando il messaggio o parte di esso
Old 20-06-2008, 23:06   #7
variabilepippo
Senior Member
 
L'Avatar di variabilepippo
 
Iscritto dal: Mar 2007
Messaggi: 1792
Quote:
Visto ke ho appena iniziato a programmare in C posterò i miei eventuali dubbi su qst topic.

un input a qst problema
Di solito sui forum si pone una domanda per thread ed è buona norma evitare le abbreviazioni da SMS, qui non si pagano i caratteri in eccesso e l'unico effetto di contrarre le parole è peggiorare la leggibilità del post.
variabilepippo è offline   Rispondi citando il messaggio o parte di esso
Old 20-06-2008, 23:15   #8
wisher
Senior Member
 
L'Avatar di wisher
 
Iscritto dal: Aug 2005
Messaggi: 2755
Quote:
Originariamente inviato da 88MIKI88 Guarda i messaggi
C'è qualcuno in grado di darmi un input a qst problema:

Scrivere un programma i cui dati in uscita replichino i dati in ingresso sostituendo xò una stringa di 1 o più spazi bianchi con uno spazio singolo....

Praticamente se trovo 2 spazi bianchi vicini devo eliminarne 1 e stamparne solo 1.
Un aiutino, il problema è molto semplice:
Immagina di avere due stati:
A-nessuno spazio bianco letto
B-letto uno spazio bianco

se sei in A leggendo un carattere non spazio resti in A e stampi il carattere letto, leggendo uno spazio vai in B e stampi il primo spazio.
da B leggendo uno spazio resti in B senza stampare nulla, leggendo un carattere passi in A e stampi il carattere.

Puoi ricreare questa FSA in questo modo:
Codice:
...
while(c = getCh()){
 if(c==' '){
  print c;
  while(c == ' '){//Scarto i ' ' in eccesso
   c = getCh();
   }
  }
  print c;
}
...
__________________
wisher è offline   Rispondi citando il messaggio o parte di esso
Old 20-06-2008, 23:34   #9
~FullSyst3m~
Senior Member
 
L'Avatar di ~FullSyst3m~
 
Iscritto dal: Mar 2007
Messaggi: 4683
Quote:
Originariamente inviato da wisher Guarda i messaggi
Un aiutino, il problema è molto semplice:
Immagina di avere due stati:
A-nessuno spazio bianco letto
B-letto uno spazio bianco

se sei in A leggendo un carattere non spazio resti in A e stampi il carattere letto, leggendo uno spazio vai in B e stampi il primo spazio.
da B leggendo uno spazio resti in B senza stampare nulla, leggendo un carattere passi in A e stampi il carattere.

Puoi ricreare questa FSA in questo modo:
Codice:
...
while(c = getCh()){
 if(c==' '){
  print c;
  while(c == ' '){//Scarto i ' ' in eccesso
   c = getCh();
   }
  }
  print c;
}
...
Per me sto C è arabo.. ma come vi convincete??
__________________
Firma eliminata e avatar cambiato. Troppa gente giudica il monaco dall'abito.
~FullSyst3m~ è offline   Rispondi citando il messaggio o parte di esso
Old 21-06-2008, 16:21   #10
88MIKI88
Member
 
L'Avatar di 88MIKI88
 
Iscritto dal: Dec 2007
Città: .......
Messaggi: 188
#include<stdio.h>

main ()
{
int c;
while (c=getchar()!=EOF)
{
if(c== ' ') {
printf ("%c", c);

while (c==' ')
c=getchar();
}
printf("%d",c);
}

}

Il codice è qst e come sintassi c'è visto ke il debugger nn dà errori xò il programma stampa solo 1....come mai????
88MIKI88 è offline   Rispondi citando il messaggio o parte di esso
Old 21-06-2008, 16:35   #11
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2782
Usa il tag CODE, e nell'ultima printf stai ancora usando %d
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 21-06-2008, 16:49   #12
88MIKI88
Member
 
L'Avatar di 88MIKI88
 
Iscritto dal: Dec 2007
Città: .......
Messaggi: 188
Sta di fatto ke nn esce ankora.......escono delle faccine....
88MIKI88 è offline   Rispondi citando il messaggio o parte di esso
Old 21-06-2008, 17:16   #13
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2782
C'è un errore nel while, dovrebbe essere:
Codice:
while ((c=getchar())!=EOF)
Senza le parentesi mette in "c" il risultato del confronto "getchar()!=EOF"
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 21-06-2008, 19:42   #14
88MIKI88
Member
 
L'Avatar di 88MIKI88
 
Iscritto dal: Dec 2007
Città: .......
Messaggi: 188
Ultimo esercizio di questo capitolo finalmente!

Scrivere un programma in cui i dati in ingresso siano uguali a quelli in uscita sostituendo però \b ad ogni backspace, \t ad ogni tabulazione e \\ ad ogni backslash....

Francamente quando ho letto il testo mi sono detto "questo esercizio è una cazzata!!"

Poi invece analizzandolo x bene non è così o almeno c'è solo un piccolo problema nelle stampe.... per stampare \b, \t, \\ come posso fare?? All'inizio ho pensato di andare a vedere se c'è un codice corrispondente in ASCII xò nn so nn mi sembra la strada giusta.....
88MIKI88 è offline   Rispondi citando il messaggio o parte di esso
Old 22-06-2008, 00:59   #15
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2782
Non esiste un carattere specifico per stampare "\b", "\t" e "\\", semplicemente li devi stampare così come stringhe costanti. Occhio però che se scrivi:
Codice:
printf("\t");
Non verrà stampato "\t" ma un carattere di tabulazione, per stampare "\t" devi aggiungere una '\' prima:
Codice:
printf("\\t");
E così anche per le altre stringhe:
Codice:
printf("\\b");
printf("\\\\");
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 22-06-2008, 15:05   #16
88MIKI88
Member
 
L'Avatar di 88MIKI88
 
Iscritto dal: Dec 2007
Città: .......
Messaggi: 188
Sta di fatto che con i backslash non funziona.....se tu fai:

if ( c == '\') il compilatore impazzisce e ti inizia a trovare errori.

per farlo andare devo fare:

if (c=='\\') {
printf("\\\\")
}

in cui vengono stampati 3 backslash al posto di 2....c'è qualcuno che mi sa dire il perchè?
88MIKI88 è offline   Rispondi citando il messaggio o parte di esso
Old 22-06-2008, 17:03   #17
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Perché il backslash è un carattere di escape, se tu scrivi \' viene interpretata come una virgoletta e non come l'apice finale che racchiude un carattere, quindi per il compilatore c'è una sequenza mai terminata (ecco il perché degli errori).

Probabilmente c'è una stampa in più, se vedi 3 backslash (o la prima è quella ricevuta in input).
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 22-06-2008, 17:43   #18
88MIKI88
Member
 
L'Avatar di 88MIKI88
 
Iscritto dal: Dec 2007
Città: .......
Messaggi: 188
Risolto il problema del backslash ne avevo messo uno in più :P

Sta di fatto che devo ancora risolvere quello del backspace

io ho scritto:

if (c == '\b') {
printf("\\b");

la sintassi è giusta soltanto che non funziona come dovrebbe.....
88MIKI88 è offline   Rispondi citando il messaggio o parte di esso
Old 23-06-2008, 01:26   #19
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2782
La risposta molto probabilmente è qui: LINK
wingman87 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza Motorola edge 70: lo smartphone ultrasottile che...
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026 Display, mini PC, periferiche e networking: le n...
Le novità ASUS per il 2026 nel settore dei PC desktop Le novità ASUS per il 2026 nel settore de...
Le novità MSI del 2026 per i videogiocatori Le novità MSI del 2026 per i videogiocato...
I nuovi schermi QD-OLED di quinta generazione di MSI, per i gamers I nuovi schermi QD-OLED di quinta generazione di...
Nintendo Switch 2: risultati sotto le at...
Weekend con tante sorprese su Amazon: to...
HONOR non si ferma più: il 2025 &...
Speciale best seller: EUREKA J15 Evo Ult...
Roborock Q10 X5+ da 10.000 Pa a 199€ &eg...
E-mail reset password di Instagram: la c...
La NASA ha discusso le problematiche del...
Il razzo spaziale NASA SLS e la capsula ...
Stazione Spaziale Internazionale: Crew-1...
Samsung Galaxy S26 Ultra: la ricarica de...
Apple ha un nuovo partner per la sua App...
Trenitalia introduce il prezzo dinamico ...
OnePlus non si ferma più: c'&egra...
DAZN sconta il piano Full per 6 mesi, se...
L'uso dell'IA nei giochi è cancer...
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: 09:45.


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