[C] Programma conversioni

  • 16 Risposte
  • 24806 Visite

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline ipocrisia

  • Membro Giovane
  • **
  • 75
  • Sesso: Maschio
    • ipohacks blog
[C] Programma conversioni
« il: 29 Aprile 2011, 21:43 »
conversioni ott1.cpp
Citazione
#include<stdio.h>   //Libreria standard di I/O
#include<stdlib.h>  //Libreria standard per alcune funzioni
#include<string.h>  //Libreria per la gestione delle stringhe
#include "conversioni.h"


int s=0;
char scelta;
        
main(){
       do{system("cls");
          printf("Scegli l'operazione:\na)Svolgi una conversione\nb)Info\n\nScelta: ");
          scanf("%s",&scelta);
          if (scelta=='a'){system("cls");
                           printf("Basi:\n1)Decimale\n2)Binario\n3)Ottale\n4)Esadecimale\n\nScelta: ");
                           scanf("%d",&s);
                           switch (s){
                                  case 1:
                                       decimale();
                                       break;
                                  case 2:
                                      binario();
                                      break;
                                  case 3:
                                      ottale();
                                      break;
                                  case 4:
                                      esadecimale();
                                      break;
                                      }
          printf("\n\nVuoi effettuare un'altra conversione? (s/n): ");
          scanf("%s",&esc);}
          if (scelta=='b'){system("cls");
                           printf("Il programma sviluppato permette di convertire un numero di \nuna qualsiasi base in una qualsiasi base tra decimale, binario, ottale, \nesadecimale.\nIl programma %c stato sviluppato dagli alunni della \n3%cH Ferraioli Marco e Battimelli Nicola.",130,167);
                           printf("\n\nRitornare al men%c? (s/n)",163);
                           scanf("%s",&esc);}
       }while(esc=='s');
       return 0;
}

conversioni.h
Citazione
#include<stdio.h>   //Libreria standard di I/O
#include<stdlib.h>  //Libreria standard per alcune funzioni
#include<string.h>  //Libreria per la gestione delle stringhe
#define MAX 100

int i=0,nu=0,nb[MAX],no[MAX],s2=0,n=0,B[MAX],conta=0,nd=0,k=0,bin[MAX],a=0,j=0,O[MAX],d=0,E1[MAX];
char ne,E[MAX],esc;

int potenza(int x,int k){
    int conta=0,xe=1;
    while(conta<k){xe=xe*x;
                   conta++;}
    return(xe);
    }

void universale_2(){
     k=0;
     nd=0;
     for(i=conta-1;i>=0;i--){n=potenza(8,k);
                             nd=nd+(O*n);
                             k++;}
     return;
     }

void universale(){
     k=0;
     nd=0;
     for(i=conta-1;i>=0;i--){n=potenza(2,k);
                             nd=nd+(B*n);
                             k++;}
     return;
     }

void decimale(){
       printf("\n\nDammi Il Numero In Base Decimale Che Vuoi Convertire: ");
       scanf("%d",&nu);
       printf("\n\nBase Di Conversione:\n1)Binario\n2)Ottale\n3)Esadecimale\n\nScelta: ");
       scanf("%d",&s2);
       switch (s2){
              case 1:
                   i=0;
                   do{ nb=(nu%2);
                       nu=nu/2;
                       i++;}while(nu>=1);
                       i--;
                       printf("\n\nBinario: ");
                       while(i>=0){printf("%d",nb);
                                   i--;}
                   break;
               case 2:
                    printf("\n\nOttale: ");
                    i=0;
                   do{ nb=(nu%8);
                       nu=nu/8;
                       i++;}while(nu>=1);
                       i--;
                       while(i>=0){printf("%d",nb);
                                   i--;}
                    break;
               case 3:
                    printf("\n\nEsadecimale: ");
       do{
          nb=(nu%16);
          nu=nu/16;
          i++;
          }
          while(nu>=1);
          i--;
          while(i>=0){
                  if(nb>=10)
                  printf("%c",nb+ 'A'-10);
                  else
                  printf("%c",nb+'0');
                  i--;}
                    break;
                    }
                 }

