Pagina 3 di 3 PrimaPrima 123
Risultati da 21 a 26 di 26

Discussione: Programmare in C++

  1. #21
    coffeecoffeecoffeecoffeec L'avatar di Black Ghost
    Data Registrazione
    Sat Feb 2007
    Località
    クィーン・デキム
    Messaggi
    12,356

    Predefinito

    Allora non ne ho idea.

    stupid sexy greedo butt


  2. #22
    *spallucce* L'avatar di Naked
    Data Registrazione
    Tue Mar 2005
    Località
    Milano | Caltanissetta
    Messaggi
    4,227

    Predefinito

    Puoi usare la funzione fgets, che immagazzina in un buffer (dichiarato in precedenza) tutti i caratteri che legge da stream (fino alla dimensione massima del buffer o fino a fine file). Dopodichè scorri il buffer e vedi quanti \n ci sono. Le righe saranno il numero di '\n' +1.
    Un programma che conta le righe è il seguente:

    Spoiler:
    #include <stdio.h>
    #include <stdlib.h>

    int conta (char * filename)
    {
    int i, cont=0;
    char buffer[100];
    FILE *f=fopen(filename,"r+");
    if(!f)
    return -1;

    while(!feof(f))
    {
    fgets(buffer,100,f);
    for(i=0;buffer[i]!='\0';i++)
    if(buffer[i]=='\n')
    cont++;
    }
    return cont;
    }

    int main()
    {
    char filename[10];
    printf("\nInserisci il nome del file: ");
    scanf("%s",filename);
    printf("Nel file ci sono %d righe.",conta(filename)+1);
    }
    ~Pray, saviour\Dream, Child of Prayer\Forever and ever\Bring us peace~



  3. #23
    Unforeseen Consequences L'avatar di Albyx
    Data Registrazione
    Wed Jan 2009
    Località
    Bologna
    Messaggi
    5,051

    Predefinito

    Grazie mille Naked, ora per&#242; ho bisogno di un altro aiuto.
    Ho fatto questo programma che dovrebbe leggere da un file "dati" (che gli passo come argomento) e da questi dati deve leggere delle righe, fare un operazione e stampare il risultato su un file esterno, che gli passo sempre come argomento:
    La prima riga contiene un operatore (+|-|*|/)
    La seconda riga contiene i due numeri con cui deve fare l'operazione.
    La terza riga un altro operatore.
    La quarta riga altri due numeri.
    ... e cos&#236; via.

    Codice:
    //---------------------------------------------------------------------------
    
    #pragma hdrstop
    #include <stdio.h>
    #include <conio.h>
    #include "funzioni.h"
    
    //---------------------------------------------------------------------------
    
    static float a;
    static float b;
    static float ris;
    static char operatore[3];
    
    FILE *ingresso;
    FILE *uscita;
    
    #pragma argsused
    int main(int argc, char* argv[])
    {
            int fine=0;
            int var=1;
            int ecc=0;
                    while(fine<4){
                    while(var==1){
                            fine++;
                            ingresso=fopen(argv[1], "r");
                            var=fscanf(ingresso,"%s",operatore);
                            if(operatore[0]=='Q'){
                                    return 0;
                            }else{
                                    if(operatore[0]!='+'&&operatore[0]!='-'&&operatore[0]!='*'&&operatore[0]!='/'){
                                            return 0;
                                    }else{
                                            var=0;
                                    }
                            }
                    }
    
                    while(var==0){
                            ecc=fscanf(ingresso, "%f %f",&a,&b);
                            if(ecc==0){
                                    var=0;
                            }else{
                                    if(operatore[0]=='/'&&b==0){
                                            return 0;
                                    }else{
                                            var=1;
                                    }
                            }
                    }
                    fclose(ingresso);
                    switch(operatore[0]){
                            case'+':
                            ris=somma(a,b);
                            break;
                            case'-':
                            ris=differenza(a,b);
                            break;
                            case'*':
                            ris=prodotto(a,b);
                            break;
                            case'/':
                            ris=divisione(a,b);
                            break;
                    }
    
                    uscita=fopen(argv[2],"w");
                    fprintf(uscita, "%f", ris);
                    }
                    fclose(uscita);
    
    
    
            return 0;
    }
    //---------------------------------------------------------------------------
    Il problema &#232; che legge la riga 1, la riga 2, scrive il risultato e poi torna a leggere la riga 1 e la riga 2.
    L'altro problema &#232; che scrive sempre sulla stessa riga.

    Avete idea di come risolvere?

    Scusate la nabbezza, ma ho iniziato a scrivere in C da poco e ho bisogno di molti chiarimenti

  4. #24
    *spallucce* L'avatar di Naked
    Data Registrazione
    Tue Mar 2005
    Località
    Milano | Caltanissetta
    Messaggi
    4,227

    Predefinito

    Perch&#232; dopo aver fatto una prima operazione chiudi il file e lo riapri
    Metti le fopen all'inizio del programma e le fclose alla fine e vedrai che funziona
    ~Pray, saviour\Dream, Child of Prayer\Forever and ever\Bring us peace~



  5. #25
    Unforeseen Consequences L'avatar di Albyx
    Data Registrazione
    Wed Jan 2009
    Località
    Bologna
    Messaggi
    5,051

    Predefinito

    Ti amo

  6. #26
    *spallucce* L'avatar di Naked
    Data Registrazione
    Tue Mar 2005
    Località
    Milano | Caltanissetta
    Messaggi
    4,227

    Predefinito

    "Non sono gay ma posso imparare".
    ~Pray, saviour\Dream, Child of Prayer\Forever and ever\Bring us peace~



Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •