Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 21
  1. #11
    Se dicessi di non sapere nulla sarei abbastanza sincero.
    Ho cercato in giro su google e ho visto che per dichiarare una stringa di caratteri, dovrei usare degli array, così ho scritto
    codice:
    #include <stdio.h>
    
    int main(){
    	char c1 [6];
    	int ris;
    
    	printf ("Inserisci il primo colore ");
    	scanf("%s", &c1);
    
    	if (c1 == rosso){
    		ris == 2;
    		printf("La resistenza vale %d ohm", ris);
    	}
    
    	
    	return 0;
    }
    e già qui iniziano ad esserci problemi. Il terminal mi dice
    resistenze.c: In function ‘main’:
    resistenze.c:8:2: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘char (*)[6]’ [-Wformat]
    resistenze.c:10:12: error: ‘rosso’ undeclared (first use in this function)
    resistenze.c:10:12: note: each undeclared identifier is reported only once for each function it appears in
    resistenze.c:11:3: warning: statement with no effect [-Wunused-value]
    Non capisco perchè non gli piaccia il %s nello scanf visto che è un char;
    capisco l'errore del "rosso" però pensandola come in VB, credevo che capisse che se quello che ci ho inserito è "rosso", allora tutto il resto.
    Non ho proseguito per ovvi motivi xD

  2. #12
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    c1 è già un array e quindi è già un puntatore. Devi scrivere

    scanf("%s", c1);

    Non puoi scrivere

    if (c1 == rosso){

    (come non lo potevi fare neanche in VB) ...

    E

    ris == 2;

    non assegna ... deve essere ris=2;

    Insomma ... studi universitari ... VB ... c'è molto che non mi torna ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #13
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    codice:
    #include <stdio.h>
    #include <string.h>
    
    int main(){
    	char c1 [6];
    	int ris;
    
    	printf ("Inserisci il primo colore ");
    	scanf("%s", c1); //c1 è già un'indirizzo
    
    	if (!strcmp(c1, "rosso")){
    		ris = 2;
    		printf("La resistenza vale %d ohm", ris);
    	}
    	
    	return 0;
    }
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  4. #14
    Utente di HTML.it L'avatar di torn24
    Registrato dal
    Aug 2008
    Messaggi
    551

    Ciao

    Vedendo il codice e soprattutto gli errori , che hai commesso , si può dire che sei alla pagina successiva di "hallo world " , il problema che ti si dovrebbe dire tante cose ,perchè tu riesca a scrivere il programmino , non è un problema di programmazione "algoritmo" , è proprio che ancora devi imparare le basi del linguaggio , altrimenti lo risolveresti molto velocemente



    Ora nessuno può seguirti passo passo , ti dico solo alcune cose !

    char c[6] è un array di caratteri char e è come vengono gestite le stringhe in C

    scanf() richiede un puntatore , e il nome c è già un puntatore al primo elemento dell'array
    quindi devi scrivere scanf("%s",c) ma userei gets()


    hai scritto rosso , questo per il compilatore è qualcosa di diverso da una stringa , potrebbe essere il nome di una variabile o costante , "rosso" equivale a una costante stringa


    in C , non è possibile confrontare direttamente due stringhe con == , occorre avvalersi di una funzione strcmp()

    quindi if diviene if(strcmp(c,"rosso")==0)


    l'uguaglianza è == , l'assegnazione di un valore a una variabile è = ris=9;

    ma dovresti usare un array di char , è il solo modo , sicuramente quello più semplice per ottenere una stringa che rappresenta il valore di resistenza



    Sto passando un po il tempo , e non mi dispiace dirti certe cose , ma Non sei pronto per risolvere il problema , o comunque con un aiuto grosso , lo risolvi , ma non impareresti
    Tecnologia

  5. #15
    Ah ora ho capito. Si fa così il confronto con le stringhe...Grazie!
    Originariamente inviato da oregon
    Insomma ... studi universitari ... VB ... c'è molto che non mi torna ...
    Faccio ingegneria elettronica e non mi è mai piaciuto programmare. L'unica cosa che programmavo erano processori industriali (plc).
    VB l'ho fatto in terza superiore e da allora non lo vedo.

    @torn24: il giorno dopo aver fatto l'hello world, al tutorato ci hanno dato un problema e ci hanno detto: risolvetelo. Sono rimasto così:
    Hai assolutamente ragione su tutto. Volevo vedere cosa veniva fuori da autodidatta xD
    Grazie per i consigli ^^

  6. #16
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    @torn24
    Non c'è nessun male ad utilizzare scanf visto anche che prende in input una sola parola priva di spazi...
    Anzi: non hai il problema di ritrovarti un '\n' a fine riga...

    Non è vero che non si possono comparare due stringhe con == , è meglio dire che comparando con == si comparano gli indirizzi e perciò si vede se le due stringhe sono ESATTAMENTE la stessa stringa (cioè risiedono nella stessa area di memoria) che, in effetti, è una cosa di poca utilità. strcmp viene invece utilizzata per comparare due stringhe carattere per carattere...

    @Shikamaru93
    In ogni caso è meglio che lasci perdere per il momento e aspetti di avere conoscenze maggiori...
    Anche perchè il C nella gestione delle stringhe è un linguaggio piuttosto subdolo...
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  7. #17
    io ho imparato tutto quello che so da autodidatta , ma prima di presentare un problema qui ho studiato la guida xD

  8. #18
    Utente di HTML.it L'avatar di torn24
    Registrato dal
    Aug 2008
    Messaggi
    551

    ciao

    UN po off topic , ma voglio passare un po di tempo .

    Scara95 , intanto ti conosco da un po qui sul forum html.it e posso garantirti che sei molto più preparato di me , quindi prendi quello che scrivo con le pinze

    ma voglio fare il pignolo , gets() non aggiunge \n , alla stringa ,cosa che invece fa fgets() , comunque avevo pensato di prendere tutti i colori in un unica stringa e qui utilizzare gets()


    se di due stringhe confronti gli indirizzi dell primo elemento , "cosa che francamente non ho mai pensato si potesse o dovesse fare " , sta di fatto che non confronti le stringhe ma valori numerici .

    se ho detto delle fesserie , mi scuso a priori
    Tecnologia

  9. #19
    Un codice per ciò che ti serve potrebbe essere questo:

    codice:
    #include <stdio.h>
    
    int main(){
    int numeri[]={0,1,2,3,4,5,6,7,8,9};
    char colori[10][20] = {"nero","marrone","rosso","arancio","giallo","verde","blu","viola","grigio","bianco"};
    char colorepreso[25];
    printf("Dimmi il colore e ti diro' il codice numerico: ");
    scanf("%s",colorepreso);
    int i;
    for(i=0;i<10;i++){
            if(*colorepreso==*colori[i] && colorepreso[1] == colori[i][1]){
                printf("il codice numerico e': %d",numeri[i]);
            }
    }
    return 0;
    }
    Vedi però che l'ho scritto di fretta e SICURAMENTE c'era qualche algoritmo più efficiente di questo.
    PS: STUDIALO , non imparare dal copia e incolla.

  10. #20
    Utente di HTML.it L'avatar di torn24
    Registrato dal
    Aug 2008
    Messaggi
    551

    ciao

    Sono alle primissime armi del C e vorrei farmi un semplice programmino per convertire da codice dei colori delle resistenze, al valore numerico
    Il problema caso mai era dato il codice colori delle resistenze ,
    visibile da questo link
    http://www.micronova.it/TOOLS+FAQ/PR...enze-tools.jpg

    ricavare il valore di resistenza ! il codice postato non fa quello
    Tecnologia

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.