void binario(){
     for(i=0;i<100;i++)
     B=0;
     conta=0;
     for(i=0;n!=2;i++){printf("\n\nDammi Il Numero In Base Binaria Che Vuoi Convertire una cifra binaria alla volta (2 per terminare): ");
                      scanf("%d",&n);
                      if(n<2){B=n;
                              conta++;}
                      else{if(n!=2)
                           printf("\nCifra non presente nel sistema di numerazione binario");
                           i--;}}
     n=0;
     printf("\n\nBase Di Conversione:\n1)Decimale\n2)Ottale\n3)Esadecimale\n\nScelta: ");
     scanf("%d",&s2);
     switch (s2){
            case 1:
                 universale();
                
                 printf("\n\nDecimale: %d",nd);
                 break;
            case 2:
                 universale();
                  i=0;
                   do{ nb=(nd%8);
                       nd=nd/8;
                       i++;}while(nd>=1);
                       i--;
                       printf("\n\nOttale: ");
                       while(i>=0){printf("%d",nb);
                                   i--;}
                 break;
            case 3:
                 universale();
                  i=0;
                  do{ nb=(nd%16);
                       nd=nd/16;
                       i++;}while(nd>=1);
                  i--;
                  printf("\n\nEsadecimale: ");
                  while(i>=0){
                              if(nb>=10)
                  printf("%c",nb+ 'A'-10);
                  else
                  printf("%c",nb+'0');
                  i--;}
                 break;
                 }
                }

void ottale (){
     for(i=0;i<100;i++)
     O=0;
     conta=0;
     n=0;
     for(i=0;n!=8;i++){printf("\n\nDammi Il Numero In Base Ottale Che Vuoi Convertire una cifra Ottale alla volta (8 per terminare): ");
                      scanf("%d",&n);
                      if(n<8){O=n;
                              conta++;}
                      else{if(n!=8)
                           printf("\nCifra non presente nel sistema di numerazione ottale");
                           i--;}}
     printf("\n\nBase Di Conversione:\n1)Decimale\n2)Binario\n3)Esadecimale\n\nScelta: ");
     scanf("%d",&s2);
     switch (s2){
            case 1:
            universale_2();
            printf("\n\nDecimale: %d",nd);
                 break;
            case 2:
            universale_2();
                 i=0;
                   do{ nb=(nd%2);
                       nd=nd/2;
                       i++;}while(nd>=1);
                       i--;
                       printf("\n\nBinario: ");
                       while(i>=0){printf("%d",nb);
                                   i--;}
                break;
                case 3:
                universale_2();
                i=0;
                  do{ nb=(nd%16);
                       nd=nd/16;
                       i++;}while(nd>=1);
                  i--;
                  printf("\n\nEsadecimale: ");
                  while(i>=0){
                              if(nb>=10)
                  printf("%c",nb+ 'A'-10);
                  else
                  printf("%c",nb+'0');
                  i--;}
                     break;
                }
            }
void esadecimale(){
      printf("\n\nBase Di Conversione:\n1)Decimale\n2)Binario\n3)Ottale\n\nScelta: ");
      scanf("%d",&s2);
      switch(s2){
                 case 1:
                      printf("\n\nDammi Il Numero In Base Esadecimale Che Vuoi Convertire: ");
                      scanf("%X",&nu);
                      printf("\n\nDecimale: %d",nu);
                      break;
                 case 2:
                      conta=0;
                      for(i=0;ne!='*';i++){printf("\n\nDammi Il Numero In Base Esadecimale Che Vuoi Convertire una cifra alla volta (* per terminare): ");
                                           scanf("%s",&ne);
                                           E=ne;
                                           conta++;}
                                           printf("\n\nBinario: ");
                                           for(i=0;i<conta;i++){
                                           switch(E){
                                                        case '0':
                                                             printf("0000");
                                                             break;
                                                        case '1':
                                                             printf("0001");
                                                             break;
                                                        case '2':
                                                             printf("0010");
                                                             break;
                                                        case '3':
                                                             printf("0011");
                                                             break;
                                                        case '4':
                                                             printf("0100");
                                                             break;
                                                        case '5':
                                                             printf("0101");
                                                             break;
                                                        case '6':
                                                             printf("0110");
                                                             break;
                                                        case '7':
                                                             printf("0111");
                                                             break;
                                                        case '8':
                                                             printf("1000");
                                                             break;
                                                        case '9':
                                                             printf("1001");
                                                             break;
                                                        case 'a':
                                                             printf("1010");
                                                             break;
                                                        case 'b':
                                                             printf("1011");
                                                             break;
                                                        case 'c':
                                                             printf("1100");
                                                             break;
                                                        case 'd':
                                                             printf("1101");
                                                             break;
                                                        case 'e':
                                                             printf("1110");
                                                             break;
                                                        case 'f':
                                                             printf("1111");
                                                             break;
                                                        case 'A':
                                                             printf("1010");
                                                             break;
                                                        case 'B':    
                                                             printf("1011");
                                                             break;
                                                        case 'C':
                                                             printf("1100");
                                                             break;
                                                        case 'D':
                                                             printf("1101");
                                                             break;
                                                        case 'E':
                                                             printf("1110");
                                                             break;
                                                        case 'F':
                                                             printf("1111");
                                                             break;
                                                        }
                                           }
                      break;
                 case 3:
                      printf("\n\nDammi Il Numero In Base Esadecimale Che Vuoi Convertire: ");
                      scanf("%X",&nu);
                      printf("\n\nOttale: %o",nu);
                      break;
                 }
         }

