|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Nov 2008
Messaggi: 230
|
[C] Errore durante compilazione programma
Sto studiando il C da alcune ore,e man mano che vado avanti faccio degli esercizi per ricordarmi meglio il codice ,ma nel caso sotto elencato mi sono bloccato poichè il compilatore mi restituisce un errore;sapreste spiegarmi,per favore,come ultimare bene il codice sotto elencato e magari spiegarmi la motivazione.
La guida che stò studiando è questa :http://www.blacklight.gotdns.org/wik...i_un_programma , proprio nella pagina dove ho trovato questo codice: Codice:
int i=0; while (i<10) { printf ("Valore di i: %d\n",i); i++; } |
![]() |
![]() |
![]() |
#2 |
Member
Iscritto dal: May 2006
Messaggi: 86
|
Codice PHP:
|
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Nov 2008
Messaggi: 230
|
grazie il mio errore era quello di omettere le parentesi graffe dopo il main
Ultima modifica di rikkaidd : 15-12-2009 alle 21:28. |
![]() |
![]() |
![]() |
#4 |
Member
Iscritto dal: May 2006
Messaggi: 86
|
... io lo potrei pure controllare, ma tu posta tutto, librerie e main compreso, e di che errore ti da ... se stai sul generico non ne esci fuori
|
![]() |
![]() |
![]() |
#5 |
Member
Iscritto dal: Nov 2008
Messaggi: 230
|
Grazie ho risolto,scusa se approfitto della tua disponibilità ma se io vorrei fare un programmino dove una variabile non è rappresentata solo da un numero o lettera ma bensi dalla parola ciao come dovrei fare?(anche perchè char si limita a 8 bite):
es: il valore della variabile è ciao, output a video:- salutami imput :ciao //bene !termina il programma ma nel caso la risposta fosse diversa da ciao si ripete il prinft che scrive a schermo salutami Penso che scrivere una cosa del genere non abbia significato: Codice:
#include<stdio.h> main() { char n; while (n!=ciao) { printf ("salutami : "); scanf ("%s",&n); printf ("Numero inserito: %s\n",n); } } Ultima modifica di rikkaidd : 15-12-2009 alle 22:11. |
![]() |
![]() |
![]() |
#6 |
Member
Iscritto dal: May 2006
Messaggi: 86
|
vai al capitolo stringhe della guida
|
![]() |
![]() |
![]() |
#7 |
Member
Iscritto dal: Nov 2008
Messaggi: 230
|
Ok ho provato questo ma quando metto ciao non chiude il programma
Codice:
#include<stdio.h> #include <string.h> main() { char d[4]; while (d!="ciao") { printf ("salutami : "); scanf ("%s",&d); printf ("Salutami: %s\d",d); } return 0; } Codice:
int n; while (n!=0) { printf ("Inserisci un numero (0 per finire): "); scanf ("%d",&n); printf ("Numero inserito: %d\n",n); } Codice:
#include<stdio.h> #include <string.h> main() { char d[4]; while (d!="ciao") { printf ("salutami : "); scanf ("%s",&"ciao"); printf ("Salutami: %s\d",d); } return 0; } Ultima modifica di rikkaidd : 15-12-2009 alle 23:13. |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Feb 2006
Città: Caserta
Messaggi: 1056
|
Come ti è già stato consigliato, devi lavorare sulle stringhe.
Il seguente codice fa ciò che desideri. Codice:
#include <stdio.h> #include <string.h> int main() { char str1[] = "ciao"; /* maniera veloce e comoda per dichiarare una stringa*/ char str2[10]; while (strcmp(str1,str2)) /* Compara le due stringhe */ { system("clear"); /* clear per UNIX, cls per microsoft */ printf("Salutami! "); scanf ("%s",str2); } return 0; } La funzione è definita nella libreria string.h, che quindi va inclusa. Di seguito qualche rimando teorico. Stringhe Funzione strcmp In ogni caso, per qualsiasi dubbio chiedi pure. |
![]() |
![]() |
![]() |
#9 |
Member
Iscritto dal: Nov 2008
Messaggi: 230
|
Grazie, come ho detto prima stò studiando il C da poche ore e non conosco nessun altro linguaggio di programmazione
![]() A pensare che dopo devo passare alla OOP ![]() Pero questo funzionava;infatti una volta scritto ciao e fatto invio il programma si chiudeva...solo perchè andava in errore ![]() Codice:
#include<stdio.h> #include <string.h> main() { char d[4]; while (d!="ciao") { printf ("salutami : "); scanf ("%s",&"ciao"); printf ("Salutami: %s\d",d); } return 0; } Conosco l'html (questo si impara in due ore per fortuna!) vorrei imparare anche il javascript e il php Ultima modifica di rikkaidd : 16-12-2009 alle 00:55. |
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Feb 2006
Città: Caserta
Messaggi: 1056
|
Se posso consigliarti un libro, usa IL LINGUAGGIO C di Kernighan - Ritchie
|
![]() |
![]() |
![]() |
#11 |
Member
Iscritto dal: Nov 2008
Messaggi: 230
|
Anche se và off-topic,e sperando di non fare incavolare i moderatori,vi chiedo ancora aiuto.. (era meglio che mettevo come titolo :aiuto sono un n00b...)
è proprio vero studiare da una guida internet non è il massimo! C'è più di una cosa che non sono riuscito a capire se si può fare o meno; per spiegarmi meglio porterò come esempio un programma scritto su due piedi: Codice:
#include <stdio.h> int main () { int a; printf ("Scrivi un numero compreso tra 1 e 10: "); scanf("%d",&a); if ((a>0) && (a<10)) printf ("bravo"); else{ printf("Idiota scrivi un numero compreso tra 1 e 10: "); scanf("%d",&a); if ((a>0) && (a<10)) printf ("bravo"); else printf("Suicidati "); } } Codice:
if ((a>0) && (a<10)) Codice:
else{ printf("Idiota scrivi un numero compreso tra 1 e 10: "); scanf("%d",&a); L'altra cosa che non ho capito è la seguente: Codice:
#include <stdio.h> int main () { int a[] = {2,4,6,7,8,9}; int b; printf ("Scrivi un numero compreso tra 1 e 10: "); scanf("%d",&b); if (b==a){ printf ("a e b sono uguali"); }else printf("a e b sono diversi"); } Conosceto qualche sito con esercizi in c che non implichino la conoscenza "ENIGMI E PARADOSSI MATEMATICI" per essere risolti? No scherzo,cmq qualche esercizio un pò più facile ,basilare... Ultima modifica di rikkaidd : 17-12-2009 alle 22:01. |
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: Feb 2006
Città: Caserta
Messaggi: 1056
|
Un consiglio... usa l'indentazione per migliorarne la leggibilità del codice.
Poi, per il primo codice non hai che da usare un ciclo iterativo a tua scelta. Io azzarderei un while con una variabile k di controllo. Codice:
#include <stdio.h> int main() { int a; printf ("Scrivi un numero compreso tra 1 e 10: "); int k; while (k) { scanf("%d",&a); if (a<0 || a>10) printf("Idiota, inserisci un numero compreso tra 1 e 10: "); else printf("Bravo!"); break; } return 0; } Ultima modifica di masteryuri : 18-12-2009 alle 00:03. |
![]() |
![]() |
![]() |
#13 | |
Senior Member
Iscritto dal: Feb 2006
Città: Caserta
Messaggi: 1056
|
Ecco, non è chiaro quello che vuoi fare con il secondo codice.
La variabile a è un puntatore che contiene l'indirizzo del vettore. Infatti gcc risponde così quando si cerca di compilare: Quote:
|
|
![]() |
![]() |
![]() |
#14 | |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
|
|
![]() |
![]() |
![]() |
#15 |
Senior Member
Iscritto dal: Feb 2006
Città: Caserta
Messaggi: 1056
|
Puoi mostrarmi?
|
![]() |
![]() |
![]() |
#16 | |
Member
Iscritto dal: Nov 2008
Messaggi: 230
|
Quote:
sono una appassionato di modding game e riesco a leggere meglio il codice quando è più compatto possibile,e a maggior ragione quando uno spazio in più è uguale ad un errore Ok ,questo dice bravo però se metti un numero che non soddisfa if il programma va male. Ultima modifica di rikkaidd : 18-12-2009 alle 01:06. |
|
![]() |
![]() |
![]() |
#17 |
Senior Member
Iscritto dal: Feb 2006
Città: Caserta
Messaggi: 1056
|
Beh qual è il problema, ora una struttura logica c'è. Puoi inserire anche queste finezze.
|
![]() |
![]() |
![]() |
#18 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
In realtà, pensandoci bene, potrebbe essere un problema anche in questo caso.
Mostrartelo è difficile perché dipende da quello che c'è prima nelle locazioni di memoria riservate per il secondo vettore. Ad esempio: Codice:
char str1[] = "ciao"; /* maniera veloce e comoda per dichiarare una stringa*/ char str2[10]; while (strcmp(str1,str2)) /* Compara le due stringhe */ { /*qui c'è qualcosa*/ } |
![]() |
![]() |
![]() |
#19 |
Member
Iscritto dal: Nov 2008
Messaggi: 230
|
Avevo chiesto aiuto anche in un altroforum dove Style { HdS619 } mi ha risposto cosi:
Rikkaidd ha scritto: ok ,funziona! ma se al posto della terza possibilità "suicidati", vorrei che ogni volta che il numero messo a imput da tastiera non soddisfa la condizione:Codice: Codice:
\* if ((a>0) && (a<10))*/ Codice: Codice:
else{ printf("Idiota scrivi un numero compreso tra 1 e 10: "); scanf("%d",&a); risposta: Codice:
#include <stdio.h> int main (void) { int j; do { printf ("Inserisci un numero tra 1 e 10: "); scanf ("%d", &j); } while ( j < 1 || j > 10 ); printf ("Bravo.\n"); return 0; } Rikkaidd ha scritto: L'altra cosa che non ho capito è la seguente: Codice: Codice:
#include <stdio.h> int main () { int a[] = {2,4,6,7,8,9}; int b; printf ("Scrivi un numero compreso tra 1 e 10: "); scanf("%d",&b); if (b==a){ printf ("a e b sono uguali"); }else printf("a e b sono diversi"); } Conoscetre qualche sito con esercizi in c che non implichino la conoscenza di "ENIGMI E PARADOSSI MATEMATICI" per essere risolti? risposta: non puoi confrontare un int con un int * ( int array[] equivale a int * ) quindi dovresti fare un ciclo che confronta ogni elemento di a con b LA COSA STRANA E' CHE HO CAPITO!!!! Ultima modifica di rikkaidd : 18-12-2009 alle 05:03. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 08:55.