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

    [C] Lettura da file

    Mi rendo conto della richiesta un pò troppo pretenziosa dell'altra volta... mi siete comunque stati d'aiuto... sta volta vi chiedo solo una dritta su come fare una cosa in un programma in c:
    devo leggere più righe da un file di testo, ogni riga contiene 2 operandi (numeri interi) e un numero che indica il tipo di operazione da svolgere (tutti separati da uno spazio)...tutti e tre vanno letti e salvati come int all'interno del programma... come devo fare?
    grazie...

  2. #2
    fopen, fscanf, fclose ti dicono niente?
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    com'è che si usano?... scusate la mia ignoranza...

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Eccoti la dritta ...

    per la fopen
    http://www.cplusplus.com/reference/c...dio/fopen.html

    per la fscanf
    http://www.cplusplus.com/reference/c...io/fscanf.html

    e per la fclose
    http://www.cplusplus.com/reference/c...io/fclose.html

    Queste letture colmeranno sicuramente le tue lacune e gli esempi potranno servirti per iniziare a scrivere una iniziale soluzione al tuo problema.

    Una volta scritta, ci risentiamo e ce la mostri se qualcosa non va ...

  5. #5
    grazie oregon...anche se era in inglese...allora questo legge due numeri da un file di testo chiamato prova.txt, li converte in decimale li stampa a seconda dell'operando che si vuole ottenere a gruppi di 4 bit (stampa1) o a gruppi di 16 bit (stampa2)... come faccio a usare su questi bit delle operazioni logiche e aritmetiche

    #include <stdio.h>
    #include <stdlib.h>
    void dec2bin(unsigned int inp, char binstr[32]){
    if(inp<0){
    }else{int i=0;
    printf("\n%u = ",inp);
    for(i=0;i<32;i++){
    if(inp%2==0)
    binstr[i]='0';
    else binstr[i]='1';
    inp=inp/2;}}
    }
    void stampa1(char binstr[32]){
    int i;
    for(i=31;i>=0;i--){
    if ((i==3)||(i==7)||(i==11)||(i==15)||(i==19)||(i==23 )||(i==27))
    printf(" ");
    printf("%c",binstr[i]);
    }}
    void stampa2(char binstr[32]){
    int i;
    for(i=31;i>=0;i--){
    if (i==15)
    printf(" ");
    printf("%c",binstr[i]);
    }}
    int main(){
    int i;
    unsigned int a,b;
    FILE *pfile;
    pfile=fopen("prova.txt","r");
    fscanf (pfile, "%u %u", &a,&b);
    char binstr1[32],binstr2[32];
    dec2bin(a, binstr1);
    stampa1 (binstr1);
    dec2bin(b, binstr2);
    stampa1 (binstr2);
    }

  6. #6
    e se dovessi anche metterci un controllo della saturazione cioè se ho 4 bit il massimo numero è 15 aloora se in una somma arrivo o supero 15 mi mette un flag di errore a 1...

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da Guitar_joker87
    faccio a usare su questi bit delle operazioni logiche e aritmetiche
    Che vuoi dire in pratica?

  8. #8
    intendo and or xor not e +,-... ma potrei farlo con gli operatori unari...forse

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da Guitar_joker87
    intendo and or xor not e +,-... ma potrei farlo con gli operatori unari...forse
    Continui a non essere chiaro ... la richiesta e' troppo generica ....

    Devi fare uno xor tra quali operandi ?

  10. #10
    mi sono spiegato male, e il codice che ho scritto non serve a nulla...
    io ho due operandi interi unsigned e su di loro devo eseguire operazioni di somma aritmetica, and, or e xor. per farlo so che bisogna usare gli operatori unari e binari:
    NOT ~ (unario)
    AND & (binario)
    XOR ^ (binario)
    OR | (binario) (da non confondere con quelli logici &&, ||)

    questi fanno l'operazione specificata bit a bit.
    es:
    4 & 5 = 4 equivale a
    0100 & 0101 = 0100
    ma io devo farlo con numeri decimali rappresentabili su 32 bit ed eseguire le operazioni ogni 4 bit o ogni 16 bit

    op1 2123432 op2 4236226060
    op1 0 0 2 0 6 6 10 8 15 op2 12 7 15 10 14 0 12

    la seconda riga è stata ottenuta portando in binario l'operando della prima riga e il n° binario che risultava viene diviso ogni 4 bit formando 8 operandi da 4 bit... è più chiaro adesso?
    cioè come faccio a fermarmi ogni 4 bit ed eseguire l'operazione solo su quei 4 0 16...?

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