Che ne pensate e un programma che ho fatto l'anno scorso per la scuola qua i link ai sorgenti

Citazione
conversioni ott1.cpp: http://www.itimarconinocera.org/sito/menu/progetti/PNL%20-%20IFS/ccp%20exe/New%20Folder/conversioni%20ott1.cpp

conversioni.h: http://www.itimarconinocera.org/sito/menu/progetti/PNL%20-%20IFS/ccp%20exe/New%20Folder/conversioni.h

link alla spiegazione con incluso link alla presentazione

Citazione
http://www.itimarconinocera.org/sito/menu/progetti/PNL%20-%20IFS/sistema_di_numerazione.html

P.S: Sono Ferraioli Marco XD
Hacker

<iframe width="425" height="349" src="http://www.youtube.com/embed/ISsvTp5Nhys" frameborder="0" allowfullscreen></iframe>

My name is Crascer_Sistem

Offline TomRich

  • Membro Anziano
  • ***
  • 256
  • Sesso: Maschio
Re:[C] Programma conversioni
« Risposta #1 il: 30 Aprile 2011, 12:15 »
ma sei informatico o elettronico? o.o

Offline ipocrisia

  • Membro Giovane
  • **
  • 75
  • Sesso: Maschio
    • ipohacks blog
Re:[C] Programma conversioni
« Risposta #2 il: 30 Aprile 2011, 16:20 »
indirizzo informatica ma faccio anche elettronica a scuola
Hacker

<iframe width="425" height="349" src="http://www.youtube.com/embed/ISsvTp5Nhys" frameborder="0" allowfullscreen></iframe>

My name is Crascer_Sistem

Offline TomRich

  • Membro Anziano
  • ***
  • 256
  • Sesso: Maschio
Re:[C] Programma conversioni
« Risposta #3 il: 30 Aprile 2011, 16:25 »
un po si vede dal programma che hai fatto hihi... vbb per quello ke vi viene insegnato di elettronica u_u tra un po sa piu elettronica un bambino che gli informatici :P
« Ultima modifica: 30 Aprile 2011, 16:29 da TomRich »

Offline ipocrisia

  • Membro Giovane
  • **
  • 75
  • Sesso: Maschio
    • ipohacks blog
Re:[C] Programma conversioni
« Risposta #4 il: 01 Maggio 2011, 08:48 »
un po si vede dal programma che hai fatto hihi... vbb per quello ke vi viene insegnato di elettronica u_u tra un po sa piu elettronica un bambino che gli informatici :P
no dai almeno io che sono anche autodidatta in questo campo xD almeno riesco a costruire un timer a confronto ai miei amici se poi mi volessi basare su quello che mi insegnano a scuola saprei come si misura tensione corrente cosa e una resitenza condensatore diodi transistor fare un partitore di tensione e poi per il digitale le porte and or not e saper costruire una xor nand xnor usado le prime tre cosa e un flip flop set reset e basta cmq da autodidatta su questi libri ho imparato molto





Qualche altro libro da consigliarmi???
Hacker

<iframe width="425" height="349" src="http://www.youtube.com/embed/ISsvTp5Nhys" frameborder="0" allowfullscreen></iframe>

My name is Crascer_Sistem

Offline TomRich

  • Membro Anziano
  • ***
  • 256
  • Sesso: Maschio
Re:[C] Programma conversioni
« Risposta #5 il: 01 Maggio 2011, 11:08 »
secondome se prendi questo manuale ti basta avanza per tt le cose che voui fare a livello amatoriale... nel manuale raccoglie piu materie: matematica, fisica, elettronica, elettrotecnica etc etc. ed è l'unico libro che si puo portare all'esame di stato :D da cui puoi copiare tutto :D
se vuoi quando arrivo a casa ti faccio vedere anche i miei libri di testo della scuola :)


« Ultima modifica: 01 Maggio 2011, 11:10 da TomRich »

Offline ipocrisia

  • Membro Giovane
  • **
  • 75
  • Sesso: Maschio
    • ipohacks blog
Re:[C] Programma conversioni
« Risposta #6 il: 01 Maggio 2011, 13:36 »
secondome se prendi questo manuale ti basta avanza per tt le cose che voui fare a livello amatoriale... nel manuale raccoglie piu materie: matematica, fisica, elettronica, elettrotecnica etc etc. ed è l'unico libro che si puo portare all'esame di stato :D da cui puoi copiare tutto :D
se vuoi quando arrivo a casa ti faccio vedere anche i miei libri di testo della scuola :)




