Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

C - funzione per incrementare di uno un intero qualsiasi

Linguaggi e sistemi

Moderatori: Foto UtentePaolino, Foto Utentefairyvilje

2
voti

[11] Re: C - funzione per incrementare di uno un intero qualsiasi

Messaggioda Foto Utentehuyol » 18 set 2016, 15:00

Sono "sottigliezze della scanf(). In linea di principio non usare mai il "\n" in una scanf().

certo....ragionandoci...in effetti, non c'è nessun motivo di usare "\n" in scanf().....l'andare a capo, razionalmente, può essere utile solo in una funzione di stampa...non certo in una funzione di acquisizione dati!!!
ed infatti ora il programma funziona..
...per quanto riguarda l'EOF (end of file) ancora non l'ho studiato e, conseguentemente, per ora, non me ne voglio interessare...ho imparato che bisogna fare un passo alla volta, questo è l'unico modo di imparare, un argomento alla volta e "sviscerarlo", il tutto accompagnato da tanta pratica.

Ancora non ho scaricato il debugger suggeritomi in un topic precedente....ma dovrò farlo....è un "applicativo" che, secondo me, è molto utile ai fini della programmazione...
un grazie infinito a tutti
per mostrare che ora il programma funziona....
Codice: Seleziona tutto
franco@HP-15-Notebook-PC:~/Scrivania$ ./eta
Quanti anni hai?: 56
Quindi vuol dire che l'anno prossimo avrai 57 anni
franco@HP-15-Notebook-PC:~/Scrivania$
Avatar utente
Foto Utentehuyol
120 2 5
Frequentatore
Frequentatore
 
Messaggi: 203
Iscritto il: 30 gen 2011, 19:24

3
voti

[12] Re: C - funzione per incrementare di uno un intero qualsiasi

Messaggioda Foto UtenteTardoFreak » 18 set 2016, 16:39

Vorrei dire la mia: questi programmini non servono a niente e non sono utili per imparare la programmazione.
Suggerisco ad esempio questo tema:
- Programma che date tre variabili int a,b,c con valore assegnato (non serve richiederlo la tastiera, non è questo il punto) faccia emergere il valore numerico più grande e lo sposti in una variabile r.
Es: a=5, b=12, c=9, r=0
Dopo l'esecuzione si deve avere a=5, b=12, c=9, r=12

Questo ha già un senso perché lavori sul controllo di flusso (if). Se lo sviluppi te ne suggerirò un altro molto sfizioso.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[13] Re: C - funzione per incrementare di uno un intero qualsiasi

Messaggioda Foto Utentehuyol » 20 set 2016, 22:56

Vorrei dire la mia: questi programmini non servono a niente e non sono utili per imparare la programmazione.
Suggerisco ad esempio questo tema:
- Programma che date tre variabili int a,b,c con valore assegnato (non serve richiederlo la tastiera, non è questo il punto) faccia emergere il valore numerico più grande e lo sposti in una variabile r.
Es: a=5, b=12, c=9, r=0
Dopo l'esecuzione si deve avere a=5, b=12, c=9, r=12

Questo ha già un senso perché lavori sul controllo di flusso (if). Se lo sviluppi te ne suggerirò un altro molto sfizioso.


ciao.....avrei buttato giù un programmino che su tre variabili intere a, b, c, dovrebbe estrapolare il numero maggiore e assegnarne il contenuto su altra variabile intera r.
Volutamente mi sono limitato a porre i valori delle variabili in modo che, con un sola condizione, si esaurisce il programma....questo perché ho pensato...se il programma mi funziona....potrò sempre, in futuro, implementare le altre condizioni if b>a>c e if c>a>b
Gcc non mi dà errori,,,,però il programma si limita a digitare il testo senza implementare la funzione if....dove ho sbagliato?? :?: O_/

Codice: Seleziona tutto
franco@HP-15-Notebook-PC:~/Scrivania$ ./maxnum
12, 9, 10, il programma invia il maggiore di essi alla variabile int r/nfranco@HP-15-Notebook-PC:~/Scrivania$


Codice: Seleziona tutto
//PROGRAMMA PER ESTRAPOLARE IL NUMERO MAGGIORE TRA TRE NUMERI ED ASSEGNAZIONE DI TALE NUMERO AD UNA VARIABILE DATA

#include <stdio.h>

