View Full Version : informazione elementare
cosa posso scrivere al termine di un programma in c per visualizzare il risultato, cioè per non far chiudere la finestra?
mi avevano detto di scrivere qualcosa con getchar..premere invio, ma ora non me la ricordo piu
grazie
cosa posso scrivere al termine di un programma in c per visualizzare il risultato, cioè per non far chiudere la finestra?Leggi <questo> (http://www.hwupgrade.it/forum/showthread.php?t=1323690) thread.
altra domandina, cosa c'è che non va in questo semplicissimo programma
#include <stdio.h>
#incldue <ctype.h>
int main()
{
char c;
scanf("%c", c);
printf("'%c' %s\n",c, isdigit(c)?"Vero\n":"Falso");
printf("'%c' %s\n",c, isalpha(c)?"Vero\n":"Falso");
printf("'%c' %s\n",c, isalnum(c)?"Vero\n":"Falso");
printf("'%c' %s\n",c, isxdigit(c)?"Vero\n":"Falso");
printf("'%c' %s\n",c, islower(c)?"Vero\n":"Falso");
printf("'%c' %s\n",c, isupper(c)?"Vero\n":"Falso");
printf("'%c' %s\n",c, tolower(c)?"Vero\n":"Falso");
printf("'%c' %s\n",c, toupper(c)?"Vero\n":"Falso");
printf("'%c' %s\n",c, isspace(c)?"Vero\n":"Falso");
printf("'%c' %s\n",c, iscntrl(c)?"Vero\n":"Falso");
printf("'%c' %s\n",c, ispunct(c)?"Vero\n":"Falso");
printf("'%c' %s\n",c, isprint(c)?"Vero\n":"Falso");
printf("'%c' %s\n",c, isgraph(c)?"Vero\n":"Falso");
}
scanf("%c", c);Devi passare alla scanf l'indirizzo della variabile 'c'.
scanf("%c", &c);
Questo perché la scanf deve poter scrivere nella variabile.
non funziona lo stesso
9 C:\Documents and Settings\Va\Desktop\1.cpp `isdigit' undeclared (first use this function)
mi dice questo per ogni funzione
Hai scritto
#incldue
invece di
#include
devo fare un programmino che converte uina stringa in maiuscolo
ho scritto questo ma non va
#include <stdio.h>
#include <windows.h>
#include <ctype.h>
int main()
{
char s[100];
int i;
gets(s);
for(i=0:i<100;i++){
printf(toupper(s[i]));}
system("PAUSE");}
printf("%c", toupper(s[i]));
non funzionava perchè avevo messo i : al posto del ;
ora il programma va, però escono tutti simboli strani
#include <stdio.h>
#include <windows.h>
#include <ctype.h>
int main()
{
char s[100];
int i;
gets(s);
for(i=0;i<100;i++){
printf("%c",toupper(s[i]));}
system("PAUSE");}
ora il programma va, però escono tutti simboli straniCosì stampi sempre 100 caratteri anche se magari ne hai inseriti di meno. Usa strlen() per ottenere la lunghezza della stringa.
oppure ci metti un
if(s[i] == '\0')
break;
ho messo l'if e funziona
grazie
Si scriva un programma che prenda in input quattro stringhe che rappresentino degli interi, le converta in interi, sommi i valori ottenuti e visualizzi il loro totale
#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
int main()
{
int a=0;
int b=0;
int c=0;
int d=0;
int somma=0;
char s1[100];
char s2[100];
char s3[100];
char s4[100];
gets(s1);
gets(s2);
gets(s3);
gets(s4);
a=atoi(s1);
b=atoi(s2);
c=atoi(s3);
d=atoi(s4);
somma=a+b+c+d;
printf("%d\n", somma);
system("PAUSE");}
perchè non funziona??
rispondete pure, io torno tra un po
perchè non funziona??Il programma è ok, per quale motivo dici che non funziona? :stordita:
(continui a includere windows.h che non so a cosa ti serva ma non è quello un problema).
cioè funziona, ma mi da 0 come somma degli interi delle stringhe. come mai?
windows.h lo metto perchè mi sembra che senza il system pause non funziona
cioè funziona, ma mi da 0 come somma degli interi delle stringhe. come mai?Dipende da cosa inserisci ...
windows.h lo metto perchè mi sembra che senza il system pause non funzionaSe includi già stdlib.h per system() è già ok. Non c'entra nulla con windows.h.
se inserisco solo numeri funziona
ma se metto le lettere non le converte in numeri??
se inserisco solo numeri funziona
ma se metto le lettere non le converte in numeri??Ma ... stai scherzando??? :mbe:
A parte che la funzione atoi(), per come è stata progettata, si ferma al primo carattere non riconosciuto come valido. Se inserisci "42abc", prende solo 42.
non lo sapevo
comq ho fatto un altro esercizio che dovrebbe confrontare due stringhe ma non so bene cosa scriverci dentro il printf
#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
int main()
{
const char s1[100];
const char s2[100];
gets(s1);
gets(s2);
printf(strcmp(s1,s2));
system("PAUSE");}
printf(strcmp(s1,s2)); strcmp ritorna un valore:
minore di 0 se s1 < s2
maggiore di 0 se s1 > s2
uguale a 0 se s1 = s2
Poi spetta a te stampare una informazione specifica per ognuno dei 3 casi.
E comunque non è corretta la printf che hai scritto. Il primo parametro deve essere comunque la stringa di formato.
si ma non so il modo in cui devo scriverlo, in quale posizione, ecc.
ho copiato questo dal libro, che significa?
printf("%s%s\n%s%s\n%s%s\n\n%s%2d\n%s%2d\n%s%2d\n\n",
"s1= ", s1, "s2= ", s2,"strcmp(s1,s2)= "), strcmp(s1,s2));
a che cosa servono tutti quei %s
printf("%s%s\n%s%s\n%s%s\n\n%s%2d\n%s%2d\n%s%2d\n\n",
"s1= ", s1, "s2= ", s2,"strcmp(s1,s2)= "), strcmp(s1,s2)); Non so da dove l'hai presa ma è sbagliata ... già solo come sintassi (c'è una ')' di troppo) e poi comunque ha più specificatori di formato di quanti sono realmente i valori passati (stamperebbe schifezze).
Fai così:
int r;
....
r = strcmp (s1, s2);
if (r < 0)
printf ("s1 è minore di s2\n");
else if .... completa tu ....
....
a quindi non devo mettere per forza tutto dentro printf, posso usare anche altre variabili. perfetto
a quindi non devo mettere per forza tutto dentro printf, posso usare anche altre variabili. perfettoDipende da come vuoi stampare l'informazione per i 3 casi.
Potrebbe bastare:
printf ("risultato: %d\n", strcmp (s1, s2));Ma così stamperebbe solo un banale numero ...
#include <stdio.h>
#include <windows.h>
#include <string.h>
int main()
{
const char s1[100];
const char s2[100];
int a;
gets(s1);
gets(s2);
a=strcmp(s1,s2);
if(a>0){ printf("a\n");
if(a<0){ printf("b\n");
if(a=0){ printf("c\n");
system("PAUSE");}
non fare caso a quello che ho scritto nei printf, l'ho messo solo per vedere su funziona. però mi da un errore, dice unitizlized const 's1'. che significa?
mi so scordato di chiude le graffe
ma me lo da lo stesso l'errore
ho provato a togliere il const e funziona
jappilas
24-11-2006, 14:23
però mi da un errore, dice unitizlized const 's1'. che significa?
dichiarare una variabile const (constant) ha lo scopo di generare degli errori se in altre parti del codice si effettuano delle sovrascritture (modifoche del valore) che si è sicuri non abbiano ragione d' essere per quella variabile
poichè una variabile dichiarata costante può essere solo inizializzata e mai più modificata, l' inizializzazione è essenziale
ora, tu hai tolto il const per far sparire l' errore, ma lasci s1 ed s2 non inizializzate: se non ricordo male, provando a stamparne il valore, dovresti ottenere un valore casuale
ma lasci s1 ed s2 non inizializzate: se provassi a stamparne il valore, dovresti ottenere un valore casualeBeh, certo ... se le stampi prima delle gets!
Ma ci sono le gets che scrivono nel buffer sempre qualcosa, come minimo il nullo finale. Quindi non è necessario inizializzare quei buffer.
jappilas
24-11-2006, 14:43
Beh, certo ... se le stampi prima delle gets!
Ma ci sono le gets che scrivono nel buffer sempre qualcosa, come minimo il nullo finale. Quindi non è necessario inizializzare quei buffer.giusto... ammetto di aver letto il post di sfuggita e di non aver fatto caso alle gets :O
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.