ok fammeli vedere

devo vedere in quale libreria lo posso trovare xD  http://www.manualihoepli.it/index.php?sezione=manuali&tipo=scheda&id=8
« Ultima modifica: 01 Maggio 2011, 13:41 da ipocrisia »
Hacker

<iframe width="425" height="349" src="http://www.youtube.com/embed/ISsvTp5Nhys" frameborder="0" allowfullscreen></iframe>

My name is Crascer_Sistem

Offline TomRich

  • Membro Anziano
  • ***
  • 256
  • Sesso: Maschio
Re:[C] Programma conversioni
« Risposta #7 il: 01 Maggio 2011, 17:46 »
conviene con lo compri sul sito della hoepli che ho visto sta mattina ce lo sconto e te lo fanno pagare 58 euro
http://www.hoepli.it/libro/manuale-di-elettronica-e-telecomunicazioni/9788820334901.asp
visto che supera i 19 euro te fanno anche la spedizione gratuita

Offline ipocrisia

  • Membro Giovane
  • **
  • 75
  • Sesso: Maschio
    • ipohacks blog
Re:[C] Programma conversioni
« Risposta #8 il: 02 Maggio 2011, 22:07 »
conviene con lo compri sul sito della hoepli che ho visto sta mattina ce lo sconto e te lo fanno pagare 58 euro
http://www.hoepli.it/libro/manuale-di-elettronica-e-telecomunicazioni/9788820334901.asp
visto che supera i 19 euro te fanno anche la spedizione gratuita

grazie per l'info
cmq tu che scuola hai fatto di dove sei??
Hacker

<iframe width="425" height="349" src="http://www.youtube.com/embed/ISsvTp5Nhys" frameborder="0" allowfullscreen></iframe>

My name is Crascer_Sistem

Offline TomRich

  • Membro Anziano
  • ***
  • 256
  • Sesso: Maschio
Re:[C] Programma conversioni
« Risposta #9 il: 02 Maggio 2011, 22:14 »
figurati
indirizzo elettrronico e telecomunicazioni
liguria :D

Offline ipocrisia

  • Membro Giovane
  • **
  • 75
  • Sesso: Maschio
    • ipohacks blog
Re:[C] Programma conversioni
« Risposta #10 il: 03 Maggio 2011, 06:39 »
figurati
indirizzo elettrronico e telecomunicazioni
liguria :D


ma ora ti stai laureandoo lavori(cosa fai???)???
Hacker

<iframe width="425" height="349" src="http://www.youtube.com/embed/ISsvTp5Nhys" frameborder="0" allowfullscreen></iframe>

My name is Crascer_Sistem

Offline TomRich

  • Membro Anziano
  • ***
  • 256
  • Sesso: Maschio
Re:[C] Programma conversioni
« Risposta #11 il: 03 Maggio 2011, 09:13 »
lavoro curiosone :D

Offline ipocrisia

  • Membro Giovane
  • **
  • 75
  • Sesso: Maschio
    • ipohacks blog
Re:[C] Programma conversioni
« Risposta #12 il: 03 Maggio 2011, 10:15 »
Hacker

<iframe width="425" height="349" src="http://www.youtube.com/embed/ISsvTp5Nhys" frameborder="0" allowfullscreen></iframe>

My name is Crascer_Sistem

Offline TomRich

  • Membro Anziano
  • ***
  • 256
  • Sesso: Maschio
Re:[C] Programma conversioni
« Risposta #13 il: 03 Maggio 2011, 10:56 »
ma tu hai solo 17 anni come scritto nel tuo profilo? u_u

Offline JackTheVendicator

  • Esperto
  • ****
  • 1913
  • Sesso: Maschio
  • I'm watching you.
    • Firmware modificati
Re:[C] Programma conversioni
« Risposta #14 il: 03 Maggio 2011, 12:55 »
Io mi son trovato bene con questo http://www.pangloss.it/libro.php?isbn=8879593285&id=12087 (usato ad elettronica all'uni)
Poi ho anche imparare l'elettronica di nuova elettronica in formato digitale :)

Comunque ragazzi, posso dirvi per "esperienza" che non importa da che manuale siete partiti, l'importante e' avere voglia di imparare e un minimo di buon senso (del tipo pensare prima di agire e garantire la sicurezza almeno alle persone se non ai componenti).

@ipocrisia
E' buona norma non inserire il codice delle funzioni negli .h, ma solo i prototipi :)
« Ultima modifica: 03 Maggio 2011, 13:03 da JackTheVendicator »