int main ()
{
int a = 12;          //ASSEGNAZIONE DI VARIABILE a
int b = 9;           //ASSEGNAZIONE DI VARIABILE b
int c = 10;          //ASSEGNAZIONE DI VARIABILE c
int r;               //DICHIARAZIONE DELLA VARIABILE r
int maxnum;          //DICHIARAZIONE DELLA VARIABILE maxnum

printf ("%d, %d, %d, il programma invia il maggiore di essi alla variabile int r/n", a, b, c);

if (a>b>c){//se "a" è maggiore di "b" e maggiore di "c"
maxnum = a;
r = maxnum;
printf ("r = %d/n", maxnum);
          }
return 0;
}
Avatar utente
Foto Utentehuyol
120 2 5
Frequentatore
Frequentatore
 
Messaggi: 203
Iscritto il: 30 gen 2011, 19:24

1
voti

[14] Re: C - funzione per incrementare di uno un intero qualsiasi

Messaggioda Foto Utentebanjoman » 21 set 2016, 1:36

Non puoi scrivere
Codice: Seleziona tutto
if(a>b>c)

ma devi scrivere invece (ad esempio)
Codice: Seleziona tutto
if(a>b && a>c)


Come l'hai scritto tu porta a risultati impredicibili. Il compilatore forse ti darebbe un warning se alzi il warning level (mi sembra sia -Wall)
Se funziona quasi bene, è tutto sbagliato. A.Savatteri/M.Mazza
Avatar utente
Foto Utentebanjoman
12,2k 5 11 12
G.Master EY
G.Master EY
 
Messaggi: 1621
Iscritto il: 19 set 2013, 19:27

0
voti

[15] Re: C - funzione per incrementare di uno un intero qualsiasi

Messaggioda Foto Utentehuyol » 21 set 2016, 1:53

:ok: mi sembra che sia ok!!! bene... adesso provo a far acquisire dal programma tre numeri interi da tastiera, farli scansionare per trovare il maggiore fra di essi e farlo assegnare alla variabile "r"!! :mrgreen: O_/

Codice: Seleziona tutto
franco@HP-15-Notebook-PC:~/Scrivania$ gcc MAXNUM.c -o maxnum
franco@HP-15-Notebook-PC:~/Scrivania$ ./maxnum
12, 9, 10, il programma invia il maggiore di essi alla variabile int r r = 12
franco@HP-15-Notebook-PC:~/Scrivania$


Codice: Seleziona tutto
//PROGRAMMA PER ESTRAPOLARE IL NUMERO MAGGIORE TRA TRE NUMERI ED ASSEGNAZIONE DI TALE NUMERO AD UNA VARIABILE DATA

#include <stdio.h>

int main ()
{
int a = 12;          //ASSEGNAZIONE DI VARIABILE a
int b = 9;           //ASSEGNAZIONE DI VARIABILE b
int c = 10;          //ASSEGNAZIONE DI VARIABILE c
int r;               //DICHIARAZIONE DELLA VARIABILE r
int maxnum;          //DICHIARAZIONE DELLA VARIABILE maxnum

printf ("%d, %d, %d, il programma invia il maggiore di essi alla variabile int r ", a, b, c);

if (a>b && a>c){//se "a" è maggiore di "b" e maggiore di "c"
maxnum = a;
r = maxnum;
printf ("r = %d", maxnum);
          }
return 0;
}
Avatar utente
Foto Utentehuyol
120 2 5
Frequentatore
Frequentatore
 
Messaggi: 203
Iscritto il: 30 gen 2011, 19:24

1
voti

[16] Re: C - funzione per incrementare di uno un intero qualsiasi

Messaggioda Foto UtenteTardoFreak » 21 set 2016, 2:05

Il programma è sbagliato.
Suggerimento: perché non parti confrontando a con b per assegnare il valore massimo a r, e per poi confrontare r con c ed assegnare il massimo ad r? ;-)
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[17] Re: C - funzione per incrementare di uno un intero qualsiasi

Messaggioda Foto Utentehuyol » 22 set 2016, 0:18

dunque...questo programmino acquisisce tre numeri da tastiera, elabora il maggiore tra di essi ed assegna il relativo valore ad una variabile data "r"....fra i tanti errori che, comunque, sicuramente avrà questo programma, di uno di essi mi sono accorto io....non ho messo le descrizioni /* */ O_/
Codice: Seleziona tutto
//PROGRAMMA CHE ACQUISISCE IL MAGGIORE TRA TRE NUMERI E LO ASSEGNA ALLA VARIABILE DATA r
#include <stdio.h>

main ()

