Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [C] carattere di una stringa

    Allora ragazzi, sono sempre io e chiedo sempre perchè ho in vista un esame x l'università

    questo è il codice di un programma che deve restituire le lettere di una stringa..nel senso che se io do "ABCD"lui mi deve restituire
    A,B
    A,C
    A,D
    B,C
    B,D
    C,D

    Il programma deve essere effettuato con la ricorsione e questo funziona in parte perche dopo che mi restituisce i valori con "A" al posto di darmi solo "B" mi restituisce "AB".
    Volevo sapere se è possibile far visualizzare un solo carattere di una stringa!
    ho provato con "printf("%s",&lettere[n]);", ma mi restituisce tutti i caratteri dalla posizione 'n' in poi.
    se al posto di '%s' metto '%c' mi da risultati sbagliati.
    Come posso fare??

    :::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define MAX 15

    void visualizza(char lettere[],char modifica[], int num);
    int n;

    int main ()
    {

    int num;
    char lettere[MAX];
    char modifica[MAX];

    printf("Inserisci le lettere da elaborare.\n");
    scanf("%s", lettere);
    num = strlen(lettere);
    strcpy (modifica, lettere);
    for (n= num-1; n != 0; --n, --num){
    visualizza(lettere, modifica, num);
    }

    printf("\n");
    system("pause");
    return(0);
    }
    void visualizza(char lettere[], char modifica[], int num)
    {
    if(num !=1){
    strcpy(modifica, &lettere[num-2]);
    printf("\n%s , %c",&lettere[n],modifica[0]);
    visualizza(lettere, modifica, num-1);
    }
    }
    :::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::


    GRAZIE IN ANTICIPO
    Ci sono solo 2 giorni a cui non bisogna pensare mai...ieri e....domani!!

    www.kemsite.altervista.org ....C.O.D.2 clan!!

  2. #2
    printf("%c",lettere[i])

    con i l'indice che va da 0 a MAX


    ciao

  3. #3

    Risolto.

    Credo di avere capito ciò che cercavi, io ho risolto il problema in un modo molto più semplice. Guarda se va bene:

    #include <stdio.h>
    #include <stdlib.h>
    #define SIZE 5

    void visualizza(char stringa[]);
    main()
    {
    char stringa[SIZE];


    printf("Inserire la stringa dei caratteri: ");
    scanf("%s", stringa);

    visualizza(stringa);

    printf("\n");
    system("pause");

    }
    void visualizza(char stringa[])
    {
    int i, j;

    for(i = 0; stringa[i] != '\0'; i++) {
    ;
    for(j = (i+1); stringa[j] != '\0'; j++)
    printf("%c,%c\n", stringa[i], stringa[j]);
    }
    }


    Da quello che ho visto nel tuo post visualizza() restituisce lo stesso output. Io ho messo il contattore 'j' ad un valore di 'i+1' ed entrambi terminano quando incontrano il carattere '\0'.
    Fammi sapere se è quello che cercavi.

    Saluti. Matteo

  4. #4

    Re: Risolto.

    Originariamente inviato da redpenguin
    Credo di avere capito ciò che cercavi, io ho risolto il problema in un modo molto più semplice. Guarda se va bene:

    #include <stdio.h>
    #include <stdlib.h>
    #define SIZE 5

    void visualizza(char stringa[]);
    main()
    {
    char stringa[SIZE];


    printf("Inserire la stringa dei caratteri: ");
    scanf("%s", stringa);

    visualizza(stringa);

    printf("\n");
    system("pause");

    }
    void visualizza(char stringa[])
    {
    int i, j;

    for(i = 0; stringa[i] != '\0'; i++) {
    ;
    for(j = (i+1); stringa[j] != '\0'; j++)
    printf("%c,%c\n", stringa[i], stringa[j]);
    }
    }


    Da quello che ho visto nel tuo post visualizza() restituisce lo stesso output. Io ho messo il contattore 'j' ad un valore di 'i+1' ed entrambi terminano quando incontrano il carattere '\0'.
    Fammi sapere se è quello che cercavi.

    Saluti. Matteo
    Ciao...
    Anche io avrei voluto tanto farlo così il problema è che bisogna fare un programma con ricorsione, ossia devo rihiamare la funzione visualizza in se stessa.
    L'errore che mi dava è che mi faceva visualizzare nn solo il carattere in poszione [i] ma anche i successivi.
    e se al posto di %s mettevo %c mi dava dei risultati errati.
    Grazie
    Ci sono solo 2 giorni a cui non bisogna pensare mai...ieri e....domani!!

    www.kemsite.altervista.org ....C.O.D.2 clan!!

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.