Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 25
  1. #1

    [C] pulizia campi senza libreria conio.h

    Salve vorrei che ne mio programma venga eliminata la ripetizione del testo ogni vota che vi è un errore di inserimento ...magari pulendo solo il campo o facendo uscire per pochi secondi la scritta errore e poi permettere l'inserimento del valore richiesto senza ripetere il testo"inserisci coef angolare " e " inserisci la variabile q".premetto che ho un problema con il compilatore e non accetta la la libreria conio.h come potdei fare?
    codice:
    #include<stdio.h>
    #include <stdlib.h>
    #define SIZE 4
    int isnumeric(char *);
    
    int main(int argc, const char *argv[])
    {
    	float array[SIZE];
    	int x;
    	char temp[20];
    	float q;
    	float m;
    	printf("inserisci coef. angolare\n");
    	while (!isnumeric(gets(temp)))
    		printf("inserisci coef. angolare\n");
    	m = (float)atof(temp);
    	printf("inserisci q\n");
    	while (!isnumeric(gets(temp)))
    		printf("inserisci q\n");
    	q = (float)atof(temp);
    	printf("%s%13s\n", "Elemento", "Valore");
    	for (x = 0; x <= SIZE - 1; x++)
    	{
    		array[x] = m * x + q;
    	}
    	for (x = 0; x <= SIZE - 1; x++)
    	{
    		printf("%8d%13.2f\n", x, array[x]);
    	}
    
    
    	system("pause");
    }
    
    
    int isnumeric(char *str)
    {
    	if (str == NULL)
    		return 0;				// Continua se la stringa e NULL
    	while (*str)
    	{
    		if (*str != '.' && (*str < '0' || *str > '9'))
    			return 0;
    		str++;
    	}
    
    
    	return 1;
    }

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

    torn24

    Ciao , bisogna anche accontentarsi
    Un programma console , gestisce l' output e input in un modo ben preciso , quindi non si può ottenere tutto ciò che si vuole , se vedi programmi in c che fanno di tutto probabilmente non è ANSI C "standard" ma usano funzioni e librerie particolari .


    DA quel che ho capito , vorresti evitare che ti compaiano sullo schermo infinite scritte

    se l'input è sbagliato , esempio

    inserisci valore uno ->f
    inserisci valore uno ->f
    inserisci valore uno ->f

    potresti risolvere ripulendo lo schermo , ad ogni "errore di input " visto che usi sistemi linux
    dovrebbe essere system("clear")

    quindi prova a modificare i vari while come segue

    codice:
    
    while (!isnumeric(gets(temp))){
                   
                    system("clear");
    		printf("inserisci coef. angolare\n");
           }
    Tecnologia

  3. #3
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Fatti una funzione "clear" che esegue 80 volte printf("\n");
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  4. #4
    Grazie torn24 ma con il clear system viene cancellato tutto anche il printf e non si puó inserire piu niente poi se si preme enter per farla ripartire prende gli invio come zeri e termina la funzione lo stesso con tutti zero come risultato

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    250
    codice:
    printf("inserisci coef. angolare\n");
    	while (!isnumeric(gets(temp)));
    In questo modo anche se sbagli l'inserimento,te lo fa inserire ma non te lo richiede..Spero sia ciò che intendevi

  6. #6
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da mar("9546")
    Grazie torn24 ma con il clear system viene cancellato tutto anche il printf e non si puó inserire piu niente poi se si preme enter per farla ripartire prende gli invio come zeri e termina la funzione lo stesso con tutti zero come risultato
    Ah ok, pensavo ti bastasse ripulire lo schermo ^^
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  7. #7
    Su che piattaforma stai lavorando?
    Amaro C++, il gusto pieno dell'undefined behavior.

  8. #8
    Uso android come sistema operativo e c4droid come compilatore

  9. #9
    Non devo pulire lo schermo ma solo il campo di inserimento dell'input

  10. #10
    Grazie a torn24legge il carattere in entrata e non ripete il il testo ma ora non funziona nell'esecuzione del calcolo.
    codice:
    #include<stdio.h>
    #include <stdlib.h>
    #define SIZE 4
    int isnumeric(char *);
    
    int main(int argc, const char *argv[])
    {
    	float array[SIZE];
    	int x;
    	char temp[20];
    	float q;
    	float m;
    	printf("inserisci coef. angolare\n");
    	while (!isnumeric(gets(temp))){
                      system("clear");	
    		printf("inserisci coef. angolare\n");}
    	
    	printf("inserisci q\n");
    	while (!isnumeric(gets(temp))){
                    system("clear");	
    		printf("inserisci q\n");}
    	
    	printf("%s%13s\n", "Elemento", "Valore");
    	for (x = 0; x <= SIZE - 1; x++)
    	{
    		array[x] = m * x + q;
    	}
    	for (x = 0; x <= SIZE - 1; x++)
    	{
    		printf("%8d%13.2f\n", x, array[x]);
    	}
    
    
    	system("pause");
    }
    
    
    int isnumeric(char *str)
    {
    	if (str == NULL)
    		return 0;				// Continua se la stringa e NULL
    	while (*str)
    	{
    		if (*str != '.' && (*str < '0' || *str > '9'))
    			return 0;
    		str++;
    	}
    
    
    	return 1;
    }

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 © 2024 vBulletin Solutions, Inc. All rights reserved.