{
int a;
int b;
int c;
int r;
int maxnum;
printf ("QUESTO E' UN PROGRAMMA CHE ACQUISISCE TRE NUMERI INTERI a, b, c, E RESTITUISCE IL MAGGIORE TRA DI ESSI ALLA VARIABILE DATA r\n");
printf("digita il numero a: ");
scanf ("%d/n", &a);

printf ("digita il numero b: ");
scanf ("%d/n", &b);

printf ("digita il numero c: ");
scanf ("%d/n", &c);

if (a>b && a>c) {
   maxnum = a;
    r = maxnum;
    printf ("r vale : %d   ", maxnum);
           }
 
   else if (b>a && b>c) {
      maxnum = b;
        r = maxnum;
        printf ("r vale : %d   ", maxnum);
                   }

      else if (c>a && c>b) {
         maxnum = c;
           r = maxnum;
           printf ("r vale : %d   ", maxnum);
                   }
return 0;
}



Codice: Seleziona tutto
franco@HP-15-Notebook-PC:~/Scrivania$ ./trenumeri
QUESTO E' UN PROGRAMMA CHE ACQUISISCE TRE NUMERI INTERI a, b, c, E RESTITUISCE IL MAGGIORE TRA DI ESSI ALLA VARIABILE DATA r
digita il numero a: 4
digita il numero b: 6
digita il numero c: 80
r vale : 80   franco@HP-15-Notebook-PC:~/Scrivania$
Avatar utente
Foto Utentehuyol
120 2 5
Frequentatore
Frequentatore
 
Messaggi: 203
Iscritto il: 30 gen 2011, 19:24

0
voti

[18] Re: C - funzione per incrementare di uno un intero qualsiasi

Messaggioda Foto UtenteMassimoB » 26 nov 2016, 1:01

Giusto per giochicchiare con il selection sort...

Lo stavo scrivendo in previsione del prossimo articolo :D

E' un modo per capire come si muove un algoritmo di ordinamento molto semplice ed intuitivo.

Codice: Seleziona tutto
#include <stdio.h>
#include <stdlib.h>

void stampa(int insieme[], int dim)
    {
    int i;
    printf("\n");
    for (i=0; i<dim; i++)
        printf("elemento[%d]: %d\n", i, insieme[i]);
    }

void selectionSort(int insieme[], int dim)
    {
    int i, j, indMin, x;
    int temp;
   
    printf("array iniziale\n");
    for (x=0; x<dim; x++)
         printf("[%d]", insieme[x]);
    for (i=0; i<dim-1; i++)
        {
        printf("\n\nCiclo (variabile i) [%d]\n\n", i);
        indMin=i;
       
        for (j=i+1; j<dim; j++)
            {
            printf("Ciclo (variabile j) [%d]\n", j);
            printf("Confronto [%d] con [%d] \n", insieme[j], insieme[indMin]);
            if (insieme[j]<insieme[indMin])
                indMin=j;
                printf("ora indMin vale [%d]\n\n", indMin);
               
            }
        temp = insieme[indMin];
        insieme[indMin] = insieme[i];
        insieme[i] = temp;
        printf("array\n");
        for (x=0; x<dim; x++)
         printf("[%d]", insieme[x]);
        }
    }

int main()

{
   int z;
    int insieme[6];
    insieme[0] = 31;
    insieme[1] = 32;
    insieme[2] = 1;
    insieme[3] = 52;
    insieme[4] = 4;
    insieme[5] = 13;
   
    printf("prima\n");
    stampa(insieme, 6);
    printf("\n");
   
    selectionSort(insieme, 6);
    printf("\n");
    printf("\ndopo\n");
    stampa(insieme, 6);
   
    printf("\narray finale\n");
    for (z=0; z<6; z++)
         printf("[%d]", insieme[z]);
   printf("\n");
   system("PAUSE");      
    return 0;
   
MCSA Windows Server 2012 R2
Cisco CCNA R&S - Cisco CCNA Security - Cisco CCNA Cyber Ops
CompTia A+ - CompTia Linux+ - CompTIA Systems Support Specialist CSSS
CompTia Pentest+ LPIC-1 - VCP VMware - Cisco CCNP Enterprise
Avatar utente
Foto UtenteMassimoB
14,2k 6 12 13
Expert free
 
Messaggi: 3163
Iscritto il: 28 ott 2012, 9:56
Località: Milano

Precedente

Torna a PC e informatica

Chi c’è in linea

Visitano il forum: Nessuno e 16 ospiti